분산 컴퓨팅 노드 및 스토리지 배포

Red Hat OpenStack Platform 16.1

Red Hat OpenStack Platform 분산 컴퓨팅 노드 기술 배포

초록

heat 스택 분리를 사용하여 엣지 사이트 작동을 위해 DCN(분산 계산 노드) 아키텍처를 사용하여 RHOSP(Red Hat OpenStack Platform)를 배포할 수 있습니다. 각 사이트에는 Image 서비스(glance) 다중 저장소의 자체 Ceph 스토리지 백엔드가 있을 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 용어를 교체하기 위해 최선을 다하고 있습니다. 먼저 마스터(master), 슬레이브(slave), 블랙리스트(blacklist), 화이트리스트(whitelist) 등 네 가지 용어를 교체하고 있습니다. 이러한 변경 작업은 작업 범위가 크므로 향후 여러 릴리스에 걸쳐 점차 구현할 예정입니다. 자세한 내용은 CTO Chris Wright의 메시지를 참조하십시오. :leveloffset: +0

Red Hat 문서에 관한 피드백 제공

문서 개선을 위한 의견을 보내 주십시오. Red Hat이 어떻게 이를 개선하는지 알려주십시오.

DDF(직접 문서 피드백) 기능 사용

특정 문장, 단락 또는 코드 블록에 대한 직접 주석은 피드백 추가 DDF 기능을 사용하십시오.

  1. 다중 페이지 HTML 형식으로 설명서를 봅니다.
  2. 문서 오른쪽 상단에 Feedback (피드백) 버튼이 표시되는지 확인합니다.
  3. 주석 처리하려는 텍스트 부분을 강조 표시합니다.
  4. 피드백 추가를 클릭합니다.
  5. 주석을 사용하여 Add Feedback (피드백 추가) 필드를 작성합니다.
  6. 선택 사항: 설명서 팀이 문제에 대한 자세한 내용을 문의할 수 있도록 이메일 주소를 추가하십시오.
  7. Submit(제출)을 클릭합니다.

1장. DCN 이해

DCN(분산 계산 노드) 아키텍처는 엣지 사용 사례를 위한 것으로, 공통 중앙 집중식 컨트롤 플레인을 공유하면서 원격 컴퓨팅 및 스토리지 노드를 원격으로 배포할 수 있습니다. DCN 아키텍처를 사용하면 고성능을 위해 작업 부하를 전략적으로 배치할 수 있습니다.

중앙 위치는 모든 역할로 구성될 수 있지만 최소한 세 개의 컨트롤러가 필요합니다. 계산 노드는 에지 및 중앙 위치에 있을 수 있습니다.

DCN 아키텍처는 허브 및 스포크 라우팅 네트워크 배포입니다. DCN은 Red Hat OpenStack Platform director와의 라우팅된 프로비저닝 및 컨트롤 플레인 네트워킹을 위한 스파인 및 리프 배포와 유사합니다.

  • 허브는 코어 라우터와 데이터센터 게이트웨이(DC-GW)가 있는 중앙 사이트입니다.
  • 스포크는 원격 에지(원격 에지)입니다.

에지 위치에는 컨트롤러가 없으므로 Red Hat OpenStack Platform의 기존 배포와 아키텍처적으로 다릅니다.

  • 컨트롤 플레인 서비스는 중앙 위치에서 원격으로 실행됩니다.
  • Pacemaker가 설치되어 있지 않습니다.
  • Block Storage 서비스(cinder)는 활성/활성 모드로 실행됩니다.
  • etcd는 DLM(Distributed Lock Manager)으로 배포됩니다.
상위 레벨 dcn

1.1. 분산 컴퓨팅 노드 아키텍처에 필요한 소프트웨어

다음 표는 Red Hat OpenStack Platform을 DCN(Distributed Compute Node) 아키텍처에 배포하는 데 필요한 소프트웨어 및 최소 버전을 보여줍니다.

플랫폼버전선택 사항

Red Hat Enterprise Linux

8

없음

Red Hat OpenStack Platform

16.1

없음

Red Hat Ceph Storage

4

있음

1.2. 다중 스택 설계

DCN 설계와 함께 RHOSP(Red Hat OpenStack Platform)를 배포할 때 Red Hat director의 기능을 사용하여 여러 스택 배포 및 관리를 위해 각 사이트를 별도의 스택으로 배포합니다.

배포가 Red Hat OpenStack Platform 13에서 업그레이드되지 않는 한 DCN 아키텍처를 단일 스택으로 관리하는 것은 지원되지 않습니다. 기존 스택을 분할하는 지원되는 방법은 없지만 기존 배포에 스택을 추가할 수 있습니다. 자세한 내용은 A.3절. “다중 스택 배포로 마이그레이션”의 내용을 참조하십시오.

중앙 위치는 기존 RHOSP 스택 배포이지만 중앙 스택을 사용하여 컴퓨팅 노드 또는 Red Hat Ceph 스토리지를 배포할 필요는 없습니다.

DCN을 사용하면 각 위치를 별도의 가용성 영역(AZ)으로 배포합니다.

1.3. DCN 스토리지

스토리지 없이 또는 하이퍼컨버지드 노드에서 Ceph를 사용하여 각 에지 사이트를 배포할 수 있습니다. 배포하는 스토리지는 배포하는 사이트 전용입니다.

DCN 아키텍처에서는 Glance 다중 저장소를 사용합니다. 스토리지 없이 배포된 에지 사이트의 경우 Compute 서비스(nova) 캐시에 이미지를 캐시하고 저장할 수 있도록 추가 툴링을 사용할 수 있습니다. nova에서 Glance 이미지를 캐싱하면 WAN 링크에서 이미지를 다운로드하는 프로세스를 방지하여 인스턴스에 대한 부팅 시간이 단축됩니다. 자세한 내용은 9장. nova에 Glance 이미지 준비의 내용을 참조하십시오.

1.4. DCN 에지

Distributed Compute Node 아키텍처를 사용하면 엣지 위치를 관리하는 제어 노드와 함께 중앙 위치가 배포됩니다. 그런 다음 엣지 위치를 배포할 때 컴퓨팅 노드만 배포하여 Red Hat OpenStack Platform의 기존 배포와 아키텍처적으로 다른 에지 사이트를 구축할 수 있습니다. 엣지 위치:

  • 컨트롤 플레인 서비스는 중앙 위치에서 원격으로 실행됩니다.
  • Pacemaker는 DCN 사이트에서 실행되지 않습니다.
  • Block Storage 서비스(cinder)는 활성/활성 모드로 실행됩니다.
  • etcd는 DLM(Distributed Lock Manager)으로 배포됩니다.

2장. DCN(Distributed Compute Node) 배포 계획

DCN 아키텍처를 계획하는 경우 필요한 기술이 사용 가능하고 지원되는지 확인합니다.

2.1. DCN 아키텍처의 스토리지 고려 사항

현재 DCN 아키텍처에서는 다음 기능이 지원되지 않습니다.

  • Red Hat OpenStack Platform 13에서 16으로 분산된 계산 노드 아키텍처의 FFU(빠른 전달 업데이트)입니다.
  • 에지 사이트에 있는 비하이퍼컨버지드 스토리지 노드.
  • 에지 사이트 간에 볼륨 스냅샷 복사. 볼륨에서 이미지를 만들고 glance를 사용하여 이미지를 복사하여 이 문제를 해결할 수 있습니다. 이미지가 복사되면 해당 이미지에서 볼륨을 만들 수 있습니다.
  • 사이트 간 볼륨 마이그레이션 또는 다시 입력.
  • 에지 의 Ceph Rados Gateway(RGW).
  • 에지 상태의 CephFS.
  • 에지 사이트의 HA(고가용성) 인스턴스.
  • 에지 사이트 또는 중앙 위치에서 에지 사이트 간 실시간 마이그레이션. 사이트 경계 내에서 인스턴스를 실시간 마이그레이션할 수 있습니다.
  • 사이트 간 RBD 미러링.

또한 다음을 고려해야 합니다.

  • 에지 사이트에 복사하기 전에 이미지를 중앙 위치에 업로드해야 합니다. 각 이미지의 사본은 중앙 위치에 있는 Image 서비스(glance)에 있어야 합니다.
  • 에지 사이트에 인스턴스를 만들기 전에 해당 에지 사이트에 이미지의 로컬 복사본이 있어야 합니다.
  • 이미지, 계산 및 블록 스토리지 서비스에 RBD 스토리지 드라이버를 사용해야 합니다.
  • 각 사이트에 대해 고유한 가용성 영역을 할당하고 NovaComputeAvailabilityZone 및 CinderStorageAvailabilityZone 매개변수에 동일한 값을 사용합니다.

2.2. DCN 아키텍처 네트워킹 고려 사항

현재 DCN 아키텍처에서는 다음 기능이 지원되지 않습니다.

  • Octavia
  • DPDK 노드의 DHCP
  • TC Flower 하드웨어 오프로드를 위한 Conntrack

ML2/OVN 메커니즘 드라이버는 DCN에서 기술 프리뷰로 제공되므로 이러한 솔루션을 함께 사용하는 것은 Red Hat에서 완전히 지원되지 않습니다. 이 기능은 테스트를 위해 DCN에서만 사용해야 하며 프로덕션 환경에 배포하면 안 됩니다. 기술 프리뷰 기능에 대한 자세한 내용은 지원 범위를 참조하십시오.

참고

ML2/OVN 메커니즘 드라이버는 DCN 환경 외부에서 완전히 지원됩니다.

ML2/OVS에서 지원되는 네트워킹 기술은 다음과 같습니다.

  • DPDK 노드의 DHCP가 없는 DPDK
  • SR-IOV
  • Conntrack없이 TC Flower 하드웨어 오프로드
  • 에지에서 네트워크 노드를 사용하는 Neutron 가용성 영역(AZ)과 사이트당 AZ
  • 라우팅된 공급자 네트워크

또한 다음을 고려해야 합니다.

  • 네트워크 대기 시간: 허용 가능한 성능을 유지하기 위해 예상되는 동시 API 작업 수와 함께 RTT( 왕복 시간)로 측정한 대로 대기 시간을 분산합니다. 최대 TCP/IP 처리량은 RTT에 반비교합니다. 커널 TCP 매개 변수를 튜닝하여 대역폭이 높은 연결로 일부 문제를 완화할 수 있습니다. 사이트 간 통신이 100ms를 초과하는 경우 Red Hat 지원에 문의하십시오.
  • 네트워크 중단: 에지 사이트에서 중앙 사이트에 대한 연결이 일시적으로 손실되면 중단 기간 동안 영향을 받은 에지 사이트에서 OpenStack 컨트롤 플레인 API 또는 CLI 작업을 실행할 수 없습니다. 예를 들어 에지 사이트의 Compute 노드는 인스턴스의 스냅샷을 생성하거나 인증 토큰을 발행하거나 이미지를 삭제할 수 없습니다. 이러한 가동 중단 동안 일반적인 OpenStack 컨트롤 플레인 API 및 CLI 작업은 계속 작동하며, 작동 중인 연결이 있는 다른 에지 사이트를 계속 제공할 수 있습니다. 이미지 유형: DCN 아키텍처를 Ceph 스토리지와 함께 배포할 때 원시 이미지를 사용해야 합니다.
  • 이미지 크기 조정:

    • Overcloud 노드 이미지 - 중앙 Undercloud 노드에서 Overcloud 노드 이미지를 다운로드합니다. 이러한 이미지는 중앙 사이트에서 에지 사이트로 필요한 모든 네트워크에서 프로비저닝 중 에지 사이트로 전송되는 잠재적으로 큰 파일입니다.
    • 인스턴스 이미지: 에지에 블록 스토리지가 없으면 이미지 서비스 이미지가 처음 사용하는 동안 WAN을 통과합니다. 이미지는 후속 용도를 위해 대상 에지 노드에 로컬로 복사 또는 캐시됩니다. Glance 이미지의 크기 제한은 없습니다. 전송 시간은 사용 가능한 대역폭 및 네트워크 대기 시간에 따라 다릅니다.

      에지에 블록 스토리지가 있으면 에지에서 더 빠른 부팅 시간을 위해 WAN을 통해 이미지가 비동기적으로 복사됩니다.

  • 공급자 네트워크: 이는 DCN 배포에 권장되는 네트워킹 접근 방식입니다. 원격 사이트에서 프로바이더 네트워크를 사용하는 경우 네트워킹 서비스(neutron)에서 사용 가능한 네트워크를 연결할 수 있는 위치를 확인하거나 제한을 배치하지 않도록 고려해야 합니다. 예를 들어 에지 사이트 A에서만 공급자 네트워크를 사용하는 경우 에지 사이트 B의 공급자 네트워크에 연결하지 않아야 합니다. 이는 컴퓨팅 노드에 바인딩할 때 공급자 네트워크에 유효성 검사 검사가 없기 때문입니다.
  • 사이트별 네트워크: 특정 사이트와 관련된 네트워크를 사용하는 경우 DCN 네트워킹의 제한 사항이 발생합니다. 컴퓨팅 노드를 사용하여 중앙 집중식 neutron 컨트롤러를 배포하면 Neutron에 특정 컴퓨팅 노드를 원격 노드로 식별하는 트리거가 없습니다. 결과적으로 계산 노드는 다른 컴퓨팅 노드 목록을 수신하고 자동으로 서로 간에 터널을 형성합니다. 터널은 에지에서 중앙 사이트까지 에지에서 에지로 구성됩니다. VXLAN 또는 Geneve를 사용하는 경우 모든 사이트의 모든 컴퓨팅 노드는 로컬 또는 원격 여부에 관계없이 다른 모든 컴퓨팅 노드 및 컨트롤러 노드와 함께 터널을 형성합니다. 어디에서든 동일한 neutron 네트워크를 사용하고 있다면 문제가 되지 않습니다. VLAN을 사용할 때 neutron에서는 모든 컴퓨팅 노드에 동일한 브리지 매핑이 있고 모든 VLAN을 모든 사이트에서 사용할 수 있다고 예상합니다.
  • 추가 사이트: 중앙 사이트에서 추가 원격 사이트로 확장해야 하는 경우 Red Hat OpenStack Platform director에서 openstack CLI를 사용하여 새 네트워크 세그먼트 및 서브넷을 추가할 수 있습니다.
  • 에지 서버가 사전 프로비저닝되지 않은 경우 인트로스펙션 및 라우팅된 세그먼트에서 프로비저닝을 위해 DHCP 릴레이를 구성해야 합니다.
  • 클라우드에 또는 각 에지 사이트를 허브에 연결하는 네트워킹 인프라 내에서 라우팅을 구성해야 합니다. 각 사이트별로 고유한 각 Red Hat OpenStack Platform 클러스터 네트워크(외부, 내부 API 등)에 대해 L3 서브넷을 할당하는 네트워킹 설계를 구현해야 합니다.

2.3. 엣지의 스토리지 토폴로지 및 역할

분산 컴퓨팅 노드 아키텍처를 사용하여 Red Hat OpenStack 플랫폼을 배포할 때는 에지에서 스토리지가 필요한지 여부를 결정해야 합니다. 스토리지 및 성능 요구 사항에 따라 다음 세 가지 구성 중 하나를 사용하여 각 사이트를 배포할 수 있습니다. 모든 에지 사이트에 동일한 구성이 있어야 하는 것은 아닙니다.

블록 스토리지가 에지에서 배포되지 않는 경우 6.1절. “스토리지 없이 에지 노드 배포” 의 섹션을 따라야 합니다. 에지 사이트에 블록 스토리지가 없는 경우:

  • Swift를 Glance 백엔드로 사용
  • 에지의 계산 노드는 이미지만 캐시할 수 있습니다.
  • Cinder와 같은 볼륨 서비스는 에지 사이트에서 사용할 수 없습니다.

어디에나 에지에서 스토리지를 배포하려는 경우 블록 스토리지를 중앙 위치에 배포해야 합니다. 5.2절. “스토리지를 사용하여 중앙 사이트 배포” 의 섹션을 따르십시오. 에지 사이트에 블록 스토리지가 있는 경우:

  • Ceph RBD는 Glance 백엔드로 사용됩니다.
  • 이미지는 에지 사이트에 저장할 수 있습니다.
  • Cinder 볼륨 서비스는 Ceph RBD 드라이버를 통해 사용할 수 있습니다.

배포에 필요한 역할은 에지에서 블록 스토리지를 배포하는지 여부에 따라 달라집니다.

  • 에지에는 블록 스토리지가 필요하지 않습니다.

    Compute
    블록 스토리지 없이 에지 위치를 배포하는 경우 을 사용하려면 기존 계산 역할을 사용해야 합니다.
  • 블록 스토리지는 에지에 필요합니다:

    DistributedComputeHCI

    이 역할에는 다음이 포함됩니다.

    • 기본 컴퓨팅 서비스
    • Block Storage(cinder) 볼륨 서비스
    • Ceph Mon
    • Ceph Mgr
    • Ceph OSD
    • GlanceApiEdge
    • etcd

      이 역할을 사용하면 에지에서 하이퍼컨버지드 배포를 활성화합니다. DistributedComputeHCI 역할을 사용하는 경우 정확히 세 개의 노드를 사용해야 합니다.

    DistributedComputeHCIScaleOut
    이 역할에는 에지에 더 많은 노드가 추가될 때 컴퓨팅 리소스를 사용하여 스토리지 용량을 확장할 수 있는 Ceph OSD 서비스가 포함됩니다. 이 역할에는 에지 사이트의 GlanceAPI Edge 노드로 이미지 다운로드 요청을 리디렉션하는 HAproxy Edge 서비스도 포함됩니다.
    DistributedComputeScaleOut
    스토리지 없이 에지에서 컴퓨팅 리소스를 확장하려면 DistributedComputeScaleOut 역할을 사용할 수 있습니다.

3장. 언더클라우드에서 라우팅된 스파인-리프 구성

이 섹션에서는 구성 가능한 네트워크를 사용하여 라우팅된 스파인-리프를 수용하도록 언더클라우드를 구성하는 방법에 대한 사용 사례에 대해 설명합니다.

3.1. 스파인 리프링 프로비저닝 네트워크 구성

스파인 사이클 인프라에 대한 프로비저닝 네트워크를 구성하려면 undercloud.conf 파일을 편집하고 다음 절차에 포함된 관련 매개변수를 설정합니다.

절차

  1. stack 사용자로 언더클라우드에 로그인합니다.
  2. undercloud.conf 파일이 없는 경우 샘플 템플릿 파일을 복사합니다.

    [stack@director ~]$ cp /usr/share/python-tripleoclient/undercloud.conf.sample ~/undercloud.conf
  3. undercloud.conf 파일을 편집합니다.
  4. [DEFAULT] 섹션에서 다음 값을 설정합니다.

    1. fat 0에서 local_ip 를 언더클라우드 IP로 설정합니다.

      local_ip = 192.168.10.1/24
    2. undercloud_public_host 를 언더클라우드의 외부 IP 주소로 설정합니다.

      undercloud_public_host = 10.1.1.1
    3. undercloud_admin_host 를 Undercloud의 관리 IP 주소로 설정합니다. 이 IP 주소는 일반적으로 gra0에 있습니다.

      undercloud_admin_host = 192.168.10.2
    4. local_interface 를 로컬 네트워크의 브리지로 설정합니다.

      local_interface = eth1
    5. enable_routed_networkstrue로 설정합니다.

      enable_routed_networks = true
    6. subnets 매개 변수를 사용하여 서브넷 목록을 정의합니다. 라우팅된 스파인 및 리프린트의 각 L2 세그먼트에 대해 하나의 서브넷을 정의합니다.

      subnets = leaf0,leaf1,leaf2
    7. local_subnet 매개변수를 사용하여 언더클라우드에 로컬로 실제 L2 세그먼트와 연결된 서브넷을 지정합니다.

      local_subnet = leaf0
    8. undercloud_nameservers 의 값을 설정합니다.

      undercloud_nameservers = 10.11.5.19,10.11.5.20
      작은 정보

      /etc/resolv.conf를 확인하여 언더클라우드 이름 서버에 사용되는 DNS 서버의 현재 IP 주소를 찾을 수 있습니다.

  5. subnets 매개변수에 정의된 각 서브넷의 새 섹션을 생성합니다.

    [leaf0]
    cidr = 192.168.10.0/24
    dhcp_start = 192.168.10.10
    dhcp_end = 192.168.10.90
    inspection_iprange = 192.168.10.100,192.168.10.190
    gateway = 192.168.10.1
    masquerade = False
    
    [leaf1]
    cidr = 192.168.11.0/24
    dhcp_start = 192.168.11.10
    dhcp_end = 192.168.11.90
    inspection_iprange = 192.168.11.100,192.168.11.190
    gateway = 192.168.11.1
    masquerade = False
    
    [leaf2]
    cidr = 192.168.12.0/24
    dhcp_start = 192.168.12.10
    dhcp_end = 192.168.12.90
    inspection_iprange = 192.168.12.100,192.168.12.190
    gateway = 192.168.12.1
    masquerade = False
  6. undercloud.conf 파일을 저장합니다.
  7. 언더클라우드 설치 명령을 실행합니다.

    [stack@director ~]$ openstack undercloud install

이 구성은 provisioning 네트워크 또는 컨트롤 플레인에 세 개의 서브넷을 생성합니다. 오버클라우드는 각 네트워크를 사용하여 각각의 환경에 맞게 시스템을 프로비저닝합니다.

DHCP 요청을 언더클라우드에 올바르게 릴레이하려면 DHCP 릴레이를 구성해야 할 수 있습니다.

3.2. DHCP 릴레이 구성

요청을 전달할 원격 네트워크 세그먼트에 연결된 스위치, 라우터 또는 서버에서 DHCP 릴레이 서비스를 실행합니다.

참고

언더클라우드에서 DHCP 릴레이 서비스를 실행하지 마십시오.

언더클라우드는 provisioning 네트워크에서 두 개의 DHCP 서버를 사용합니다.

  • 인트로스펙션 DHCP 서버입니다.
  • 프로비저닝 DHCP 서버.

언더클라우드의 DHCP 서버에 DHCP 요청을 전달하도록 DHCP 릴레이를 구성해야 합니다.

DHCP 요청을 지원하는 장치와 함께 UDP 브로드캐스트를 사용하여 언더클라우드 프로비저닝 네트워크가 연결된 L2 네트워크 세그먼트로 릴레이할 수 있습니다. 또는 DHCP 요청을 특정 IP 주소로 릴레이하는 UDP 유니캐스트를 사용할 수 있습니다.

참고

특정 장치 유형에서 DHCP 릴레이 구성은 이 문서의 범위를 벗어납니다. 참고로 이 문서에서는 ISC DHCP 소프트웨어의 구현을 사용하여 DHCP 릴레이 구성 예를 제공합니다. 자세한 내용은 매뉴얼 페이지 dhcrelay(8)를 참조하십시오.

중요

DHCP 옵션 79는 일부 릴레이, 특히 DHCPv6 주소를 제공하는 릴레이와 원래 MAC 주소를 통과하지 않는 릴레이에 필요합니다. 자세한 내용은 RFC6939 를 참조하십시오.

브로드캐스트 DHCP 릴레이

이 메서드는 UDP 브로드캐스트 트래픽을 사용하여 DHCP 서버 또는 서버가 있는 L2 네트워크 세그먼트로 DHCP 요청을 릴레이합니다. 네트워크 세그먼트의 모든 장치는 브로드캐스트 트래픽을 수신합니다. UDP 브로드캐스트를 사용하는 경우 언더클라우드의 두 DHCP 서버는 모두 릴레이된 DHCP 요청을 수신합니다. 구현에 따라 인터페이스 또는 IP 네트워크 주소를 지정하여 이를 구성할 수 있습니다.

인터페이스
DHCP 요청이 릴레이되는 L2 네트워크 세그먼트에 연결된 인터페이스를 지정합니다.
IP 네트워크 주소
DHCP 요청이 릴레이되는 IP 네트워크의 네트워크 주소를 지정합니다.

유니캐스트 DHCP 릴레이

이 메서드는 UDP 유니캐스트 트래픽을 사용하여 DHCP 요청을 특정 DHCP 서버로 중계합니다. UDP 유니캐스트를 사용하는 경우 DHCP 릴레이를 제공하여 DHCP 요청을 언더클라우드의 인트로스펙션에 사용되는 인터페이스에 할당된 IP 주소 및 OpenStack Networking(neutron) 서비스에서 생성하는 네트워크 네임스페이스의 IP 주소 모두에 릴레이하도록 DHCP 릴레이를 제공하는 장치를 구성해야 합니다 .

세부 검사에 사용되는 인터페이스는 undercloud.conf 파일에서 inspection_interface 로 정의된 인터페이스입니다. 이 매개변수를 설정하지 않은 경우 언더클라우드의 기본 인터페이스는 br-ctlplane 입니다.

참고

세부 검사를 위해 br-ctlplane 인터페이스를 사용하는 것이 일반적입니다. undercloud.conf 파일에서 local_ip 로 정의한 IP 주소는 br-ctlplane 인터페이스에 있습니다.

Neutron DHCP 네임스페이스에 할당된 IP 주소는 undercloud.conf 파일의 local_subnet 에 대해 구성하는 IP 범위에서 사용할 수 있는 첫 번째 주소입니다. IP 범위의 첫 번째 주소는 구성에서 dhcp_start 로 정의하는 주소입니다. 예를 들어 다음 구성을 사용하는 경우 192.168.10.10 은 IP 주소입니다.

[DEFAULT]
local_subnet = leaf0
subnets = leaf0,leaf1,leaf2

[leaf0]
cidr = 192.168.10.0/24
dhcp_start = 192.168.10.10
dhcp_end = 192.168.10.90
inspection_iprange = 192.168.10.100,192.168.10.190
gateway = 192.168.10.1
masquerade = False
주의

DHCP 네임스페이스의 IP 주소가 자동으로 할당됩니다. 대부분의 경우 이 주소는 IP 범위의 첫 번째 주소입니다. 이 경우 언더클라우드에서 다음 명령을 실행합니다.

$ openstack port list --device-owner network:dhcp -c "Fixed IP Addresses"
+----------------------------------------------------------------------------+
| Fixed IP Addresses                                                         |
+----------------------------------------------------------------------------+
| ip_address='192.168.10.10', subnet_id='7526fbe3-f52a-4b39-a828-ec59f4ed12b2' |
+----------------------------------------------------------------------------+
$ openstack subnet show 7526fbe3-f52a-4b39-a828-ec59f4ed12b2 -c name
+-------+--------+
| Field | Value  |
+-------+--------+
| name  | leaf0  |
+-------+--------+

dhcrelay 구성의 예

다음 예제에서 dhcp 패키지의 dhcrelay 명령은 다음 구성을 사용합니다.

  • 수신 DHCP 요청을 릴레이할 인터페이스: eth1,eth2, eth3.
  • 네트워크 세그먼트의 Undercloud DHCP 서버를 인터페이스로 연결합니다. eth0.
  • 인트로스펙션에 사용되는 DHCP 서버가 IP 주소에서 수신 대기 중입니다. 192.168.10.1.
  • 프로비저닝에 사용되는 DHCP 서버는 IP 주소 192.168.10.10 에서 수신 대기 중입니다.

그러면 다음과 같은 dhc relay 명령이 생성됩니다.

  • dhcrelay 버전 4.2.x:

    $ sudo dhcrelay -d --no-pid 192.168.10.10 192.168.10.1 \
      -i eth0 -i eth1 -i eth2 -i eth3
  • dhcrelay 버전 4.3.x 이상:

    $ sudo dhcrelay -d --no-pid 192.168.10.10 192.168.10.1 \
      -iu eth0 -id eth1 -id eth2 -id eth3

Cisco IOS 라우팅 스위치 구성의 예

이 예에서는 다음 Cisco IOS 구성을 사용하여 다음 작업을 수행합니다.

  • provisioning 네트워크에 사용할 VLAN을 구성합니다.
  • IP 주소 를 추가합니다.
  • IP 주소에서 수신 대기하는 인트로스펙션 DHCP 서버로 UDP 및 BOOTP 요청을 전달합니다. 192.168.10.1.
  • UDP 및 BOOTP 요청을 IP 주소 192.168.10.10 에서 수신 대기하는 프로비저닝 DHCP 서버로 전달합니다.
interface vlan 2
ip address 192.168.24.254 255.255.255.0
ip helper-address 192.168.10.1
ip helper-address 192.168.10.10
!

이제 프로비저닝 네트워크를 설정했으므로 나머지 오버클라우드 리프 네트워크를 설정할 수 있습니다.

3.3. 리프 네트워크에 대한 플레이버 생성 및 태그 노드 생성

각 리프 네트워크의 각 역할에는 노드를 해당 리프에 태그할 수 있도록 플레이버 및 역할 할당이 필요합니다. 각 플레이버를 생성하고 역할에 할당하려면 다음 단계를 완료합니다.

절차

  1. stackrc 파일을 소싱합니다.

    [stack@director ~]$ source ~/stackrc
  2. 각 사용자 정의 역할에 대한 플레이버를 만듭니다.

    $ ROLES="control compute_leaf0 compute_leaf1 compute_leaf2 ceph-storage_leaf0 ceph-storage_leaf1 ceph-storage_leaf2"
    $ for ROLE in $ROLES; do openstack flavor create --id auto --ram <ram_size_mb> --disk <disk_size_gb> --vcpus <no_vcpus> $ROLE ; done
    $ for ROLE in $ROLES; do openstack flavor set --property "cpu_arch"="x86_64" --property "capabilities:boot_option"="local" --property resources:DISK_GB='0' --property resources:MEMORY_MB='0' --property resources:VCPU='0' $ROLE ; done
    • & lt;ram_size_mb >를 베어 메탈 노드의 RAM(MB)으로 바꿉니다.
    • & lt;disk_size_gb >을 베어 메탈 노드의 디스크 크기(GB)로 바꿉니다.
    • & lt;no_vcpus >를 베어 메탈 노드의 CPU 수로 바꿉니다.
  3. 노드 목록을 검색하여 UUID를 확인합니다.

    (undercloud)$ openstack baremetal node list
  4. 사용자 정의 리소스 클래스를 사용하여 각 베어 메탈 노드를 리프 네트워크 및 역할에 태그합니다.

    (undercloud)$ openstack baremetal node set \
     --resource-class baremetal.LEAF-ROLE <node>

    & lt;node& gt;를 베어 메탈 노드의 ID로 바꿉니다.

    예를 들어 다음 명령을 입력하여 노드에 UUID 58c3d07e-24f2-48a7-bbb6-6843f0e8ee13 을 사용하여 Leaf2의 Compute 역할에 태그를 지정합니다.

    (undercloud)$ openstack baremetal node set \
     --resource-class baremetal.COMPUTE-LEAF2 58c3d07e-24f2-48a7-bbb6-6843f0e8ee13
  5. 각 리프 네트워크 역할 플레이버를 사용자 지정 리소스 클래스와 연결합니다.

    (undercloud)$ openstack flavor set \
     --property resources:CUSTOM_BAREMETAL_LEAF_ROLE=1 \
    <custom_role>

    베어 메탈 프로비저닝 서비스 노드의 리소스 클래스에 해당하는 사용자 정의 리소스 클래스의 이름을 확인하려면 리소스 클래스를 대문자로 변환하고 각 문장 표시를 밑줄로 교체하고 접두사 CUSTOM_.

    참고

    플레이버는 베어 메탈 리소스 클래스의 하나의 인스턴스만 요청할 수 있습니다.

  6. node-info.yaml 파일에서 각 사용자 정의 리프 역할에 사용할 플레이버와 각 사용자 정의 리프 역할에 할당할 노드 수를 지정합니다. 예를 들어 다음 구성은 사용할 플레이버와 사용자 지정 리프 역할 compute_leaf0,compute_leaf1,compute_leaf2,ceph-storage_leaf0, ceph-storage_leaf1 ,ceph-storage_leaf1 에 할당할 노드 수를 지정합니다.

    parameter_defaults:
      OvercloudControllerFlavor: control
      OvercloudComputeLeaf0Flavor: compute_leaf0
      OvercloudComputeLeaf1Flavor: compute_leaf1
      OvercloudComputeLeaf2Flavor: compute_leaf2
      OvercloudCephStorageLeaf0Flavor: ceph-storage_leaf0
      OvercloudCephStorageLeaf1Flavor: ceph-storage_leaf1
      OvercloudCephStorageLeaf2Flavor: ceph-storage_leaf2
      ControllerLeaf0Count: 3
      ComputeLeaf0Count: 3
      ComputeLeaf1Count: 3
      ComputeLeaf2Count: 3
      CephStorageLeaf0Count: 3
      CephStorageLeaf1Count: 3
      CephStorageLeaf2Count: 3

3.4. 베어 메탈 노드 포트를 컨트롤 플레인 네트워크 세그먼트에 매핑

L3 라우팅 네트워크에서 배포를 활성화하려면 베어 메탈 포트에서 physical_network 필드를 구성해야 합니다. 각 베어 메탈 포트는 OpenStack Bare Metal(ironic) 서비스의 베어 메탈 노드와 연결됩니다. 물리적 네트워크 이름은 언더클라우드 구성의 서브넷 옵션에 포함하는 이름입니다.

참고

undercloud.conf 파일에서 local_subnet 으로 지정된 서브넷의 물리적 네트워크 이름은 항상 ctlplane 입니다.

절차

  1. stackrc 파일을 소싱합니다.

    $ source ~/stackrc
  2. 베어 메탈 노드를 확인합니다.

    $ openstack baremetal node list
  3. 베어 메탈 노드가 등록 되거나 manageable 상태인지 확인합니다. 베어 메탈 노드가 이러한 상태 중 하나에 없는 경우 baremetal 포트에서 physical_network 속성을 설정하는 명령이 실패합니다. 모든 노드를 manageable 상태로 설정하려면 다음 명령을 실행합니다.

    $ for node in $(openstack baremetal node list -f value -c Name); do openstack baremetal node manage $node --wait; done
  4. 다음 중 baremetal 노드와 연결된 베어 메탈 포트를 확인합니다.

    $ openstack baremetal port list --node <node-uuid>
  5. 포트의 physical-network 매개 변수를 설정합니다. 아래 예제에서 3개의 서브넷은 leaf0,leaf1, leaf2 )에 정의되어 있습니다. local_subnet은 leaf0 입니다. local_subnet 의 물리적 네트워크는 항상 ctlplane 입니다. leaf0 에 연결된 baremetal 포트는 ctlplane를 사용합니다. 나머지 포트는 다른 리프 이름을 사용합니다.

    $ openstack baremetal port set --physical-network ctlplane <port-uuid>
    $ openstack baremetal port set --physical-network leaf1 <port-uuid>
    $ openstack baremetal port set --physical-network leaf2 <port-uuid>
  6. 오버클라우드를 배포하기 전에 노드를 인트로스펙션합니다. --all-manageable--provide 옵션을 포함하여 노드를 배포에 사용할 수 있도록 설정합니다.

    $ openstack overcloud node introspect --all-manageable --provide

3.5. 스파인-리프 프로비저닝 네트워크에 새 리프 추가

새 물리적 사이트 추가를 포함할 수 있는 네트워크 용량을 늘리는 경우 Red Hat OpenStack Platform 스파인-리프 프로비저닝 네트워크에 새 리프와 해당 서브넷을 추가해야 할 수 있습니다. 오버클라우드에서 리프를 프로비저닝하면 해당 언더클라우드 리프가 사용됩니다.

사전 요구 사항

  • RHOSP 배포에서는 스파인-리프형 네트워크 토폴로지를 사용합니다.

절차

  1. 언더클라우드 호스트에 stack 사용자로 로그인합니다.
  2. 언더클라우드 인증 정보 파일을 가져옵니다.

    $ source ~/stackrc
  3. /home/stack/undercloud.conf 파일에서 다음을 수행합니다.

    1. subnets 매개변수를 찾아서 추가하는 리프에 대한 새 서브넷을 추가합니다.

      서브넷은 라우팅된 스파인 및 리프의 L2 세그먼트를 나타냅니다.

      예제

      이 예에서는 새 리프(leaf3)를 위해 새 서브넷(leaf3)이 추가되었습니다.

      subnets = leaf0,leaf1,leaf2,leaf3
    2. 추가한 서브넷에 대한 섹션을 만듭니다.

      예제

      이 예에서는 새 서브넷(leaf3)에 대해 섹션 [leaf3] 이 추가되었습니다.

      [leaf0]
      cidr = 192.168.10.0/24
      dhcp_start = 192.168.10.10
      dhcp_end = 192.168.10.90
      inspection_iprange = 192.168.10.100,192.168.10.190
      gateway = 192.168.10.1
      masquerade = False
      
      [leaf1]
      cidr = 192.168.11.0/24
      dhcp_start = 192.168.11.10
      dhcp_end = 192.168.11.90
      inspection_iprange = 192.168.11.100,192.168.11.190
      gateway = 192.168.11.1
      masquerade = False
      
      [leaf2]
      cidr = 192.168.12.0/24
      dhcp_start = 192.168.12.10
      dhcp_end = 192.168.12.90
      inspection_iprange = 192.168.12.100,192.168.12.190
      gateway = 192.168.12.1
      masquerade = False
      
      [leaf3]
      cidr = 192.168.13.0/24
      dhcp_start = 192.168.13.10
      dhcp_end = 192.168.13.90
      inspection_iprange = 192.168.13.100,192.168.13.190
      gateway = 192.168.13.1
      masquerade = False
  4. undercloud.conf 파일을 저장합니다.
  5. 언더클라우드를 다시 설치하십시오.

    $ openstack undercloud install

4장. DCN 배포를 위한 오버클라우드 템플릿 준비

4.1. 별도의 heat 스택 사용을 위한 사전 요구 사항

별도의 heat 스택을 사용하여 배포를 생성하기 전에 환경에서 다음 사전 요구 사항을 충족해야 합니다.

  • 작동 중인 Red Hat OpenStack Platform 16 언더클라우드.
  • Ceph Storage 사용자의 경우: Red Hat Ceph Storage 4에 대한 액세스.
  • 중앙 위치: 중앙 컨트롤러 노드 역할을 할 수 있는 노드 3개입니다. 3개의 컨트롤러 노드 모두 동일한 heat 스택에 있어야 합니다. 컨트롤러 노드 또는 컨트롤 플레인 서비스를 별도의 heat 스택에서 분할할 수 없습니다.
  • 에지에서 Ceph 스토리지를 배포하려는 경우 Ceph 스토리지가 중앙 위치에 필요합니다.
  • 추가 DCN 사이트당 3개의 HCI 계산 노드.
  • 모든 노드는 중앙 배포 네트워크에서 사전 프로비저닝하거나 PXE 부팅할 수 있어야 합니다. DHCP 릴레이를 사용하여 DCN에 대한 연결을 활성화할 수 있습니다.
  • 모든 노드는 ironic에서 세부 검사되었습니다.
  • Red Hat은 <role>HostnameFormat 매개변수를 기본값인 %stackname%-<role>-%index%로 두는 것이 좋습니다. %stackname% 접두사를 포함하지 않으면 오버클라우드는 다른 스택의 분산 계산 노드에 동일한 호스트 이름을 사용합니다. 분산 계산 노드에서 %stackname% 접두사를 사용하여 노드를 에지 사이트와 구분합니다. 예를 들어 dcn0 및 dcn 1 이라는 두 개의 에지 사이트를 배포하는 경우 스택 이름 접두사를 사용하면 언더클라우드에서 openstack server list 명령을 실행할 때 dcn0-distributedcompute-0과 dcn1-distributedcompute-0을 구분할 수 있습니다.
  • centralrc 인증 파일을 가져와 중앙 위치에서 및 에지 사이트에서 워크로드를 예약합니다. 에지 사이트에 대해 자동으로 생성되는 인증 파일이 필요하지 않습니다.

4.2. 별도의 heat 스택 배포 예제의 제한 사항

이 문서에서는 Red Hat OpenStack Platform에서 별도의 heat 스택을 사용하는 배포 예를 설명합니다. 이 예제 환경에는 다음과 같은 제한 사항이 있습니다.

  • 스파인/리프형 네트워킹 - 이 가이드의 예제에서는 DCN(분산 계산 노드) 배포에 필요한 라우팅 요구 사항을 설명하지 않습니다.
  • Ironic DHCP 릴레이 - 이 가이드에는 DHCP 릴레이를 사용하여 Ironic을 구성하는 방법이 포함되어 있지 않습니다.

4.3. 별도의 heat 스택 배포 설계

별도의 heat 스택 내에서 배포를 분할하려면 먼저 컨트롤 플레인을 사용하여 단일 오버클라우드를 배포해야 합니다. 그런 다음 DCN(분산 계산 노드) 사이트에 대해 별도의 스택을 생성할 수 있습니다. 다음 예제에서는 다양한 노드 유형의 개별 스택을 보여줍니다.

  • 컨트롤러 노드: central 이라는 별도의 heat 스택은 컨트롤러를 배포합니다. DCN 사이트에 대해 새 heat 스택을 만들 때 중앙 스택의 데이터를 사용하여 생성해야 합니다. 모든 인스턴스 관리 작업에 컨트롤러 노드를 사용할 수 있어야 합니다.
  • DCN 사이트: dcn0,dcn 1 등과 같이 고유하게 이름이 지정된 heat 스택을 구분할 수 있습니다. DHCP 릴레이를 사용하여 프로비저닝 네트워크를 원격 사이트로 확장합니다.
참고

각 스택에 대해 별도의 AZ(가용 영역)를 생성해야 합니다.

참고

스파인/리프형 네트워킹을 사용하는 경우, ceph-ansible이 해당 네트워크를 사용하도록 Ceph를 올바르게 구성하도록 특정 형식을 사용하여 Storage 및 StorageMgmt 네트워크를 정의해야 합니다. StorageStorageMgmt 네트워크를 재정의 값으로 정의하고 값을 작은따옴표로 묶습니다. 다음 예제에서 스토리지 네트워크( public_network라고 함)는 두 개의 서브넷에 걸쳐 있으며 는 쉼표로 구분되며, 작은따옴표로 묶여 있습니다.

CephAnsibleExtraConfig:
  public_network: '172.23.1.0/24,172.23.2.0/24'

4.4. 여러 스택에서 네트워크 리소스 재사용

VIP 및 서브넷과 같은 동일한 네트워크 리소스를 사용하도록 여러 스택을 구성할 수 있습니다. ManageNetworks 설정 또는 external_resource_* 필드를 사용하여 스택 간에 네트워크 리소스를 복제할 수 있습니다.

참고

external_resource_* 필드를 사용하는 경우 ManageNetworks 설정을 사용하지 마십시오.

스택 간에 네트워크를 재사용하지 않는 경우 network_data.yaml 에 정의된 각 네트워크에는 배포된 모든 스택에서 고유한 이름이 있어야 합니다. 예를 들어 스택 간에 네트워크를 공유하려는 경우를 제외하고 internal_api 네트워크 이름은 스택 간에 재사용할 수 없습니다. 네트워크에 InternalApiCompute0internal_ api_compute_0과 같은 다른 이름 및 name_ lower 속성을 지정합니다.

4.5. ManageNetworks를 사용하여 네트워크 리소스 재사용

ManageNetworks 설정을 사용하면 여러 스택에서 동일한 network_data.yaml 파일을 사용할 수 있으며 설정이 모든 네트워크 리소스에 전역적으로 적용됩니다. network_data.yaml 파일은 스택에서 사용하는 네트워크 리소스를 정의합니다.

- name: StorageBackup
  vip: true
  name_lower: storage_backup
  ip_subnet: '172.21.1.0/24'
  allocation_pools: [{'start': '171.21.1.4', 'end': '172.21.1.250'}]
  gateway_ip: '172.21.1.1'

ManageNetworks를 false로 설정하면 노드가 중앙 스택에 이미 생성된 기존 네트워크를 사용합니다.

새 스택이 기존 네트워크 리소스를 관리하지 않도록 다음 시퀀스를 사용합니다.

절차

  1. ManageNetworks: true 를 사용하여 중앙 스택을 배포하거나 설정되지 않은 상태로 둡니다.
  2. ManageNetworks: false 를 사용하여 추가 스택을 배포합니다.

예를 들어 스파인/리프형 배포에 새 리프를 추가하는 경우와 같이 새 네트워크 리소스를 추가하는 경우 중앙 스택을 새 network_data.yaml 로 업데이트해야 합니다. 이는 중앙 스택이 여전히 네트워크 리소스를 소유하고 관리하기 때문입니다. 네트워크 리소스를 중앙 스택에서 사용할 수 있는 후에는 추가 스택을 배포하여 사용할 수 있습니다.

4.6. UUID를 사용하여 네트워크 리소스 재사용

스택 간에 재사용되는 네트워크를 더 많이 제어해야 하는 경우 네트워크, 서브넷, 세그먼트 또는 VIP를 포함하여 network_data.yaml 파일의 리소스에 external_resource_* 필드를 사용할 수 있습니다. 이러한 리소스는 외부에서 관리하는 것으로 표시되며 heat는 생성, 업데이트 또는 삭제 작업을 수행하지 않습니다.

network _data.yaml 파일에서 각 필수 네트워크 정의에 대한 항목을 추가합니다. 그런 다음 리소스를 별도의 스택에 배포할 수 있습니다.

external_resource_network_id: Existing Network UUID
external_resource_subnet_id: Existing Subnet UUID
external_resource_segment_id: Existing Segment UUID
external_resource_vip_id: Existing VIP UUID

이 예제에서는 컨트롤 플레인 스택의 internal_api 네트워크를 별도의 스택에 재사용합니다.

절차

  1. 관련 네트워크 리소스의 UUID를 확인합니다.

    $ openstack network show internal_api -c id -f value
    $ openstack subnet show internal_api_subnet -c id -f value
    $ openstack port show internal_api_virtual_ip -c id -f value
  2. 위 명령의 출력에 표시된 값을 저장하고 별도의 스택의 network _ data.yaml 파일에서 internal_api 네트워크의 네트워크 정의에 추가합니다.

    - name: InternalApi
      external_resource_network_id: 93861871-7814-4dbc-9e6c-7f51496b43af
      external_resource_subnet_id: c85c8670-51c1-4b17-a580-1cfb4344de27
      external_resource_vip_id: 8bb9d96f-72bf-4964-a05c-5d3fed203eb7
      name_lower: internal_api
      vip: true
      ip_subnet: '172.16.2.0/24'
      allocation_pools: [{'start': '172.16.2.4', 'end': '172.16.2.250'}]
      ipv6_subnet: 'fd00:fd00:fd00:2000::/64'
      ipv6_allocation_pools: [{'start': 'fd00:fd00:fd00:2000::10', 'end': 'fd00:fd00:fd00:2000:ffff:ffff:ffff:fffe'}]
      mtu: 1400

4.7. 별도의 heat 스택 관리

이 가이드의 절차는 세 개의 heat 스택, 즉 central,dcn0, dcn 1 에 대한 환경 파일을 구성하는 방법을 보여줍니다. 각 배포 스택의 템플릿을 별도의 디렉터리에 저장하여 각 배포에 대한 정보를 격리된 상태로 유지하는 것이 좋습니다.

절차

  1. 중앙 heat 스택을 정의합니다.

    $ mkdir central
    $ touch central/overrides.yaml
  2. 중앙 heat 스택에서 모든 DCN 사이트의 공통 디렉터리로 데이터를 추출합니다.

    $ mkdir dcn-common
    $ touch dcn-common/overrides.yaml
    $ touch dcn-common/central-export.yaml

    central-export.yaml 파일은 openstack overcloud export 명령으로 나중에 생성됩니다. 이 가이드의 모든 DCN 배포는 이 파일을 사용해야 하므로 dcn-common 디렉터리에 있습니다.

  3. dcn0 사이트를 정의합니다.

    $ mkdir dcn0
    $ touch dcn0/overrides.yaml

더 많은 DCN 사이트를 배포하려면 추가 dcn 디렉토리를 번호로 만듭니다.

참고

touch는 파일 조직의 예를 제공하는 데 사용됩니다. 각 파일에는 성공적인 배포를 위한 적절한 콘텐츠가 포함되어야 합니다.

4.8. 컨테이너 이미지 검색

다음 절차 및 예제 파일 콘텐츠를 사용하여 별도의 heat 스택을 사용하여 배포에 필요한 컨테이너 이미지를 검색합니다. 에지 사이트의 환경 파일과 함께 openstack container image prepare 명령을 실행하여 선택 사항 또는 에지 관련 서비스의 컨테이너 이미지가 포함되어 있는지 확인해야 합니다.

자세한 내용은 컨테이너 이미지 준비를 참조하십시오.

절차

  1. containers.yaml 에 레지스트리 서비스 계정 인증 정보를 추가합니다.

    parameter_defaults:
      ContainerImagePrepare:
      - push_destination: true
        set:
          ceph_namespace: registry.redhat.io/rhceph
          ceph_image: rhceph-4-rhel8
          ceph_tag: latest
          name_prefix: openstack-
          namespace: registry.redhat.io/rhosp16-rhel8
          tag: latest
      ContainerImageRegistryCredentials:
        # https://access.redhat.com/RegistryAuthentication
        registry.redhat.io:
          registry-service-account-username: registry-service-account-password
  2. 환경 파일을 images-env.yaml로 생성합니다.

    sudo openstack tripleo container image prepare \
    -e containers.yaml \
    --output-env-file images-env.yaml

    결과 images-env.yaml 파일은 생성된 스택에 대한 오버클라우드 배포 절차의 일부로 포함됩니다.

4.9. 에지에 대한 빠른 데이터 경로 역할 생성

에지에서 빠른 데이터 경로 서비스를 사용하려면 빠른 데이터 경로 및 에지 서비스를 모두 정의하는 사용자 지정 역할을 만들어야 합니다. 배포를 위해 역할 파일을 생성할 때 분산된 계산 노드 아키텍처와 DPDK 또는 SR-IOV와 같은 빠른 데이터 경로 서비스 모두에 필요한 서비스를 정의하는 새로 생성된 역할을 포함할 수 있습니다.

예를 들어 DPDK를 사용하여 distributedCompute에 대한 사용자 정의 역할을 생성합니다.

사전 요구 사항

성공적인 언더클라우드 설치 자세한 내용은 언더클라우드 설치를 참조하십시오.

절차

  1. 언더클라우드 호스트에 stack 사용자로 로그인합니다.
  2. 기본 역할 디렉터리를 복사합니다.

    cp -r /usr/share/openstack-tripleo-heat-templates/roles ~/.
  3. DistributedCompute.yaml 파일에서 DistributedComputeDpdk.yaml 이라는 새 파일을 생성합니다.

    cp roles/DistributedCompute.yaml roles/DistributedComputeDpdk.yaml
  4. DistributedComputeDpdk.yaml 파일에 DPDK 서비스를 추가합니다. DistributedComputeDpdk.yaml 파일에 없는 ComputeOvsDpdk.yaml 파일에서 매개변수를 식별하여 추가해야 하는 매개변수를 식별할 수 있습니다.

    diff -u roles/DistributedComputeDpdk.yaml roles/ComputeOvsDpdk.yaml

    출력에서 앞에 있는 + 가 앞에 있는 매개변수는 ComputeOvsDpdk.yaml 파일에 존재하지만 DistributedComputeDpdk.yaml 파일에는 존재하지 않습니다. 새 DistributedComputeDpdk.yaml 파일에 이러한 매개변수를 포함합니다.

  5. DistributedComputeDpdk.yaml 을 사용하여 DistributedComputeDpdk 역할 파일을 생성합니다.

    openstack overcloud roles generate --roles-path ~/roles/ -o ~/roles/roles-custom.yaml DistributedComputeDpdk

이 동일한 방법을 사용하여 SR-IOV의 빠른 데이터 경로 역할을 생성하거나 에지의 SR-IOV 및 DPDK를 결합하여 요구 사항을 충족할 수 있습니다.

블록 스토리지 없이 에지 사이트를 배포하려는 경우 다음을 참조하십시오.

Ceph 스토리지를 사용하여 에지 사이트를 배포하려는 경우 다음을 참조하십시오.

5장. 중앙 위치 설치

DCN(Distributed Compute Node) 아키텍처의 중앙 위치를 배포할 때 클러스터를 배포할 수 있습니다.

  • 컴퓨팅 노드 유무
  • Red Hat Ceph Storage 사용 여부

Red Hat Ceph Storage 없이 Red Hat OpenStack Platform을 중앙 위치에 배포하는 경우 Red Hat Ceph 스토리지를 사용하여 에지 사이트를 배포할 수 없습니다. 또한 재배포를 통해 나중에 중앙 위치에 Red Hat Ceph Storage를 추가할 수 있는 옵션이 없습니다.

5.1. 에지 스토리지 없이 중앙 컨트롤러 배포

Object Storage 서비스(swift)를 중앙 위치에서 Image 서비스(glance)의 백엔드로 사용하는 경우 에지 사이트에 블록 스토리지 없이 분산 컴퓨팅 노드 클러스터를 배포할 수 있습니다. 블록 스토리지 없이 배포된 사이트는 나중에 각 아키텍처의 다양한 역할 및 네트워킹 프로필로 인해 블록 스토리지를 보유할 수 없습니다.

중요: 다음 절차에서는 프로덕션에 지원되지 않는 Cinder의 백엔드로 lvm을 사용합니다. 인증된 블록 스토리지 솔루션을 Cinder의 백엔드로 배포해야 합니다.

일반적인 Overcloud 배포와 유사한 방식으로 중앙 컨트롤러 클러스터를 배포합니다. 이 클러스터에는 컴퓨팅 노드가 필요하지 않으므로 컴퓨팅 수를 0 으로 설정하여 기본값 1 을 재정의할 수 있습니다. 중앙 컨트롤러에는 특정 스토리지 및 Oslo 구성 요구 사항이 있습니다. 다음 절차에 따라 이러한 요구 사항을 해결하십시오.

절차

다음 절차에서는 중앙 위치의 초기 배포 단계를 간략하게 설명합니다.

참고

다음 단계에서는 glance 다중 저장소 없이 DCN 배포 예와 관련된 배포 명령 및 환경 파일을 자세히 설명합니다. 이러한 단계에는 관련이 없지만 네트워킹과 같은 구성 측면이 필요하지 않습니다.

  1. 홈 디렉토리에서 배포하려는 각 스택의 디렉터리를 생성합니다.

    mkdir /home/stack/central
    mkdir /home/stack/dcn0
    mkdir /home/stack/dcn1
  2. 다음과 유사한 설정으로 central/overrides.yaml 이라는 파일을 생성합니다.

    parameter_defaults:
      NtpServer:
        - 0.pool.ntp.org
        - 1.pool.ntp.org
      ControllerCount: 3
      ComputeCount: 0
      OvercloudControllerFlavor: baremetal
      OvercloudComputeFlavor: baremetal
      ControllerSchedulerHints:
        'capabilities:node': '0-controller-%index%'
      GlanceBackend: swift
    • ControllerCount: 3 은 세 개의 노드가 배포되도록 지정합니다. glance에는 swift, cinder는 lvm, 에지 계산 노드에 대해 컨트롤 플레인 서비스를 호스팅합니다.
    • ComputeCount: 0 은(는) 컴퓨팅 노드가 중앙 컨트롤러 노드와 함께 배포되지 않도록 하는 선택적 매개변수입니다.
    • GlanceBackend: swift 는 Object Storage(swift)를 Image 서비스(glance) 백엔드로 사용합니다.

      결과 구성은 다음과 같은 방식으로 DCN(분산 컴퓨팅 노드)과 상호 작용합니다.

    • DCN의 이미지 서비스는 중앙 오브젝트 스토리지 백엔드에서 수신하는 이미지의 캐시된 복사본을 생성합니다. 이미지 서비스는 HTTP를 사용하여 오브젝트 스토리지의 이미지를 로컬 디스크 캐시로 복사합니다.

      참고

      중앙 컨트롤러 노드는 DCN(분산 계산 노드) 사이트에 연결할 수 있어야 합니다. 중앙 컨트롤러 노드는 라우팅된 계층 3 연결을 사용할 수 있습니다.

  3. 환경에 적합한 역할을 사용하여 중앙 위치에 대한 역할을 생성합니다.

    openstack overcloud roles generate Controller \
    -o ~/central/control_plane_roles.yaml
  4. 환경 파일 ~/central/central-images-env.yaml을 생성합니다.

    sudo openstack tripleo container image prepare \
    -e containers.yaml \
    --output-env-file ~/central/central-images-env.yaml
  5. site -name.yaml 환경 파일에서 사이트에 대한 명명 규칙을 구성합니다. Cinder 스토리지 가용성 영역은 Nova 가용성 영역과 일치해야 합니다.

    cat > /home/stack/central/site-name.yaml << EOF
    parameter_defaults:
        NovaComputeAvailabilityZone: central
        ControllerExtraConfig:
            nova::availability_zone::default_schedule_zone: central
        NovaCrossAZAttach: false
        CinderStorageAvailabilityZone: central
    EOF
  6. 중앙 컨트롤러 노드를 배포합니다. 예를 들어 다음 콘텐츠가 있는 deploy.sh 파일을 사용할 수 있습니다.

    #!/bin/bash
    
    source ~/stackrc
    time openstack overcloud deploy \
    --stack central \
    --templates /usr/share/openstack-tripleo-heat-templates/ \
    -e /usr/share/openstack-tripleo-heat-templates/environments/nova-az-config.yaml \
    -e ~/central/containers-env-file.yaml \
    -e ~/central/overrides.yaml \
    -e ~/central/site-name.yaml
참고

openstack overcloud deploy 명령에서 네트워킹 구성을 위해 heat 템플릿을 포함해야 합니다. 에지 아키텍처를 설계하려면 스파인 및 루프 네트워킹이 필요합니다. 자세한 내용은 Spine Leaf Networking 을 참조하십시오.

5.2. 스토리지를 사용하여 중앙 사이트 배포

여러 저장소 및 Ceph Storage를 백엔드로 사용하여 이미지 서비스를 배포하려면 다음 단계를 완료합니다.

사전 요구 사항

  • 허브 및 각 가용성 영역의 Ceph 클러스터 또는 스토리지 서비스가 필요한 각 지리적 위치에서 하드웨어.
  • 에지 사이트를 하이퍼 컨버지드 아키텍처에 배포해야 합니다.
  • 허브 및 각 가용성 영역에 있는 세 개의 이미지 서비스 서버 또는 스토리지 서비스가 필요한 각 지리적 위치에 대한 하드웨어입니다.

다음은 두 개 이상의 스택 배포의 예입니다.

  • 중앙 위치에 있는 스택 중 중앙 위치를 중앙이라고 합니다.
  • dcn0 이라는 에지 사이트에 있는 하나의 스택.
  • dcn 1, dcn2 등과 같이 dcn 0 과 유사하게 배포되는 추가 스택.

절차

다음 절차에서는 중앙 위치의 초기 배포 단계를 간략하게 설명합니다.

참고

다음 단계에서는 여러 저장소에서 이미지 서비스를 사용하는 예제 DCN 배포와 관련된 배포 명령 및 환경 파일을 자세히 설명합니다. 이러한 단계에는 관련이 없지만 네트워킹과 같은 구성 측면이 필요하지 않습니다.

  1. 홈 디렉토리에서 배포하려는 각 스택의 디렉터리를 생성합니다.

    mkdir /home/stack/central
    mkdir /home/stack/dcn0
    mkdir /home/stack/dcn1
  2. Ceph 클러스터의 이름과 사용 가능한 하드웨어를 기준으로 구성 매개 변수를 설정합니다. 자세한 내용은 사용자 정의 구성 설정을 사용하여 Ceph 구성을 참조하십시오. https://access.redhat.com/documentation/en-us/red_hat_openstack_platform/16.1/html-single/deploying_an_overcloud_with_containerized_red_hat_ceph/index

    cat > /home/stack/central/ceph.yaml << EOF
    parameter_defaults:
      CephClusterName: central
      CephAnsibleDisksConfig:
        osd_scenario: lvm
        osd_objectstore: bluestore
        devices:
          - /dev/sda
          - /dev/sdb
      CephPoolDefaultSize: 3
      CephPoolDefaultPgNum: 128
    
    EOF
  3. 환경에 적합한 역할을 사용하여 중앙 위치에 대한 역할을 생성합니다.

    openstack overcloud roles generate Compute Controller CephStorage \
    -o ~/central/central_roles.yaml
    
    cat > /home/stack/central/role-counts.yaml << EOF
    parameter_defaults:
      ControllerCount: 3
      ComputeCount: 2
      CephStorage: 3
    EOF
  4. 환경 파일 ~/central/central-images-env.yaml생성

    sudo openstack tripleo container image prepare \
    -e containers.yaml \
    --output-env-file ~/central/central-images-env.yaml
  5. site -name.yaml 환경 파일에서 사이트에 대한 명명 규칙을 구성합니다. Nova 가용성 영역 및 Cinder 스토리지 가용성 영역은 다음과 같아야 합니다.

    cat > /home/stack/central/site-name.yaml << EOF
    parameter_defaults:
        NovaComputeAvailabilityZone: central
        ControllerExtraConfig:
            nova::availability_zone::default_schedule_zone: central
        NovaCrossAZAttach: false
        CinderStorageAvailabilityZone: central
        GlanceBackendID: central
    EOF
  6. 다음과 유사한 내용을 사용하여 glance.yaml 템플릿을 구성합니다.

    parameter_defaults:
        GlanceEnabledImportMethods: web-download,copy-image
        GlanceBackend: rbd
        GlanceStoreDescription: 'central rbd glance store'
        GlanceBackendID: central
        CephClusterName: central
  7. 다른 모든 템플릿을 준비한 후 중앙 스택을 배포합니다.

    openstack overcloud deploy \
           --stack central \
           --templates /usr/share/openstack-tripleo-heat-templates/ \
           -r ~/central/central_roles.yaml \
        ...
           -e /usr/share/openstack-tripleo-heat-templates/environments/ceph-ansible/ceph-ansible.yaml \
           -e /usr/share/openstack-tripleo-heat-templates/environments/nova-az-config.yaml \
           -e ~/central/central-images-env.yaml \
           -e ~/central/role-counts.yaml \
           -e ~/central/site-name.yaml \
           -e ~/central/ceph.yaml \
           -e ~/central/glance.yaml
참고

openstack overcloud deploy 명령에서 네트워킹 구성을 위해 heat 템플릿을 포함해야 합니다. 에지 아키텍처를 설계하려면 스파인 및 루프 네트워킹이 필요합니다. 자세한 내용은 Spine Leaf Networking 을 참조하십시오.

ceph-ansible.yaml 파일은 다음 매개변수로 구성됩니다.

  • NovaEnableRbdBackend: true
  • GlanceBackend: rbd

이러한 설정을 함께 사용하면 glance.conf 매개변수 image_import_plugins 는 heat에 의해 image_conversion 값을 가지도록 구성되며 glance image-create-via-import --disk-format qcow2 와 같은 명령으로 QCOW2 이미지 변환을 자동화합니다.

Ceph RBD에 최적화되어 있습니다. 이미지 변환을 비활성화하려면 GlanceImageImportPlugin 매개변수를 사용합니다.

   parameter_defaults:
     GlanceImageImportPlugin: []

5.3. 외부 Ceph 통합

DCN(Distributed Compute node) 아키텍처의 중앙 위치를 배포하고 사전 배포된 Red Hat Ceph Storage 솔루션을 통합할 수 있습니다.

사전 요구 사항

  • Ceph 클러스터의 하드웨어는 중앙 위치 및 각 가용성 영역 또는 스토리지 서비스가 필요한 각 지리적 위치에 있습니다.
  • 에지 사이트를 하이퍼 컨버지드 아키텍처에 배포해야 합니다.
  • 하드웨어는 중앙 위치와 각 가용성 영역에 있는 세 개의 이미지 서비스 서버 또는 스토리지 서비스가 필요한 각 지리적 위치에 대한 하드웨어입니다.

다음은 두 개 이상의 스택 배포의 예입니다.

  • 중앙 위치에 있는 스택 중 중앙 위치를 중앙이라고 합니다.
  • dcn0 이라는 에지 사이트에 있는 하나의 스택.
  • dcn 1, dcn2 등과 같이 dcn 0 과 유사하게 배포되는 추가 스택.

dcn external ceph at central

오버클라우드와 기존 Red Hat Ceph Cluster 통합에 설명된 프로세스에 따라 기존 Red Hat Ceph Storage 솔루션과 통합 되도록 중앙 위치를 설치할 수 있습니다. Red Hat Ceph Storage를 DCN 배포의 중앙 사이트와 통합하기 위한 특별한 요구 사항은 없지만 오버클라우드를 배포하기 전에 DCN별 단계를 완료해야 합니다.

  1. 홈 디렉토리에서 배포하려는 각 스택의 디렉터리를 생성합니다. 이를 사용하여 각 사이트에 맞게 설계된 별도의 템플릿을 사용합니다.

    mkdir /home/stack/central
    mkdir /home/stack/dcn0
    mkdir /home/stack/dcn1
  2. Red Hat OpenStack Platform director가 관리하는 역할을 사용하여 중앙 위치에 대한 역할을 생성합니다. 외부 Ceph와 통합할 때 Ceph 역할을 사용하지 마십시오.

    cat > /home/stack/central/role-counts.yaml << EOF
    parameter_defaults:
      ControllerCount: 3
      ComputeCount: 2
    EOF
  3. 환경 파일 ~/central/central-images-env.yaml을 생성합니다.

    sudo openstack tripleo container image prepare \
    -e containers.yaml \
    --output-env-file ~/central/central-images-env.yaml
  4. site-name.yaml 환경 파일에서 사이트의 이름 지정 규칙을 구성합니다. Nova 가용성 영역 및 Cinder 스토리지 가용성 영역은 다음과 같아야 합니다.

    cat > /home/stack/central/site-name.yaml << EOF
    parameter_defaults:
        NovaComputeAvailabilityZone: central
        ControllerExtraConfig:
            nova::availability_zone::default_schedule_zone: central
        NovaCrossAZAttach: false
        CinderStorageAvailabilityZone: central
        GlanceBackendID: central
    EOF
  5. 다음과 유사한 콘텐츠를 사용하여 glance.yaml 템플릿을 구성합니다.

    parameter_defaults:
        GlanceEnabledImportMethods: web-download,copy-image
        GlanceBackend: rbd
        GlanceStoreDescription: 'central rbd glance store'
        GlanceBackendID: central
        CephClusterName: central
  6. Red Hat OpenStack Platform director 없이 Ceph를 배포하면 ceph-ansible.yaml 환경 파일을 사용하지 마십시오. 대신 ceph-ansible-external.yaml 환경 파일을 사용합니다.

    openstack overcloud deploy \
           --stack central \
           --templates /usr/share/openstack-tripleo-heat-templates/ \
           -r ~/central/central_roles.yaml \
        ...
           -e /usr/share/openstack-tripleo-heat-templates/environments/ceph-ansible/ceph-ansible-external.yaml \
           -e /usr/share/openstack-tripleo-heat-templates/environments/nova-az-config.yaml \
           -e ~/central/central-images-env.yaml \
           -e ~/central/role-counts.yaml \
           -e ~/central/site-name.yaml \
           -e ~/central/ceph.yaml \
           -e ~/central/glance.yaml

6장. 스토리지 없이 에지 배포

Object Storage 서비스(swift)를 중앙 위치에서 Image 서비스(glance)의 백엔드로 사용하는 경우 에지 사이트에 블록 스토리지 없이 분산 컴퓨팅 노드 클러스터를 배포할 수 있습니다. 블록 스토리지 없이 배포된 사이트는 나중에 각 아키텍처의 다양한 역할 및 네트워킹 프로필로 인해 블록 스토리지를 보유할 수 없습니다.

중요

다음 절차에서는 production에 지원되지 않는 Block Storage 서비스(cinder)의 백엔드로 lvm을 사용합니다. 인증된 블록 스토리지 솔루션을 블록 스토리지 서비스의 백엔드로 배포해야 합니다.

6.1. 스토리지 없이 에지 노드 배포

중앙 위치를 컨트롤 플레인으로 사용할 에지 컴퓨팅 노드를 배포할 수 있습니다. 다음 절차에서는 새 DCN 스택을 배포에 추가하고 기존 heat 스택의 구성을 재사용하여 새 환경 파일을 생성하는 방법을 보여줍니다. 첫 번째 heat 스택은 중앙 집중식 데이터센터 내에 오버클라우드를 배포합니다. 컴퓨팅 노드를 원격 위치에 배포하기 위해 추가 heat 스택을 생성합니다.

6.1.1. 분산 컴퓨팅 노드 환경 파일 구성

절차

  1. DCN 사이트에 필요한 구성 파일을 생성합니다.

    openstack overcloud export \
    --config-download-dir /var/lib/mistral/central \
    --stack central --output-file ~/dcn-common/central-export.yaml
    중요

    이 절차에서는 새 central-export.yaml 환경 파일을 생성하고 오버클라우드에서 plan-environment.yaml 파일의 암호를 사용합니다. central-export.yaml 파일에는 중요한 보안 데이터가 포함되어 있습니다. 보안을 강화하기 위해 더 이상 필요하지 않은 경우 파일을 제거할 수 있습니다.

    중요

    --config-download-dir 옵션에 대한 디렉터리를 지정하는 경우 director가 배포하는 동안 director가 /var/lib/mistral 에 생성하는 중앙 허브 Ansible 설정을 사용합니다. openstack overcloud config download 명령을 사용하여 수동으로 생성하는 Ansible 구성을 사용하지 마십시오. 수동으로 생성된 구성에는 배포 작업 중에만 생성되는 특정 파일이 없습니다.

  2. 사용자 환경에 적합한 역할을 사용하여 에지 위치에 대한 역할을 생성합니다.

    openstack overcloud roles generate Compute -o ~/dcn0/dcn0_roles.yaml
참고

네트워킹 오버레이에 ML2/OVS를 사용하는 경우 NeutronDhcpAgentNeutronMetadataAgent 역할을 포함하도록 생성한 역할 파일을 편집해야 합니다.

...
    - OS::TripleO::Services::MySQLClient
    - OS::TripleO::Services::NeutronBgpVpnBagpipe
+   - OS::TripleO::Services::NeutronDhcpAgent
+   - OS::TripleO::Services::NeutronMetadataAgent
    - OS::TripleO::Services::NeutronLinuxbridgeAgent
    - OS::TripleO::Services::NeutronVppAgent
    - OS::TripleO::Services::NovaAZConfig
    - OS::TripleO::Services::NovaCompute

...

자세한 내용은 라우팅된 공급자 네트워크 준비를 참조하십시오.

6.1.2. DCN 사이트에 컴퓨팅 노드 배포

이 절차에서는 Compute 역할을 사용하여 dcn0 이라는 AZ(가용 영역)에 컴퓨팅 노드를 배포합니다. DC(분산 계산 노드) 컨텍스트에서 이 역할은 스토리지가 없는 사이트에 사용됩니다.

절차

  1. dcn0/overrides.yaml에서 DCN(분산 컴퓨팅) 사이트의 덮어쓰기를 검토합니다.

    parameter_defaults:
      ComputeCount: 3
      ComputeFlavor: baremetal
      ComputeSchedulerHints:
        'capabilities:node': '0-compute-%index%'
      NovaAZAttach: false
  2. 다음 내용으로 ~/dcn0 디렉터리에 site-name.yaml 이라는 새 파일을 생성합니다.

    resource_registry:
      OS::TripleO::Services::NovaAZConfig: /usr/share/openstack-tripleo-heat-templates/deployment/nova/nova-az-config.yaml
    parameter_defaults:
      NovaComputeAvailabilityZone: dcn0
      RootStackName: dcn0
  3. DCN 사이트의 컨테이너 이미지를 검색합니다.

    sudo openstack tripleo container image prepare \
    --environment-directory dcn0 \
    -r ~/dcn0/roles_data.yaml \
    -e ~/dcn-common/central-export.yaml \
    -e ~/containers-prepare-parameter.yaml \
    --output-env-file ~/dcn0/dcn0-images-env.yaml
  4. dcn0에 대해 deploy.sh 배포 스크립트를 실행합니다.

    #!/bin/bash
    STACK=dcn0
    source ~/stackrc
    time openstack overcloud deploy \
         --stack $STACK \
         --templates /usr/share/openstack-tripleo-heat-templates/ \
         -e /usr/share/openstack-tripleo-heat-templates/environments/nova-az-config.yaml \
         -e ~/dcn-common/central-export.yaml \
         -e ~/dcn0/dcn0-images-env.yaml \
         -e ~/dcn0/site-name.yaml \
         -e ~/dcn0/overrides.yaml

    network_data.yaml 파일을 편집해야 하는 추가 에지 사이트를 배포하는 경우 중앙 위치에서 스택 업데이트를 실행해야 합니다.

참고

openstack overcloud deploy 명령에서 네트워킹 구성을 위해 heat 템플릿을 포함해야 합니다. 에지 아키텍처를 설계하려면 스파인 및 루프 네트워킹이 필요합니다. 자세한 내용은 Spine Leaf Networking 을 참조하십시오.

7장. 에지에서 스토리지 배포

Red Hat OpenStack Platform director를 통해 분산된 계산 노드 배포를 확장하여 Red Hat OpenStack Platform 및 Ceph Storage를 사용하여 에지에 분산 이미지 관리 및 영구 스토리지를 포함할 수 있습니다.

DCN 아키텍처

7.1. 스토리지를 사용하여 에지 사이트 배포

중앙 사이트를 배포한 후 에지 사이트를 빌드하고 각 에지 위치가 주로 자체 스토리지 백엔드와 중앙 위치에 있는 스토리지 백엔드에 연결되는지 확인합니다.

ceph에 필요한 스토리지 및 storage_mgmt 네트워크를 추가하여 스파인 및 리프팅 네트워킹 구성이 이 구성에 포함되어야 합니다. 자세한 내용은 Spine idle networking을 참조하십시오.

사이트 간에 Glance 이미지를 이동할 수 있도록 각 에지 사이트에 있는 스토리지 네트워크와 스토리지 네트워크 간에 연결되어 있어야 합니다.

중앙 위치가 각 에지 사이트에서 mons 및 osds 와 통신할 수 있는지 확인합니다. 그러나 스토리지 관리 네트워크가 OSD 리밸런싱에 사용되기 때문에 사이트 위치 경계에서 스토리지 관리 네트워크를 종료해야 합니다.

절차

  1. 중앙 스택에서 스택 정보를 내보냅니다. 다음 명령을 실행하기 전에 중앙 스택을 배포해야 합니다.

    openstack overcloud export \
            --config-download-dir /var/lib/mistral/central/ \
            --stack central \
            --output-file ~/dcn-common/central-export.yaml
    참고

    config-download-dir 값은 기본적으로 /var/lib/mistral/<stack>/ 입니다.

  2. central_ceph_external.yaml 파일을 생성합니다. 이 환경 파일은 DCN 사이트를 중앙 허브 Ceph 클러스터에 연결하므로 이전 단계에서 배포한 Ceph 클러스터에만 정보가 지정됩니다.

    sudo -E openstack overcloud export ceph \
    --stack central \
    --config-download-dir /var/lib/mistral \
    --output-file ~/dcn-common/central_ceph_external.yaml

    Red Hat OpenStack Platform director 없이 Ceph를 배포하면 openstack overcloud export ceph 명령을 실행할 수 없습니다. central_ceph_external.yaml 파일을 수동으로 생성합니다.

    parameter_defaults:
      CephExternalMultiConfig:
        - cluster: "central"
          fsid: "3161a3b4-e5ff-42a0-9f53-860403b29a33"
          external_cluster_mon_ips: "172.16.11.84, 172.16.11.87, 172.16.11.92"
          keys:
            - name: "client.openstack"
              caps:
                mgr: "allow *"
                mon: "profile rbd"
                osd: "profile rbd pool=vms, profile rbd pool=volumes, profile rbd pool=images"
              key: "AQD29WteAAAAABAAphgOjFD7nyjdYe8Lz0mQ5Q=="
              mode: "0600"
          dashboard_enabled: false
          ceph_conf_overrides:
            client:
              keyring: /etc/ceph/central.client.openstack.keyring
    • fsid 매개변수는 Ceph Storage 클러스터의 파일 시스템 ID입니다. 이 값은 [global] 섹션의 클러스터 구성 파일에 지정됩니다.

      [global]
      fsid = 4b5c8c0a-ff60-454b-a1b4-9747aa737d19
      ...
    • key 매개변수는 openstack 계정의 ceph 클라이언트 키입니다.

      [root@ceph ~]# ceph auth list
      ...
      [client.openstack]
          key = AQC+vYNXgDAgAhAAc8UoYt+OTz5uhV7ItLdwUw==
          caps mgr = "allow *"
          caps mon = "profile rbd"
          caps osd = "profile rbd pool=volumes, profile rbd pool=vms, profile rbd pool=images, profile rbd pool=backups, profile rbd pool=metrics"
      ...

      샘플 central_ceph_external.yaml 파일에 표시된 매개변수에 대한 자세한 내용은 Creating a custom environment file 을 참조하십시오.

  3. 이미지 서비스 구성 덮어쓰기를 위해 ~/dcn0/glance.yaml 파일을 생성합니다.

    parameter_defaults:
      GlanceEnabledImportMethods: web-download,copy-image
      GlanceBackend: rbd
      GlanceStoreDescription: 'dcn0 rbd glance store'
      GlanceBackendID: dcn0
      GlanceMultistoreConfig:
        central:
          GlanceBackend: rbd
          GlanceStoreDescription: 'central rbd glance store'
          CephClientUserName: 'openstack'
          CephClusterName: central
  4. 사용 가능한 하드웨어를 기준으로 구성 매개 변수를 사용하여 ceph.yaml 파일을 구성합니다.

    cat > /home/stack/dcn0/ceph.yaml << EOF
    parameter_defaults:
      CephClusterName: dcn0
      CephAnsibleDisksConfig:
        osd_scenario: lvm
        osd_objectstore: bluestore
        devices:
          - /dev/sda
          - /dev/sdb
      CephPoolDefaultSize: 3
      CephPoolDefaultPgNum: 128
    EOF

    자세한 내용은 Ceph Storage 노드 디스크 레이아웃 매핑 을 참조하십시오.

  5. 환경 요구 사항에 맞게 조정된 다음 매개 변수가 포함된 파일을 사용하여 시스템 튜닝을 구현합니다.

    cat > /home/stack/dcn0/tuning.yaml << EOF
    parameter_defaults:
      CephAnsibleExtraConfig:
        is_hci: true
      CephConfigOverrides:
        osd_recovery_op_priority: 3
        osd_recovery_max_active: 3
        osd_max_backfills: 1
     ## Set relative to your hardware:
      # DistributedComputeHCIParameters:
      #   NovaReservedHostMemory: 181000
      # DistributedComputeHCIExtraConfig:
      #   nova::cpu_allocation_ratio: 8.2
    EOF
  6. site -name.yaml 환경 파일에서 사이트에 대한 명명 규칙을 구성합니다. Nova 가용성 영역과 Cinder 스토리지 가용성 영역이 일치해야 합니다. 스토리지가 있는 에지 사이트를 배포할 때 CinderVolumeCluster 매개변수가 포함됩니다. 이 매개 변수는 cinder-volume을 에지 사이트에 필요한 활성/활성으로 배포할 때 사용됩니다. 가장 좋은 방법은 Cinder 클러스터 이름을 가용성 영역과 일치하도록 설정합니다.

    cat > /home/stack/central/site-name.yaml << EOF
    parameter_defaults:
        ...
        NovaComputeAvailabilityZone: dcn0
        NovaCrossAZAttach: false
        CinderStorageAvailabilityZone: dcn0
        CinderVolumeCluster: dcn0
  7. dcn0 배포에 사용할 roles.yaml 파일을 생성합니다. 예를 들면 다음과 같습니다.

    openstack overcloud roles generate DistributedComputeHCI DistributedComputeHCIScaleOut -o ~/dcn0/roles_data.yaml
  8. 각 역할에 원하는 값을 사용하여 ~/dcn0/roles-counts.yaml 파일을 만들어 각 역할에서 숫자 시스템을 설정합니다.

    HCI(하이퍼컨버지드 인프라)를 사용하는 경우 Ceph Mon 및 GlanceApiEdge 서비스의 요구 사항을 충족하려면 DistributedComputeHCICount 역할에 세 개의 노드를 할당해야 합니다.

    parameter_defaults:
      ControllerCount: 0
      ComputeCount: 0
      DistributedComputeHCICount: 3
      DistributedComputeHCIScaleOutCount: 1  # Optional
      DistributedComputeScaleOutCount: 1     # Optional
  9. 에지 사이트의 컨테이너 이미지를 검색합니다.

    sudo openstack tripleo container image prepare \
    --environment-directory dcn0 \
    -r ~/dcn0/roles_data.yaml \
    -e /usr/share/openstack-tripleo-heat-templates/environments/ceph-ansible/ceph-ansible.yaml \
    ...
    -e /home/stack/dcn-common/central-export.yaml \
    -e /home/stack/containers-prepare-parameter.yaml \
    --output-env-file ~/dcn0/dcn0-images-env.yaml
    참고

    openstack tripleo container image prepare 명령에서 배포에 사용할 모든 환경 파일을 포함해야 합니다.

  10. 에지 사이트를 배포합니다.

    openstack overcloud deploy \
        --stack dcn0 \
        --templates /usr/share/openstack-tripleo-heat-templates/ \
        -r ~/dcn0/roles_data.yaml \
        -e /usr/share/openstack-tripleo-heat-templates/environments/ceph-ansible/ceph-ansible.yaml \
        -e /usr/share/openstack-tripleo-heat-templates/environments/dcn-hci.yaml \
        -e /usr/share/openstack-tripleo-heat-templates/environments/nova-az-config.yaml \
        -e ~/dnc0/dcn0-images-env.yaml \
        ....
        -e ~/dcn-common/central-export.yaml \
        -e ~/dcn-common/central_ceph_external.yaml \
        -e ~/dcn0/dcn_ceph_keys.yaml \
        -e ~/dcn0/role-counts.yaml \
        -e ~/dcn0/ceph.yaml \
        -e ~/dcn0/site-name.yaml \
        -e ~/dcn0/tuning.yaml \
        -e ~/dcn0/glance.yaml
    참고

    openstack overcloud deploy 명령에서 네트워킹 구성을 위해 heat 템플릿을 포함해야 합니다. 에지 아키텍처를 설계하려면 스파인 및 루프 네트워킹이 필요합니다. 자세한 내용은 Spine Leaf Networking 을 참조하십시오.

7.2. 추가 분산 계산 노드 사이트 생성

새 DCN(분산 계산 노드) 사이트에는 언더클라우드에 자체 YAML 파일 디렉터리가 있습니다. 자세한 내용은 4.7절. “별도의 heat 스택 관리”의 내용을 참조하십시오. 다음 절차에서는 예제 명령을 설명합니다.

절차

  1. 언더클라우드에서 stack 사용자로 dcn9 에 대한 새 디렉터리를 만듭니다.

    $ cd ~
    $ mkdir dcn9
  2. 기존 dcn0 템플릿을 새 디렉터리에 복사하고 dcn0 문자열을 dcn9:로 바꿉니다.

    $ cp dcn0/ceph.yaml dcn9/ceph.yaml
    $ sed s/dcn0/dcn9/g -i dcn9/ceph.yaml
    $ cp dcn0/overrides.yaml dcn9/overrides.yaml
    $ sed s/dcn0/dcn9/g -i dcn9/overrides.yaml
    $ sed s/"0-ceph-%index%"/"9-ceph-%index%"/g -i dcn9/overrides.yaml
    $ cp dcn0/deploy.sh dcn9/deploy.sh
    $ sed s/dcn0/dcn9/g -i dcn9/deploy.sh
  3. dcn9 디렉터리의 파일을 검토하여 요구 사항에 맞는지 확인합니다.
  4. undercloud.conf를 편집하여 새 리프를 추가합니다. 다음 예제에서는 leaf9를 undercloud.conf에 추가합니다.

    [leaf0]
    cidr = 192.168.10.0/24
    dhcp_start = 192.168.10.10
    dhcp_end = 192.168.10.90
    inspection_iprange = 192.168.10.100,192.168.10.190
    gateway = 192.168.10.1
    masquerade = False
    
    …
    [leaf9]
    cidr = 192.168.19.0/24
    dhcp_start = 192.168.19.10
    dhcp_end = 192.168.19.90
    inspection_iprange = 192.168.19.100,192.168.19.190
    gateway = 192.168.10.1
    masquerade = False
  5. openstack undercloud install 명령을 다시 실행하여 환경 구성을 업데이트합니다.
  6. 오버클라우드 템플릿에서 ["CREATE" 값에서 NetworkDeploymentActions 매개변수 값을 , ["CREATE ", "UPDATE"] 값으로 업데이트합니다. 이 매개변수가 현재 템플릿에 포함되어 있지 않은 경우 환경 파일 중 하나에 추가하거나 새 환경 파일을 생성합니다.

    cat > /home/stack/central/network-environment.yaml << EOF
    parameter_defaults:
      NetworkDeploymentActions: ["CREATE", "UPDATE"]
    EOF
  7. 중앙 위치에 대해 배포 스크립트를 실행합니다. 중앙 위치를 처음 배포할 때 사용한 모든 템플릿과 새로 생성되거나 편집된 network-environment.yaml 파일을 포함합니다.

    openstack overcloud deploy \
        --stack central \
        --templates /usr/share/openstack-tripleo-heat-templates/ \
        -r ~/central/roles_data.yaml \
        -e /usr/share/openstack-tripleo-heat-templates/environments/ceph-ansible/ceph-ansible.yaml \
        -e /usr/share/openstack-tripleo-heat-templates/environments/dcn-hci.yaml \
        -e /usr/share/openstack-tripleo-heat-templates/environments/nova-az-config.yaml \
        -e ~/central/dcn9-images-env.yaml \
        ....
        -e ~/dcn-common/central-export.yaml \
        -e ~/dcn-common/central_ceph_external.yaml \
        -e ~/central/dcn_ceph_keys.yaml \
        -e ~/central/role-counts.yaml \
        -e ~/central/ceph.yaml \
        -e ~/central/site-name.yaml \
        -e ~/central/tuning.yaml \
        -e ~/central/glance.yaml
  8. 노드를 사용할 수 있고 프로비저닝 상태인지 확인합니다.

    $ openstack baremetal node list
  9. 노드를 사용할 수 있는 경우 모든 적절한 템플릿을 사용하여 새 에지 사이트를 배포합니다.

    openstack overcloud deploy \
        --stack dcn9 \
        --templates /usr/share/openstack-tripleo-heat-templates/ \
        -r ~/dcn9/roles_data.yaml \
        -e /usr/share/openstack-tripleo-heat-templates/environments/ceph-ansible/ceph-ansible.yaml \
        -e /usr/share/openstack-tripleo-heat-templates/environments/dcn-hci.yaml \
        -e /usr/share/openstack-tripleo-heat-templates/environments/nova-az-config.yaml \
        -e ~/dnc9/dcn9-images-env.yaml \
        ....
        -e ~/dcn-common/central-export.yaml \
        -e ~/dcn-common/central_ceph_external.yaml \
        -e ~/dcn9/dcn_ceph_keys.yaml \
        -e ~/dcn9/role-counts.yaml \
        -e ~/dcn9/ceph.yaml \
        -e ~/dcn9/site-name.yaml \
        -e ~/dcn9/tuning.yaml \
        -e ~/dcn9/glance.yaml
  10. 직접 에지-to-edge 통신이 있는 위치를 배포한 경우 각 에지 사이트를 재배포하여 경로를 업데이트하고 새 위치와의 통신을 설정해야 합니다.

7.3. 중앙 위치 업데이트

샘플 절차를 사용하여 모든 에지 사이트를 구성하고 배포한 후 중앙 위치에서 구성을 업데이트하여 중앙 이미지 서비스에서 이미지를 에지 사이트로 푸시할 수 있도록 합니다.

주의

이 절차에서는 Image 서비스(glance)를 다시 시작하고 오래 실행 중인 Image 서비스 프로세스를 중단합니다. 예를 들어, 중앙 이미지 서비스 서버에서 DCN 이미지 서비스 서버로 이미지를 복사하는 경우 해당 이미지 복사본이 중단되고 다시 시작해야 합니다. 자세한 내용은 중단된 이미지 서비스 프로세스 후 남은 데이터 지우기 를 참조하십시오.

절차

  1. 다음과 유사한 ~/central/glance_update.yaml 파일을 만듭니다. 이 예에서는 두 개의 에지 사이트 dcn0 및 dcn1에 대한 구성이 포함되어 있습니다.

      parameter_defaults:
        GlanceEnabledImportMethods: web-download,copy-image
        GlanceBackend: rbd
        GlanceStoreDescription: 'central rbd glance store'
        CephClusterName: central
        GlanceBackendID: central
        GlanceMultistoreConfig:
          dcn0:
            GlanceBackend: rbd
            GlanceStoreDescription: 'dcn0 rbd glance store'
            CephClientUserName: 'openstack'
            CephClusterName: dcn0
            GlanceBackendID: dcn0
          dcn1:
            GlanceBackend: rbd
            GlanceStoreDescription: 'dcn1 rbd glance store'
            CephClientUserName: 'openstack'
            CephClusterName: dcn1
            GlanceBackendID: dcn1
  2. dcn_ceph.yaml 파일을 만듭니다. 다음 예제에서 이 파일은 중앙 사이트의 glance 서비스를 에지 사이트 dcn0 및 dcn 1 의 Ceph 클러스터 클라이언트로 구성합니다.

    sudo -E openstack overcloud export ceph \
    --stack dcn0,dcn1 \
    --config-download-dir /var/lib/mistral \
    --output-file ~/central/dcn_ceph.yaml
  3. 원본 템플릿을 사용하여 중앙 사이트를 다시 배포하고 새로 생성된 dcn_ceph.yamlglance_update.yaml 파일을 포함합니다.

    openstack overcloud deploy \
           --stack central \
           --templates /usr/share/openstack-tripleo-heat-templates/ \
           -r ~/central/central_roles.yaml \
        ...
           -e /usr/share/openstack-tripleo-heat-templates/environments/ceph-ansible/ceph-ansible.yaml \
           -e /usr/share/openstack-tripleo-heat-templates/environments/nova-az-config.yaml \
           -e ~/central/central-images-env.yaml \
           -e ~/central/role-counts.yaml \
           -e ~/central/site-name.yaml
           -e ~/central/ceph.yaml \
           -e ~/central/ceph_keys.yaml \
           -e ~/central/glance.yaml \
           -e ~/central/dcn_ceph_external.yaml
  4. 중앙 위치의 컨트롤러에서 cinder-volume 서비스를 다시 시작합니다. cinder-backup 서비스로 중앙 위치를 배포한 경우 cinder-backup 서비스도 다시 시작합니다.

    ssh heat-admin@controller-0 sudo pcs resource restart openstack-cinder-volume
    ssh heat-admin@controller-0 sudo pcs resource restart openstack-cinder-backup

7.3.1. 이미지 서비스 프로세스 중단 후 남은 데이터 삭제

중앙 위치를 다시 시작하면 장기 실행 Image 서비스(glance) 프로세스가 중단됩니다. 이러한 프로세스를 다시 시작하기 전에 먼저 재부팅한 컨트롤러 노드 및 Ceph 및 이미지 서비스 데이터베이스에서 남은 데이터를 정리해야 합니다.

절차

  1. 재부팅된 컨트롤러 노드에서 남은 데이터를 확인하고 지웁니다. 스테이징 저장소의 glance-api.conf 파일의 파일을 이미지 서비스 데이터베이스의 해당 이미지와 비교(예: < image_ID>.raw ).

    • 이러한 이미지가 가져오기 상태를 표시하는 경우 이미지를 다시 생성해야 합니다.
    • 이미지가 활성 상태로 표시되면 스테이징에서 데이터를 삭제하고 복사 가져오기를 다시 시작해야 합니다.
  2. Ceph 저장소의 데이터를 확인하고 지웁니다. 스테이징 영역에서 정리한 이미지에는 이미지가 포함된 Ceph 저장소에 stores 속성에 일치하는 레코드가 있어야 합니다. Ceph의 이미지 이름은 Image 서비스 데이터베이스의 이미지 ID입니다.
  3. 이미지 서비스 데이터베이스를 지웁니다. 중단된 경우 가져오기 작업에서 상태를 가져올 수 있는 이미지를 지웁니다.

    $ glance image-delete <image_id>

7.4. DCN에 Red Hat Ceph Storage Dashboard 배포

절차

중앙 위치에 Red Hat Ceph Storage 대시보드를 배포하려면 오버클라우드 배포에 Red Hat Ceph Storage 대시보드 추가를 참조하십시오. 이러한 단계는 중앙 위치를 배포하기 전에 완료해야 합니다.

Red Hat Ceph Storage Dashboard를 에지 위치에 배포하려면 중앙 집중적으로 완료한 것과 동일한 단계를 완료해야 하지만 다음을 완료해야 합니다.

  • 에지 사이트를 배포하기 위한 템플릿에 ManageNetworks 매개변수 값이 false 인지 확인합니다. ManageNetworksfalse로 설정하면 에지 사이트에서 중앙 스택에서 이미 생성된 기존 네트워크를 사용합니다.

    parameter_defaults:
      ManageNetworks: false
  • 고가용성 가상 IP를 생성하려면 로드 밸런싱을 위한 자체 솔루션을 배포해야 합니다. 에지 사이트는 haproxy 또는 pacemaker를 배포하지 않습니다. Red Hat Ceph Storage 대시보드를 엣지 위치에 배포하면 스토리지 네트워크에 배포가 노출됩니다. 대시보드는 부하 분산 솔루션 없이 고유한 IP 주소가 있는 세 개의 DistributedComputeHCI 노드 각각에 설치됩니다.

7.4.1. 가상 IP에 대해 구성 가능한 네트워크 생성

Ceph 대시보드를 노출할 수 있는 가상 IP를 호스트하는 추가 네트워크를 만들 수 있습니다. 여러 스택의 네트워크 리소스를 재사용해서는 안 됩니다. 네트워크 리소스를 재사용하는 방법에 대한 자세한 내용은 여러 스택에서 네트워크 리소스 재사용을 참조하십시오.

이 추가 네트워크 리소스를 생성하려면 제공된 network_data_dashboard.yaml heat 템플릿을 사용합니다. 생성된 네트워크의 이름은 StorageDashboard 입니다.

절차

  1. Red Hat OpenStack Platform Director에 stack 으로 로그인합니다.
  2. 환경에 적합한 DistributedComputeHCIDashboard 역할 및 기타 역할을 생성합니다.

    openstack overcloud roles generate DistributedComputeHCIDashboard -o ~/dnc0/roles.yaml
  3. overcloud deploy 명령에 roles.yamlnetwork_data_dashboard.yaml 을 포함합니다.

    $ openstack overcloud deploy --templates \
    -r ~/<dcn>/<dcn_site_roles>.yaml \
    -n /usr/share/openstack-tripleo-heat-templates/network_data_dashboard.yaml \
    -e <overcloud_environment_files> \
    ...
    -e /usr/share/openstack-tripleo-heat-templates/environments/ceph-ansible/ceph-ansible.yaml \
    -e /usr/share/openstack-tripleo-heat-templates/environments/ceph-ansible/ceph-dashboard.yaml
참고

배포에서는 스토리지 네트워크에서 대시보드가 활성화된 세 개의 IP 주소를 제공합니다.

검증

대시보드가 중앙 위치에서 작동하고 Ceph 클러스터에서 표시되는 데이터가 올바른지 확인하려면 Ceph 대시보드 액세스를 참조하십시오.

대시보드가 비슷한 단계를 통해 에지 위치에서 작동하는지 확인할 수 있지만 에지 위치에 로드 밸런서가 없으므로 예외가 있습니다.

  1. /var/lib/mistral/<stackname>/ceph-ansible/group_vars/all.yml에서 선택한 스택과 관련된 대시보드 관리자 로그인 자격 증명을 검색합니다.
  2. 선택한 스택 전용 인벤토리에서 /var/lib/mistral/<stackname>/ceph-ansible/inventory.yml 에서 DistributedComputeHCI 역할 호스트 목록을 찾고 세 가지 storage_ip 값을 모두 저장합니다. 아래의 예에서 처음 두 개의 대시보드 IP는 172.16.11.84 및 172.16.11.87입니다.

    DistributedComputeHCI:
      hosts:
        dcn1-distributed-compute-hci-0:
          ansible_host: 192.168.24.16
    ...
    storage_hostname: dcn1-distributed-compute-hci-0.storage.localdomain
    storage_ip: 172.16.11.84
    ...
        dcn1-distributed-compute-hci-1:
    ansible_host: 192.168.24.22
    ...
    storage_hostname: dcn1-distributed-compute-hci-1.storage.localdomain
    storage_ip: 172.16.11.87
  3. 액세스할 수 있는 경우 이러한 IP 주소 중 하나에서 Ceph 대시보드가 활성화되어 있는지 확인할 수 있습니다. 이러한 IP 주소는 스토리지 네트워크에 있으며 라우팅되지 않습니다. 이러한 IP 주소를 사용할 수 없는 경우 확인을 위해 가상 IP 주소를 가져오도록 인벤토리에서 가져온 세 개의 IP 주소에 대해 로드 밸런서를 구성해야 합니다.

8장. 키 관리자를 사용한 배포

Red Hat OpenStack Platform 16.1.2 릴리스 이전에 에지 사이트를 배포한 경우 이 기능을 구현하려면 roles.yaml을 다시 생성해야 합니다. 기능을 구현하려면 DCN 사이트 배포에 사용되는 roles.yaml 파일을 다시 생성합니다.

$ openstack overcloud roles generate DistributedComputeHCI DistributedComputeHCIScaleOut -o ~/dcn0/roles_data.yaml

8.1. Key Manager를 사용하여 에지 사이트 배포

에지 사이트에서 Key Manager(barbican) 서비스에 대한 액세스 권한을 포함하려면 중앙 위치에서 barbican을 구성해야 합니다. barbican 설치 및 구성에 대한 자세한 내용은 Barbican 배포를 참조하십시오.

  • /usr/share/openstack-tripleo-heat-templates/environments/services/barbican-edge.yaml을 포함하여 DCN 사이트에서 barbican 에 대한 액세스를 구성할 수 있습니다.

    openstack overcloud deploy \
        --stack dcn0 \
        --templates /usr/share/openstack-tripleo-heat-templates/ \
        -r ~/dcn0/roles_data.yaml \
        ....
        -e /usr/share/openstack-tripleo-heat-templates/environments/services/barbican-edge.yaml

9장. nova에 Glance 이미지 준비

로컬 임시 스토리지를 사용하도록 OpenStack Compute를 구성하면 Glance 이미지가 캐시되어 인스턴스 배포를 빠르게 수행할 수 있습니다. 인스턴스에 필요한 이미지가 아직 캐시되지 않은 경우 인스턴스를 생성할 때 컴퓨팅 노드의 로컬 디스크에 다운로드됩니다.

Glance 이미지를 다운로드하는 프로세스는 이미지 크기 및 대역폭 및 대기 시간 등의 네트워크 특성에 따라 가변적인 시간이 걸립니다.

인스턴스를 시작하려고 시도하고 로컬인 Ceph 클러스터의 에서 이미지를 사용할 수 없는 경우 다음 메시지가 표시되고 인스턴스를 시작하지 못합니다.

Build of instance 3c04e982-c1d1-4364-b6bd-f876e399325b aborted: Image 20c5ff9d-5f54-4b74-830f-88e78b9999ed is unacceptable: No image locations are accessible

Compute 서비스 로그에는 다음이 표시됩니다.

'Image %s is not on my ceph and [workarounds]/ never_download_image_if_on_rbd=True; refusing to fetch and upload.',

DCN 배포에 대해 기본적으로 true 로 설정된 nova _download_image_if_on_rbd라는 nova.conf 구성 파일의 매개 변수로 인해 인스턴스가 시작되지 않습니다. dcn-hci.yaml 파일에서 찾을 수 있는 heat 매개변수 NovaDisableImageDownloadToRbd 를 사용하여 이 값을 제어할 수 있습니다.

오버클라우드를 배포하기 전에 NovaDisableImageDownloadToRbd 값을 false로 설정하면 다음이 발생합니다.

  • 계산 서비스(nova)는 로컬에서 사용할 수 없는 경우 중앙 위치에서 사용할 수 있는 이미지를 자동으로 스트리밍합니다.
  • Glance 이미지의 COW 복사본은 사용하지 않습니다.
  • 계산(nova) 스토리지에는 사용하는 인스턴스 수에 따라 동일한 이미지의 복사본이 여러 개 포함될 수 있습니다.
  • 중앙 위치뿐만 아니라 nova 스토리지 풀에 대한 WAN 링크도 포화할 수 있습니다.

Red Hat은 이 값을 true로 설정하고 인스턴스를 시작하기 전에 필요한 이미지를 로컬에서 사용할 수 있는지 확인하는 것이 좋습니다. 에지에서 이미지를 사용할 수 있도록 만드는 방법에 대한 자세한 내용은 A.1.3절. “새 사이트에 이미지 복사” 을 참조하십시오.

로컬 이미지의 경우 tripleo_nova_image _cache.yml ansible 플레이북을 사용하여 가까운 장래에 배포할 가능성이 있는 일반적으로 사용되는 이미지 또는 이미지를 미리 캐시하도록 tripleo_nova_image_cache.yml Ansible 플레이북을 사용하여 VM 생성 속도를 높일 수 있습니다.

9.1. tripleo_nova_image_cache.yml ansible 플레이북 실행

사전 요구 사항

  • 쉘 환경에서 올바른 API에 대한 인증 자격 증명.

각 단계에서 제공된 명령을 먼저 올바른 인증 파일을 제공했는지 확인해야 합니다.

절차

  1. 스택의 ansible 인벤토리 파일을 생성합니다. 쉼표로 구분된 목록에 여러 스택을 지정하여 둘 이상의 사이트에서 이미지를 캐시할 수 있습니다.

    $ source stackrc
    
    $ tripleo-ansible-inventory --plan central,dcn0,dcn1 \
    --static-yaml-inventory inventory.yaml
  2. 사전 캐시할 이미지 ID 목록을 생성합니다.

    1. 사용 가능한 이미지의 포괄적인 목록을 검색합니다.

      $ source centralrc
      
      $ openstack image list
      +--------------------------------------+---------+--------+
      | ID                                   | Name    | Status |
      +--------------------------------------+---------+--------+
      | 07bc2424-753b-4f65-9da5-5a99d8383fe6 | image_0 | active |
      | d5187afa-c821-4f22-aa4b-4e76382bef86 | image_1 | active |
      +--------------------------------------+---------+--------+
    2. nova_cache_args.yml 이라는 ansible 플레이북 인수 파일을 생성하고, 사전 캐시하려는 이미지의 ID를 추가합니다.

      ---
      tripleo_nova_image_cache_images:
        - id: 07bc2424-753b-4f65-9da5-5a99d8383fe6
        - id: d5187afa-c821-4f22-aa4b-4e76382bef86
  3. tripleo_nova_image_cache.yml ansible 플레이북을 실행합니다.

    $ source centralrc
    
    $ ansible-playbook -i inventory.yaml \
    --extra-vars "@nova_cache_args.yml" \
    /usr/share/ansible/tripleo-playbooks/tripleo_nova_image_cache.yml

9.2. 성능 고려 사항

ansible forks 매개변수를 사용하여 동시에 다운로드하려는 이미지 수를 지정할 수 있습니다. 기본값은 5 입니다. forks 매개 변수의 값을 늘려 이 이미지를 배포하는 시간을 줄일 수 있지만, 이 값을 network 및 glance-api 부하 증가와 함께 균형을 조정해야 합니다.

--forks 매개변수를 사용하여 다음과 같이 동시성을 조정합니다.

ansible-playbook -i inventory.yaml \
--forks 10 \
--extra-vars "@nova_cache_args.yml" \
/usr/share/ansible/tripleo-playbooks/tripleo_nova_image_cache.yml

9.3. DCN 사이트에 이미지 배포 최적화

Glance 이미지 배포에 프록시를 사용하여 WAN 트래픽을 줄일 수 있습니다. 프록시를 구성할 때 다음을 수행합니다.

  • Glance 이미지는 프록시 역할을 하는 단일 컴퓨팅 노드에 다운로드됩니다.
  • 프록시는 Glance 이미지를 인벤토리의 다른 컴퓨팅 노드에 재배포합니다.

다음 매개 변수를 nova_cache_args.yml ansible 인수 파일에 배치하여 프록시 노드를 구성할 수 있습니다.

이미지 캐시 프록시를 활성화하려면 tripleo_nova_image_cache_use_proxy 매개 변수를 true로 설정합니다.

이미지 프록시는 보안 복사 scp 를 사용하여 인벤토리의 다른 노드에 이미지를 배포합니다. SCP는 DCN 사이트 간 WAN과 같이 대기 시간이 길어진 네트워크보다 비효율적입니다. 플레이북 타겟을 단일 DCN 위치로 제한하는 것이 좋습니다. 이 위치는 단일 스택과 관련이 있습니다.

tripleo_nova_image_cache_proxy_hostname 매개 변수를 사용하여 이미지 캐시 프록시를 선택합니다. 기본 프록시는 ansible 인벤토리 파일의 첫 번째 계산 노드입니다. tripleo_nova_image_cache_plan 매개변수를 사용하여 플레이북 인벤토리를 단일 사이트로 제한합니다.

tripleo_nova_image_cache_use_proxy: true
tripleo_nova_image_cache_proxy_hostname: dcn0-novacompute-1
tripleo_nova_image_cache_plan: dcn0

9.4. nova-cache 정리 구성

백그라운드 프로세스는 다음 조건이 모두 true일 때 nova 캐시에서 이미지를 제거하기 위해 주기적으로 실행됩니다.

  • 인스턴스에서 이미지를 사용하지 않습니다.
  • 이미지의 수명은 nova 매개 변수 remove_unused_original_minimum_age_seconds 값보다 큽니다.

remove_unused_original_minimum_age_seconds 매개변수의 기본값은 86400 입니다. 값은 초 단위로 표시되며 24시간과 같습니다. 초기 배포 중 NovaImageCachTTL tripleo-heat-templates 매개변수를 사용하거나 클라우드를 스택 업데이트하는 동안 이 값을 제어할 수 있습니다.

parameter_defaults:
  NovaImageCacheTTL: 604800 # Default to 7 days for all compute roles
  Compute2Parameters:
    NovaImageCacheTTL: 1209600 # Override to 14 days for the Compute2 compute role

Compute 노드에 이미 있는 이미지를 미리 캐시하도록 플레이북에 지시하면 ansible에서 변경 사항을 보고하지 않지만 이미지의 사용 기간은 0으로 재설정됩니다. NovaImageCacheTTL 매개변수 값보다 더 자주 ansible 플레이를 실행하여 이미지 캐시를 유지 관리합니다.

10장. TLS-e for DCN

분산 계산 노드 인프라용으로 설계된 클라우드에서 TLS(전송 계층 보안)를 활성화할 수 있습니다. 공용 액세스를 위해 TLS를 활성화하거나 모든 내부 및 외부 데이터 흐름에서 암호화를 허용하는 TLS-e를 사용하는 모든 네트워크에서 TLS를 활성화하는 옵션이 있습니다.

에지 사이트에 공용 엔드포인트가 없으므로 에지 스택에서 공용 액세스를 활성화할 수 없습니다. 공용 액세스용 TLS에 대한 자세한 내용은 Enabling SSL/TLS on Overcloud Public Endpoints 를 참조하십시오.

10.1. TLS-e를 사용하여 분산 컴퓨팅 노드 아키텍처 배포

사전 요구 사항

Red Hat Identity Manager(IdM)를 사용하여 RHOSP(Red Hat OpenStack Platform) 분산 컴퓨팅 노드 아키텍처에서 TLS-e를 구성하는 경우 Red Hat Identity Manager용으로 배포된 Red Hat Enterprise Linux 버전을 기반으로 다음 작업을 수행합니다.

Red Hat Enterprise Linux 8.4
  1. Red Hat Identity Management 노드에서 ipa-ext.conf 파일에서 ACL에 신뢰할 수 있는 서브넷을 허용했습니다.
 acl "trusted_network" {
   localnets;
   localhost;
   192.168.24.0/24;
   192.168.25.0/24;
 };
  1. /etc/named/ipa-options-ext.conf 파일에서 재귀 및 쿼리 캐시를 허용합니다.

    allow-recursion { trusted_network; };
    allow-query-cache { trusted_network; };
  2. 'named-pkcs11 서비스를 다시 시작하십시오.

    systemctl restart named-pkcs11
Red Hat Enterprise Linux 8.2
RHEL (Red Hat Enterprise Linux) 8.2에 Red Hat Identity Manager (IdM)가 있는 경우 Red Hat Enterprise Linux를 업그레이드한 다음 RHEL 8.4 지침을 따라야 합니다.
Red Hat Enterprise Linux 7.x
RHEL (Red Hat Enterprise Linux) 7.x에 Red Hat IdM (Identity Manager)이 있는 경우 도메인 이름에 대해 수동으로 액세스 제어 명령 (ACI)을 추가해야 합니다. 예를 들어 도메인 이름이 redhat.local 인 경우 Red Hat Identity Manager에서 다음 명령을 실행하여 ACI를 구성합니다.
ADMIN_PASSWORD=redhat_01
DOMAIN_LEVEL_1=local
DOMAIN_LEVEL_2=redhat

cat << EOF | ldapmodify -x -D "cn=Directory Manager" -w ${ADMIN_PASSWORD}
dn: cn=dns,dc=${DOMAIN_LEVEL_2},dc=${DOMAIN_LEVEL_1}
changetype: modify
add: aci
aci: (targetattr = "aaaarecord || arecord || cnamerecord || idnsname || objectclass || ptrrecord")(targetfilter = "(&(objectclass=idnsrecord)(|(aaaarecord=)(arecord=)(cnamerecord=)(ptrrecord=)(idnsZoneActive=TRUE)))")(version 3.0; acl "Allow hosts to read DNS A/AAA/CNAME/PTR records"; allow (read,search,compare) userdn = "ldap:///fqdn=*,cn=computers,cn=accounts,dc=${DOMAIN_LEVEL_2},dc=${DOMAIN_LEVEL_1}";)
EOF

절차

DCN(분산 계산 노드) 아키텍처의 경우 이전 novajoin 방법과 달리 TLS -e를 구현하는 ansible 기반 tripleo-ipa 방법을 사용해야 합니다. tripleo-ipa 를 사용하여 TLS를 배포하는 방법에 대한 자세한 내용은 Ansible을 사용한 TLS 구현에서 참조하십시오.

DCN 아키텍처용 tripleo-ipa 를 사용하여 TLS-e를 배포하려면 다음 단계도 완료해야 합니다.

  1. 에지에 스토리지를 배포하는 경우 에지 스택에 대해 수정된 tripleo heat 템플릿에 다음 매개변수를 포함합니다.

    TEMPLATES=/usr/share/openstack-tripleo-heat-templates
    
    resource_registry:
      OS::TripleO::Services::IpaClient:
        ${TEMPLATES}/deployment/ipa/ipaservices-baremetal-ansible.yaml
    
    parameter_defaults:
      EnableEtcdInternalTLS: true

중앙 위치와 에지 위치 간의 설계 차이로 인해 에지 스택에 다음 파일을 포함하지 마십시오.

tls-everywhere-endpoints-dns.yaml
이 파일은 에지 사이트에서 무시되며 설정하는 끝점은 중앙 스택에서 내보낸 엔드포인트에서 재정의합니다.
haproxy-public-tls-certmonger.yaml
이 파일은 에지에 공용 엔드포인트가 없기 때문에 배포가 실패합니다.

11장. 외부 액세스를 위한 Ceph 키 생성

Ceph 스토리지에 대한 외부 액세스는 로컬이 아닌 모든 사이트에서 Ceph에 액세스할 수 있습니다. 기본 위치에 있는 Ceph 스토리지는 DCN(엣지) 사이트 외부이며 에지의 Ceph 스토리지가 중앙 위치의 외부에 있기 때문입니다.

Ceph 스토리지를 사용하여 중앙 또는 DCN 사이트를 배포할 때 로컬 및 외부 액세스 모두에 기본 openstack 인증 키를 사용할 수 있습니다. 또는 로컬이 아닌 사이트로 액세스하기 위한 별도의 키를 만들 수 있습니다.

외부 사이트에 액세스하기 위해 추가 Ceph 키를 사용하기로 결정한 경우 각 키의 이름은 동일해야 합니다. 다음 예제에서 키 이름은 외부 입니다.

비로컬 사이트 액세스에 별도의 키를 사용하는 경우 로컬 액세스를 중단하지 않고 보안 이벤트에 응답하여 외부 키를 취소하고 다시 발급할 수 있는 추가적인 보안 이점이 있습니다. 그러나 외부 액세스에 별도의 키를 사용하면 가용성 영역 간 백업 및 오프라인 볼륨 마이그레이션과 같은 일부 기능에 대한 액세스가 손실됩니다. 보안 포스처의 요구 사항을 원하는 기능 세트와 균형을 맞춰야 합니다.

기본적으로 중앙 및 DCN 사이트의 키는 공유됩니다.

11.1. 외부 액세스를 위한 Ceph 키 생성

로컬이 아닌 액세스에 대한 외부 키를 생성하려면 다음 단계를 완료합니다.

프로세스

  1. 외부 액세스를 위한 Ceph 키를 만듭니다. 이 키는 민감합니다. 다음을 사용하여 키를 생성할 수 있습니다.

    python3 -c 'import os,struct,time,base64; key = os.urandom(16) ; \
    header = struct.pack("<hiih", 1, int(time.time()), 0, len(key)) ; \
    print(base64.b64encode(header + key).decode())'
  2. 배포 중인 스택의 디렉터리에서 키에 대해 이전 명령의 출력을 사용하여 다음과 같은 내용으로 ceph_keys.yaml 환경 파일을 생성합니다.

    parameter_defaults:
      CephExtraKeys:
        - name: "client.external"
          caps:
            mgr: "allow *"
            mon: "profile rbd"
            osd: "profile rbd pool=vms, profile rbd pool=volumes, profile rbd pool=images"
          key: "AQD29WteAAAAABAAphgOjFD7nyjdYe8Lz0mQ5Q=="
          mode: "0600"
  3. 사이트 배포에 ceph_keys.yaml 환경 파일을 포함합니다. 예를 들어 ceph_keys.yaml 환경 파일을 사용하여 를 사용하여 중앙 사이트를 배포하려면 다음과 같은 명령을 실행합니다.

     overcloud deploy \
             --stack central \
             --templates /usr/share/openstack-tripleo-heat-templates/ \
             ….
             -e ~/central/ceph_keys.yaml

11.2. 외부 Ceph 키 사용

이미 배포된 키만 사용할 수 있습니다. 외부 키를 사용하여 사이트 배포에 대한 자세한 내용은 11.1절. “외부 액세스를 위한 Ceph 키 생성” 을 참조하십시오. 중앙 사이트와 에지 사이트에 대해 이 작업을 수행해야 합니다.

  • 중앙에서 제공하는 외부 키를 사용하는 에지 사이트를 배포하는 경우 다음을 완료합니다.

    1. 에지 사이트에 사용할 dcn_ceph_external.yaml 환경 파일을 만듭니다. 포함할 배포된 키를 지정하려면 cephx-key-client-name 옵션을 포함해야 합니다.

      sudo -E openstack overcloud export ceph \
      --stack central \
      --config-download-dir /var/lib/mistral \
      --cephx-key-client-name external \
      --output-file ~/dcn-common/dcn_ceph_external.yaml
    2. 에지 사이트에서 중앙 사이트의 Ceph 클러스터에 액세스할 수 있도록 dcn_ceph_external.yaml 파일을 포함합니다. ceph_keys.yaml 파일을 포함하여 에지 사이트에 Ceph 클러스터의 외부 키를 배포합니다.
  • 에지 사이트를 배포한 후 중앙 위치를 업데이트하는 경우 dcn 외부 키를 사용할 중앙 위치를 확인하십시오.

    1. CephClientUserName 매개변수가 내보낼 키와 일치하는지 확인합니다. 다음 예제와 같이 외부 이름을 사용하는 경우 다음과 유사하게 glance_update.yaml 을 생성합니다.

        parameter_defaults:
          GlanceEnabledImportMethods: web-download,copy-image
          GlanceBackend: rbd
          GlanceStoreDescription: 'central rbd glance store'
          CephClusterName: central
          GlanceBackendID: central
          GlanceMultistoreConfig:
          dcn0:
             GlanceBackend: rbd
            GlanceStoreDescription: 'dcn0 rbd glance store'
            CephClientUserName: 'external'
            CephClusterName: dcn0
            GlanceBackendID: dcn0
          dcn1:
            GlanceBackend: rbd
            GlanceStoreDescription: 'dcn1 rbd glance store'
            CephClientUserName: 'external'
            CephClusterName: dcn1
            GlanceBackendID: dcn1
    2. openstack overcloud export ceph 명령을 사용하여 중앙 위치에서 DCN 에지 액세스의 외부 키를 포함합니다. 이렇게 하려면 --stack 인수에 대해 쉼표로 구분된 스택 목록을 제공하고 cephx-key-client-name 옵션을 포함해야 합니다.

      sudo -E openstack overcloud export ceph \
      --stack dcn0,dcn1,dcn2 \
      --config-download-dir /var/lib/mistral \
      --cephx-key-client-name external \
      --output-file ~/central/dcn_ceph_external.yaml
    3. 원본 템플릿을 사용하여 중앙 사이트를 다시 배포하고 새로 생성된 dcn_ceph_external.yamlglance_update.yaml 파일을 포함합니다.

      openstack overcloud deploy \
             --stack central \
             --templates /usr/share/openstack-tripleo-heat-templates/ \
             -r ~/central/central_roles.yaml \
          ...
             -e /usr/share/openstack-tripleo-heat-templates/environments/ceph-ansible/ceph-ansible.yaml \
             -e /usr/share/openstack-tripleo-heat-templates/environments/nova-az-config.yaml \
             -e ~/central/central-images-env.yaml \
             -e ~/central/role-counts.yaml \
             -e ~/central/site-name.yaml
             -e ~/central/ceph.yaml \
             -e ~/central/ceph_keys.yaml \
             -e ~/central/glance.yaml \
             -e ~/central/dcn_ceph_external.yaml

부록 A. 배포 마이그레이션 옵션

이 섹션에는 DCN 스토리지의 유효성 검사, 마이그레이션 또는 변경 아키텍처와 관련된 주제가 포함되어 있습니다.

A.1. 에지 스토리지 검증

glance 다중 저장소 및 인스턴스 생성을 테스트하여 중앙 및 에지 사이트의 배포가 작동하는지 확인합니다.

로컬 파일 시스템에서 사용할 수 있거나 웹 서버에서 사용할 수 있는 이미지를 Glance로 가져올 수 있습니다.

참고

중앙 위치에 이미지를 사용하는 인스턴스가 없어도 항상 중앙 사이트에 이미지 복사본을 저장합니다.

사전 요구 사항

  1. glance stores-info 명령을 사용하여 이미지 서비스를 통해 사용할 수 있는 저장소를 확인합니다. 다음 예제에서는 세 개의 저장소( central, dcn1, dcn2)를 사용할 수 있습니다. 이들은 각각 중앙 위치 및 에지 사이트에 있는 Glance 저장소에 해당합니다.

      $ glance stores-info
      +----------+----------------------------------------------------------------------------------+
      | Property | Value                                                                            |
      +----------+----------------------------------------------------------------------------------+
      | stores   | [{"default": "true", "id": "central", "description": "central rbd glance         |
      |          | store"}, {"id": "dcn0", "description": "dcn0 rbd glance store"},                 |
      |          | {"id": "dcn1", "description": "dcn1 rbd glance store"}]                          |
      +----------+----------------------------------------------------------------------------------+

A.1.1. 로컬 파일에서 가져오기

먼저 이미지를 중앙 위치의 저장소에 업로드한 다음 이미지를 원격 사이트에 복사해야 합니다.

  1. 이미지 파일이 RAW 형식인지 확인합니다. 이미지가 원시 형식이 아닌 경우 이미지를 이미지 서비스로 가져오기 전에 변환해야 합니다.

    file cirros-0.5.1-x86_64-disk.img
    cirros-0.5.1-x86_64-disk.img: QEMU QCOW2 Image (v3), 117440512 bytes
    
    qemu-img convert -f qcow2 -O raw cirros-0.5.1-x86_64-disk.img cirros-0.5.1-x86_64-disk.raw
    Import the image into the default back end at the central site:
    glance image-create \
    --disk-format raw --container-format bare \
    --name cirros --file cirros-0.5.1-x86_64-disk.raw \
    --store central

A.1.2. 웹 서버에서 이미지 가져오기

이미지가 웹 서버에서 호스팅되는 경우 GlanceImageImportPlugins 매개 변수를 사용하여 이미지를 여러 저장소에 업로드할 수 있습니다.

이 절차에서는 기본 이미지 변환 플러그인이 glance에서 활성화되었다고 가정합니다. 이 기능은 QCOW2 파일 형식을 Ceph RBD에 가장 적합한 RAW 이미지로 자동 변환합니다. glance image -show ID | grep disk_format을 실행하여 glance 이미지가 RAW 형식인지 확인할 수 있습니다.

절차

  1. glance 명령의 image-create-via-import 매개 변수를 사용하여 웹 서버에서 이미지를 가져옵니다. stores 매개 변수를 사용합니다.

    # glance image-create-via-import \
    --disk-format qcow2 \
    --container-format bare \
    --name cirros \
    --uri http://download.cirros-cloud.net/0.4.0/cirros-0.4.0-x86_64-disk.img \
    --import-method web-download \
    --stores central,dcn1

    이 예제에서 qcow2 cirros 이미지는 공식 Cirros 사이트에서 다운로드되어 glance를 통해 RAW로 변환되고 --stores 매개 변수에 지정된 대로 중앙 사이트 및 에지 사이트 1로 가져옵니다.

또는 --stores를 -- all-stores True 로 교체하여 이미지를 모든 저장소에 업로드할 수 있습니다.

A.1.3. 새 사이트에 이미지 복사

기존 이미지를 중앙 위치에서 에지 사이트로 복사하면 이전에 생성된 이미지에 액세스할 수 있습니다.

  1. 복사 작업에 glance 이미지의 UUID를 사용합니다.

    ID=$(openstack image show cirros -c id -f value)
    
    glance image-import $ID --stores dcn0,dcn1 --import-method copy-image
    참고

    이 예제에서 --stores 옵션은 cirros 이미지가 중앙 사이트에서 에지 사이트 dcn1 및 dcn2로 복사되도록 지정합니다. 또는 현재 이미지가 없는 모든 저장소에 이미지를 업로드하는 --all-stores True 옵션을 사용할 수도 있습니다.

  2. 각 저장소에 이미지의 사본이 있는지 확인합니다. 속성 맵의 마지막 항목인 stores 키는 central, dcn0,dcn1 로 설정됩니다.

      $ openstack image show $ID | grep properties
      | properties       | direct_url=rbd://d25504ce-459f-432d-b6fa-79854d786f2b/images/8083c7e7-32d8-4f7a-b1da-0ed7884f1076/snap, locations=[{u'url: u'rbd://d25504ce-459f-432d-b6fa-79854d786f2b/images/8083c7e7-32d8-4f7a-b1da-0ed7884f1076/snap', u'metadata': {u'store': u'central'}}, {u'url': u'rbd://0c10d6b5-a455-4c4d-bd53-8f2b9357c3c7/images/8083c7e7-32d8-4f7a-b1da-0ed7884f1076/snap', u'metadata': {u'store': u'dcn0'}}, {u'url': u'rbd://8649d6c3-dcb3-4aae-8c19-8c2fe5a853ac/images/8083c7e7-32d8-4f7a-b1da-0ed7884f1076/snap', u'metadata': {u'store': u'dcn1'}}], os_glance_failed_import=', os_glance_importing_to_stores=', os_hash_algo='sha512, os_hash_value=b795f047a1b10ba0b7c95b43b2a481a59289dc4cf2e49845e60b194a911819d3ada03767bbba4143b44c93fd7f66c96c5a621e28dff51d1196dae64974ce240e, os_hidden=False, stores=central,dcn0,dcn1 |
참고

해당 사이트에 VM을 사용하는 VM이 없어도 항상 중앙 사이트에 이미지 사본을 저장합니다.

A.1.4. 에지 사이트의 인스턴스가 이미지 기반 볼륨을 사용하여 부팅할 수 있는지 확인

에지 사이트의 이미지를 사용하여 영구 루트 볼륨을 만들 수 있습니다.

절차

  1. 생성할 이미지의 ID를 볼륨으로 식별하고 해당 ID를 openstack volume create 명령에 전달합니다.

    IMG_ID=$(openstack image show cirros -c id -f value)
    openstack volume create --size 8 --availability-zone dcn0 pet-volume-dcn0 --image $IMG_ID
  2. 새로 생성된 볼륨의 볼륨 ID를 확인하고 openstack server create 명령에 전달합니다.

    VOL_ID=$(openstack volume show -f value -c id pet-volume-dcn0)
    openstack server create --flavor tiny --key-name dcn0-key --network dcn0-network --security-group basic --availability-zone dcn0 --volume $VOL_ID pet-server-dcn0
  3. dcn0 에지 사이트의 ceph-mon 컨테이너 내에서 rbd 명령을 실행하여 volumes 풀을 나열하여 볼륨이 이미지를 기반으로 하는지 확인할 수 있습니다.

    $ sudo podman exec ceph-mon-$HOSTNAME rbd --cluster dcn0 -p volumes ls -l
    NAME                                      SIZE  PARENT                                           FMT PROT LOCK
    volume-28c6fc32-047b-4306-ad2d-de2be02716b7 8 GiB images/8083c7e7-32d8-4f7a-b1da-0ed7884f1076@snap   2      excl
    $
  4. 인스턴스의 루트 볼륨의 cinder 스냅샷을 만들 수 있는지 확인합니다. 서버가 quiesce 데이터로 중지되어 명확한 스냅샷을 만듭니다. 인스턴스가 꺼져 있을 때 볼륨 상태가 그대로 유지되므로 --force 옵션을 사용합니다.

    openstack server stop pet-server-dcn0
    openstack volume snapshot create pet-volume-dcn0-snap --volume $VOL_ID --force
    openstack server start pet-server-dcn0
  5. dcn0 Ceph 클러스터에서 volumes 풀의 콘텐츠를 나열하여 새로 생성된 스냅샷을 표시합니다.

    $ sudo podman exec ceph-mon-$HOSTNAME rbd --cluster dcn0 -p volumes ls -l
    NAME                                                                                      SIZE  PARENT                                           FMT PROT LOCK
    volume-28c6fc32-047b-4306-ad2d-de2be02716b7                                               8 GiB images/8083c7e7-32d8-4f7a-b1da-0ed7884f1076@snap   2      excl
    volume-28c6fc32-047b-4306-ad2d-de2be02716b7@snapshot-a1ca8602-6819-45b4-a228-b4cd3e5adf60 8 GiB images/8083c7e7-32d8-4f7a-b1da-0ed7884f1076@snap   2 yes

A.1.5. 사이트 간에 이미지 스냅샷을 만들고 복사할 수 있는지 확인

  1. dcn0 사이트에 새 이미지를 만들 수 있는지 확인합니다. 서버가 quiesce 데이터로 중지되어 명확한 스냅샷을 생성합니다.

    NOVA_ID=$(openstack server show pet-server-dcn0 -f value -c id)
    openstack server stop $NOVA_ID
    openstack server image create --name cirros-snapshot $NOVA_ID
    openstack server start $NOVA_ID
  2. dcn0 에지 사이트의 이미지를 다시 hub 위치로 복사합니다. 이 위치는 glance의 기본 백엔드입니다.

    IMAGE_ID=$(openstack image show cirros-snapshot -f value -c id)
    glance image-import $IMAGE_ID --stores central --import-method copy-image

glance 다중 저장소 작업에 대한 자세한 내용은 여러 저장소가 있는 이미지 서비스를 참조하십시오.

A.2. 스파인 및 리프 배포로 마이그레이션

기존의 네트워크 구성으로 기존 네트워크 구성을 사용하여 기존 클라우드를 스파인 아키텍처가 있는 클라우드로 마이그레이션할 수 있습니다. 이를 위해서는 다음 조건이 필요합니다.

  • 모든 베어 메탈 포트에는 물리 네트워크 속성 값이 ctlplane 으로 설정되어 있어야 합니다.
  • 매개 변수 enable_routed_networks 가 추가되고 undercloud.conf에서 true 로 설정되고 언더클라우드 설치 명령 openstack undercloud install 을 다시 실행합니다.

Undercloud가 다시 배포되면 Overcloud는 단일 리프린이 있는 스파인 리프로 간주됩니다. 다음 단계를 통해 배포에 더 많은 프로비저닝을 추가할 수 있습니다.

  1. 언더클라우드의 라우팅된 스파인-리프형 구성과 같이 undercloud.conf에 원하는 서브넷을 추가합니다.
  2. 언더클라우드 설치 명령, openstack undercloud install 을 다시 실행합니다.
  3. 필요한 추가 네트워크와 역할을 Overcloud 템플릿, network_data.yamlroles_data.yaml 에 각각 추가합니다.

    참고

    네트워크 구성 파일에서 {{network.name}}InterfaceRoutes 매개변수를 사용하는 경우 NetworkDeploymentActions 매개변수에 UPDATE 값이 포함되어 있는지 확인해야 합니다.

      NetworkDeploymentActions: ['CREATE','UPDATE'])
  4. 마지막으로 클라우드 배포에 필요한 모든 heat 템플릿을 포함하는 오버클라우드 설치 스크립트를 다시 실행합니다.

A.3. 다중 스택 배포로 마이그레이션

기존 배포를 중앙 사이트로 처리하고 에지 사이트를 추가하여 단일 스택 배포에서 다중 스택 배포로 마이그레이션할 수 있습니다.

이 릴리스에서 단일에서 다중 스택으로 마이그레이션하는 기능은 기술 프리뷰 이므로 Red Hat에서 완전히 지원하지 않습니다. 테스트 용도로만 사용해야 하며 프로덕션 환경에 배포해서는 안 됩니다. 기술 프리뷰 기능에 대한 자세한 내용은 적용 범위 상세 정보를 참조하십시오.

기존 스택을 분할할 수 없습니다. 필요한 경우 기존 스택을 축소하여 컴퓨팅 노드를 제거할 수 있습니다. 그런 다음 이러한 계산 노드를 에지 사이트에 추가할 수 있습니다.

참고

이 작업은 모든 계산 노드가 제거되면 워크로드 중단이 발생합니다.

A.4. 에지 사이트에 백업 및 복원

에지 사이트 및 가용성 영역의 DCN(분산 계산 노드) 아키텍처에서 Block Storage 서비스(cinder) 볼륨을 백업하고 복원할 수 있습니다. cinder-backup 서비스는 AZ(중앙 가용 영역)에서 실행되며 백업은 중앙 AZ에 저장됩니다. 블록 스토리지 서비스는 DCN 사이트에 백업을 저장하지 않습니다.

사전 요구 사항

  • 중앙 사이트는 /usr/share/openstack -tripleo-heat-templates/environments에 있는 cinder- backup.yaml 환경 파일을 사용하여 배포됩니다. 자세한 내용은 Block Storage 백업 서비스 배포를 참조하십시오.
  • Block Storage 서비스(cinder) CLI를 사용할 수 있습니다.
  • 모든 사이트는 일반적인 openstack cephx 클라이언트 이름을 사용해야 합니다. 자세한 내용은 외부 액세스를 위한 Ceph 키 생성을 참조하십시오.

절차

  1. 첫 번째 DCN 사이트에 볼륨 백업을 생성합니다.

    $ cinder --os-volume-api-version 3.51 backup-create --name <volume_backup> --availability-zone <az_central> <edge_volume>
    • <volume_backup> 을 볼륨 백업의 이름으로 바꿉니다.
    • <az_central>cinder-backup 서비스를 호스팅하는 중앙 가용성 영역의 이름으로 바꿉니다.
    • <edge_volume> 을 백업할 볼륨 이름으로 교체합니다.

      참고

      Ceph 인증 키에 문제가 있는 경우 키 링이 호스트에서 컨테이너로 복사되도록 cinder-backup 컨테이너를 다시 시작해야 할 수 있습니다.

  2. 두 번째 DCN 사이트에서 백업을 새 볼륨으로 복원합니다.

    $ cinder --os-volume-api-version 3.51 create --availability-zone <az_2> --name <new_volume> --backup-id <volume_backup> <volume_size>
    • <az_2> 를 백업을 복원하려는 가용성 영역의 이름으로 바꿉니다.
    • <new_volume> 을 새 볼륨의 이름으로 바꿉니다.
    • <volume_backup> 을 이전 단계에서 생성한 볼륨 백업의 이름으로 바꿉니다.
    • <volume_size> 를 원래 볼륨의 크기보다 같거나 큰 값으로 바꿉니다.