External Load Balancing for the Overcloud
외부 로드 밸런서를 사용하도록 OpenStack Platform 환경 구성
초록
1장. 소개 링크 복사링크가 클립보드에 복사되었습니다!
Red Hat OpenStack Platform director는 Overcloud 라는 클라우드 환경을 생성합니다. Overcloud에는 특정 역할을 수행하는 다양한 노드 유형 세트가 포함되어 있습니다. 이러한 노드 유형 중 하나는 컨트롤러 노드입니다. 컨트롤러는 Overcloud 관리를 담당하며 특정 OpenStack 구성 요소를 사용합니다. Overcloud는 여러 컨트롤러를 고가용성 클러스터로 사용하여 OpenStack 서비스의 최대 운영 성능을 보장합니다. 또한 클러스터는 OpenStack 서비스에 대한 액세스를 위한 로드 밸런싱을 제공하므로 컨트롤러 노드에 트래픽을 균등하게 분배하고 각 노드의 서버 과부하를 줄입니다.
외부 로드 밸런서를 사용하여 이 배포를 수행할 수도 있습니다. 예를 들어 조직에서 자체 하드웨어 기반 로드 밸런서를 사용하여 컨트롤러 노드에 대한 트래픽 배포를 처리할 수 있습니다. 이 가이드에서는 외부 로드 밸런서 및 Overcloud 생성 모두에 대한 구성을 정의하는 데 필요한 세부 정보를 제공합니다. 여기에는 다음 프로세스가 포함됩니다.
- 로드 밸런서 설치 및 구성 - 이 가이드에는 로드 밸런싱 및 서비스를 위한 몇 가지 HAProxy 옵션이 포함되어 있습니다. 설정을 외부 로드 밸런서와 동일하게 변환합니다.
- Overcloud 구성 및 배포 - 이 가이드에는 Overcloud 가 외부 로드 밸런서와 통합되는 데 도움이 되는 몇 가지 Heat 템플릿 매개변수가 포함되어 있습니다. 이는 주로 로드 밸런서 및 잠재적 노드의 IP 주소를 포함합니다. 이 가이드에는 외부 로드 밸런서를 사용하도록 Overcloud 배포 및 해당 구성을 시작하는 명령도 포함되어 있습니다.
1.1. Overcloud에서 Load Balancing 사용 링크 복사링크가 클립보드에 복사되었습니다!
Overcloud는 HAProxy 라는 오픈 소스 툴을 사용합니다. HAProxy는 트래픽을 OpenStack 서비스를 실행하는 컨트롤러 노드에 분산합니다. haproxy 패키지에는 haproxy systemd 서비스에서 시작하여 로깅 기능 및 샘플 구성과 함께 haproxy 데몬이 포함되어 있습니다. 그러나 Overcloud는 고가용성 서비스(haproxy-clone)로 HAProxy 자체를 제어하기 위해 Pacemaker(고가용성 리소스 관리자)를 사용합니다. 즉, HAProxy는 각 컨트롤러 노드에서 실행되고 각 구성에 정의된 규칙 세트에 따라 트래픽을 분산합니다.
1.2. 시나리오 정의 링크 복사링크가 클립보드에 복사되었습니다!
이 문서에서는 다음 시나리오를 예로 사용합니다.
- HAProxy를 사용하는 외부 로드 대역폭 서버입니다. 이를 통해 페더레이션 HAProxy 서버를 사용하는 방법을 보여줍니다. 지원되는 다른 외부 로드 밸런서에 이를 대체할 수 있습니다.
- OpenStack Platform director 노드 1개
- 다음과 같이 구성된 오버클라우드입니다.
- 고가용성 클러스터의 컨트롤러 노드 3개
- 컴퓨팅 노드 1개
- VLAN을 사용한 네트워크 격리
시나리오는 각 네트워크에 대해 다음 IP 주소 할당을 사용합니다.
- 내부 API: 172.16.20.0/24
- 테넌트: 172.16.22.0/24
- 스토리지: 172.16.21.0/24
- 스토리지 관리: 172.16.19.0/24
- 외부: 172.16.23.0/24
이러한 IP 범위에는 컨트롤러 노드의 IP 할당과 로드 밸런서가 OpenStack 서비스에 바인딩되는 가상 IP가 포함됩니다.
2장. 기본 구성 정의 링크 복사링크가 클립보드에 복사되었습니다!
외부 로드 밸런서 없이 Overcloud를 생성하고 구성할 때 director는 여러 OpenStack 서비스에 트래픽을 배포하도록 HAProxy를 구성합니다. director는 각 컨트롤러 노드의 /etc/haproxy/haproxy.conf 파일에 이 설정을 제공합니다. 기본 구성에는 global, defaults 및 여러 서비스 구성의 세 가지 주요 부분이 포함되어 있습니다.
다음 몇 섹션에서는 각 구성 섹션의 기본 매개변수를 살펴봅니다. 이는 외부 로드 밸런서를 설치 및 구성하기 위한 구성 설정의 예를 제공합니다. 이러한 매개변수는 전체 HAProxy 매개변수의 일부에 불과합니다. 이러한 매개변수 및 기타 매개변수에 대한 자세한 내용은 컨트롤러 노드의 /usr/share/doc/haproxy-*/configuration.txt (또는 haproxy 패키지가 설치된 시스템)에 있는 "HAProxy 구성 수동"을 참조하십시오.
2.1. 글로벌 구성 링크 복사링크가 클립보드에 복사되었습니다!
이 섹션에서는 프로세스 전체 매개변수 세트를 정의합니다. 여기에는 다음이 포함됩니다.
- daemon: 백그라운드 프로세스로 실행됩니다.
- user haproxy,group haproxy: 프로세스를 소유한 Linux 사용자 및 그룹을 정의합니다.
- log: 사용할 syslog 서버를 정의합니다.
- maxconn: 프로세스에 대한 최대 동시 연결 수를 설정합니다.
- PIDFILE: 프로세스 ID에 사용할 파일을 설정합니다.
2.2. 기본값 설정 링크 복사링크가 클립보드에 복사되었습니다!
이 섹션에서는 각 서비스에 대한 기본 매개변수 세트를 정의합니다. 여기에는 다음이 포함됩니다.
- Log: 서비스에 대한 로깅을 활성화합니다. 전역 값은 로깅 함수가 global 섹션의 로그 매개 변수를 사용한다는 것을 의미합니다.
- mode: 사용할 프로토콜을 설정합니다. 이 경우 기본값은 TCP입니다.
- retry: 연결 실패를 보고하기 전에 서버에서 수행할 재시도 횟수를 설정합니다.
- timeout: 특정 함수를 대기할 최대 시간을 설정합니다. 예를 들어 timeout http-request 는 전체 HTTP 요청을 대기할 최대 시간을 설정합니다.
2.3. 서비스 구성 링크 복사링크가 클립보드에 복사되었습니다!
기본 파일에는 여러 서비스 구성 섹션이 있습니다. 각 서비스 구성에는 다음이 포함됩니다.
- listen: 요청을 수신하는 서비스의 이름
- bind: 서비스가 수신 대기하는 IP 주소 및 TCP 포트 번호입니다.
- server: 서비스를 제공하는 각 서버의 이름, 서버의 IP 주소 및 수신 포트 및 기타 정보입니다.
위의 예제에서는 ceilometer 서비스의 HAProxy 설정을 보여줍니다. 이 서비스는 ceilometer 서비스가 제공되는 IP 주소와 포트를 식별합니다(172.16.20.2500 및 172.16.23.250에서 포트 8777). HAProxy는 해당 주소에 대한 요청을 overcloud-controller-0 (172.16.20.150:8777), overcloud-controller-1 (172.16.20.151:8777) 또는 overcloud-controller-2 (172.16.0.152:8777)로 전달합니다.
또한 예제 서버 매개변수는 다음을 활성화합니다.
- Check: 상태 점검 활성화
- fall 5: 실패한 상태 점검 후 서비스가 종료된 것으로 간주됩니다.
- 2000년 간: 연속된 두 개의 상태 점검 간격을 2000밀리초(또는 2초)로 설정합니다.
- 상승 2: 두 개의 성공적인 상태 점검 후 서버는 작동으로 간주됩니다.
각 서비스는 다른 네트워크 트래픽 유형을 나타내는 다른 주소에 바인딩됩니다. 또한 일부 서비스에는 추가 구성 옵션이 포함되어 있습니다. 다음 장에서는 외부 로드 밸런서에 이러한 세부 정보를 복제할 수 있도록 각 특정 서비스 구성을 검사합니다.
3장. 서비스 구성 참조 링크 복사링크가 클립보드에 복사되었습니다!
이 장에서는 로드 밸런싱을 사용하는 Overcloud의 각 특정 서비스에 대한 구성에 대해 간단히 설명합니다. 이 구성을 자체 외부 로드 밸런서를 구성하는 가이드로 사용하십시오. 이러한 매개변수 및 기타 매개변수에 대한 자세한 내용은 컨트롤러 노드의 /usr/share/doc/haproxy-*/configuration.txt (또는 haproxy 패키지가 설치된 시스템)에 있는 "HAProxy 구성 수동"을 참조하십시오.
대부분의 서비스에서는 기본 상태 점검 구성을 사용합니다.
- 두 연속 상태 점검 간격을 2000밀리초(또는 2초)로 설정합니다.
- 두 개의 성공적인 상태 점검 후 서버는 작동으로 간주됩니다.
- 5개의 실패한 상태 점검 후 서비스는 dead로 간주됩니다.
각 서비스에는 기타 정보 섹션의 일부로 기본 상태 점검이 포함됩니다. mysql 서비스 상태 점검의 포트 변형을 확인합니다.
3.1. ceilometer 링크 복사링크가 클립보드에 복사되었습니다!
포트 번호: 8777
바인딩 대상: internal _api, external
대상 네트워크/서버: overcloud-controller-0, overcloud-controller-1 및 overcloud-controller-2의 internal_api
기타 정보:
- 각 대상 서버는 기본 상태 점검을 사용합니다.
HAProxy 예:
3.2. cinder 링크 복사링크가 클립보드에 복사되었습니다!
포트 번호: 8776
바인딩 대상: internal _api, external
대상 네트워크/서버: overcloud-controller-0, overcloud-controller-1 및 overcloud-controller-2의 internal_api
기타 정보:
- 각 대상 서버는 기본 상태 점검을 사용합니다.
HAProxy 예:
3.3. glance_api 링크 복사링크가 클립보드에 복사되었습니다!
포트 번호: 9292
바인딩 대상: 스토리지, 외부
대상 네트워크/서버: overcloud-controller-0, overcloud-controller-1 및 overcloud-controller-2의 스토리지
기타 정보:
- 각 대상 서버는 기본 상태 점검을 사용합니다.
HAProxy 예:
3.4. glance_registry 링크 복사링크가 클립보드에 복사되었습니다!
포트 번호: 9191
바인딩 대상: internal_api
대상 네트워크/서버: overcloud-controller-0, overcloud-controller-1 및 overcloud-controller-2의 internal_api
기타 정보:
- 각 대상 서버는 기본 상태 점검을 사용합니다.
HAProxy 예:
listen glance_registry bind 172.16.20.250:9191 server overcloud-controller-0 172.16.20.150:9191 check fall 5 inter 2000 rise 2 server overcloud-controller-1 172.16.20.151:9191 check fall 5 inter 2000 rise 2 server overcloud-controller-2 172.16.20.152:9191 check fall 5 inter 2000 rise 2
listen glance_registry
bind 172.16.20.250:9191
server overcloud-controller-0 172.16.20.150:9191 check fall 5 inter 2000 rise 2
server overcloud-controller-1 172.16.20.151:9191 check fall 5 inter 2000 rise 2
server overcloud-controller-2 172.16.20.152:9191 check fall 5 inter 2000 rise 2
3.5. heat_api 링크 복사링크가 클립보드에 복사되었습니다!
포트 번호: 8004
바인딩 대상: internal _api, external
대상 네트워크/서버: overcloud-controller-0, overcloud-controller-1 및 overcloud-controller-2의 internal_api
기타 정보:
- 각 대상 서버는 기본 상태 점검을 사용합니다.
- 이 서비스는 기본 TCP 모드 대신 HTTP 모드를 사용합니다.
HAProxy 예:
3.6. heat_cfn 링크 복사링크가 클립보드에 복사되었습니다!
포트 번호: 8000
바인딩 대상: internal _api, external
대상 네트워크/서버: overcloud-controller-0, overcloud-controller-1 및 overcloud-controller-2의 internal_api
기타 정보:
- 각 대상 서버는 기본 상태 점검을 사용합니다.
HAProxy 예:
3.7. heat_cloudwatch 링크 복사링크가 클립보드에 복사되었습니다!
포트 번호: 8003
바인딩 대상: internal _api, external
대상 네트워크/서버: overcloud-controller-0, overcloud-controller-1 및 overcloud-controller-2의 internal_api
기타 정보:
- 각 대상 서버는 기본 상태 점검을 사용합니다.
HAProxy 예:
3.8. Horizon 링크 복사링크가 클립보드에 복사되었습니다!
포트 번호: 80
바인딩 대상: internal _api, external
대상 네트워크/서버: overcloud-controller-0, overcloud-controller-1 및 overcloud-controller-2의 internal_api
기타 정보:
- 각 대상 서버는 기본 상태 점검을 사용합니다.
- 이 서비스는 기본 TCP 모드 대신 HTTP 모드를 사용합니다.
- 이 서비스는 UI와의 상호 작용을 위해 쿠키 기반 지속성을 사용합니다.
HAProxy 예:
3.9. keystone_admin 링크 복사링크가 클립보드에 복사되었습니다!
포트 번호: 35357
바인딩 대상: internal _api, external
대상 네트워크/서버: overcloud-controller-0, overcloud-controller-1 및 overcloud-controller-2의 internal_api
기타 정보:
- 각 대상 서버는 기본 상태 점검을 사용합니다.
HAProxy 예:
3.10. keystone_admin_ssh 링크 복사링크가 클립보드에 복사되었습니다!
포트 번호: 22
바인딩 대상: internal_api
대상 네트워크/서버: overcloud-controller-0, overcloud-controller-1 및 overcloud-controller-2의 internal_api
기타 정보:
- 각 대상 서버는 기본 상태 점검을 사용합니다.
HAProxy 예:
listen keystone_admin_ssh bind 172.16.20.250:22 server overcloud-controller-0 172.16.20.150:22 check fall 5 inter 2000 rise 2 server overcloud-controller-1 172.16.20.151:22 check fall 5 inter 2000 rise 2 server overcloud-controller-2 172.16.20.152:22 check fall 5 inter 2000 rise 2
listen keystone_admin_ssh
bind 172.16.20.250:22
server overcloud-controller-0 172.16.20.150:22 check fall 5 inter 2000 rise 2
server overcloud-controller-1 172.16.20.151:22 check fall 5 inter 2000 rise 2
server overcloud-controller-2 172.16.20.152:22 check fall 5 inter 2000 rise 2
3.11. keystone_public 링크 복사링크가 클립보드에 복사되었습니다!
포트 번호: 5000
바인딩 대상: internal _api, external
대상 네트워크/서버: overcloud-controller-0, overcloud-controller-1 및 overcloud-controller-2의 internal_api
기타 정보:
- 각 대상 서버는 기본 상태 점검을 사용합니다.
HAProxy 예:
3.12. mysql 링크 복사링크가 클립보드에 복사되었습니다!
포트 번호: 3306
바인딩 대상: internal_api
대상 네트워크/서버: overcloud-controller-0, overcloud-controller-1 및 overcloud-controller-2의 internal_api
기타 정보:
- 각 대상 서버는 기본 상태 점검을 사용합니다. 그러나 상태 점검에서는 9200 포트를 사용합니다.
- 이 서비스는 한 번에 하나의 서버에만 부하를 분산합니다.
- 각 서버는 백업이 아닌 다른 모든 서버를 사용할 수 없는 경우에만 부하 분산에서 사용됩니다.
- 서버가 다운된 경우 모든 연결이 즉시 종료됩니다.
- 양쪽에 TCP keepalive 패킷 전송을 활성화합니다.
- HTTP 프로토콜을 활성화하여 서버 상태를 확인합니다.
- IP 주소를 저장하도록 고정 테이블을 구성합니다. 이는 지속성을 유지하는 데 도움이 됩니다.
mysql 서비스는 Galera를 사용하여 고가용성 데이터베이스 클러스터를 제공합니다. Galera는 활성/활성 구성을 지원하지만, 잠금 경합을 방지하기 위해 로드 밸런서에서 적용되는 활성/패시브 를 사용하는 것이 좋습니다.
HAProxy 예:
3.13. Neutron 링크 복사링크가 클립보드에 복사되었습니다!
포트 번호: 9696
바인딩 대상: internal _api, external
대상 네트워크/서버: overcloud-controller-0, overcloud-controller-1 및 overcloud-controller-2의 internal_api
기타 정보:
- 각 대상 서버는 기본 상태 점검을 사용합니다.
HAProxy 예:
3.14. nova_ec2 링크 복사링크가 클립보드에 복사되었습니다!
포트 번호: 8773
바인딩 대상: internal _api, external
대상 네트워크/서버: overcloud-controller-0, overcloud-controller-1 및 overcloud-controller-2의 internal_api
기타 정보:
- 각 대상 서버는 기본 상태 점검을 사용합니다.
HAProxy 예:
3.15. nova_metadata 링크 복사링크가 클립보드에 복사되었습니다!
포트 번호: 8775
바인딩 대상: internal_api
대상 네트워크/서버: overcloud-controller-0, overcloud-controller-1 및 overcloud-controller-2의 internal_api
기타 정보:
- 각 대상 서버는 기본 상태 점검을 사용합니다.
HAProxy 예:
listen nova_metadata bind 172.16.20.250:8775 server overcloud-controller-0 172.16.20.150:8775 check fall 5 inter 2000 rise 2 server overcloud-controller-1 172.16.20.151:8775 check fall 5 inter 2000 rise 2 server overcloud-controller-2 172.16.20.152:8775 check fall 5 inter 2000 rise 2
listen nova_metadata
bind 172.16.20.250:8775
server overcloud-controller-0 172.16.20.150:8775 check fall 5 inter 2000 rise 2
server overcloud-controller-1 172.16.20.151:8775 check fall 5 inter 2000 rise 2
server overcloud-controller-2 172.16.20.152:8775 check fall 5 inter 2000 rise 2
3.16. nova_novncproxy 링크 복사링크가 클립보드에 복사되었습니다!
포트 번호: 6080
바인딩 대상: internal _api, external
대상 네트워크/서버: overcloud-controller-0, overcloud-controller-1 및 overcloud-controller-2의 internal_api
기타 정보:
- 각 대상 서버는 기본 상태 점검을 사용합니다.
- 기본 분산 방법은 라운드 로빈입니다. 그러나 이 서비스에는 소스 방법을 사용합니다. 이 방법은 소스 IP 주소를 해시하고 실행 중인 서버의 총 가중치로 나눕니다. 요청을 수신하는 서버를 지정합니다. 이렇게 하면 서버가 다운되거나 가동되지 않는 한 동일한 클라이언트 IP 주소가 항상 동일한 서버에 도달할 수 있습니다. 실행 중인 서버 수 변경으로 인해 해시 결과가 변경되면 밸런서는 많은 클라이언트를 다른 서버로 리디렉션합니다.
HAProxy 예:
3.17. nova_osapi 링크 복사링크가 클립보드에 복사되었습니다!
포트 번호: 8774
바인딩 대상: internal _api, external
대상 네트워크/서버: overcloud-controller-0, overcloud-controller-1 및 overcloud-controller-2의 internal_api
기타 정보:
- 각 대상 서버는 기본 상태 점검을 사용합니다.
HAProxy 예:
3.18. Redis 링크 복사링크가 클립보드에 복사되었습니다!
포트 번호: 6379
바인딩 대상: internal _api(redis 서비스 IP)
대상 네트워크/서버: overcloud-controller-0, overcloud-controller-1 및 overcloud-controller-2의 internal_api
기타 정보:
- 각 대상 서버는 기본 상태 점검을 사용합니다.
- tcp-check send/expect 시퀀스를 사용하여 상태 점검을 수행합니다. 보낼 문자열은 "info\ replication\r\n"이고 응답은 "role:master"입니다.
-
Redis 서비스는 인증을 위해 암호를 사용합니다. 예를 들어 HAProxy 구성은
AUTH메서드 및 Redis 관리 암호를 사용하여 tcp-check 를 사용합니다. director는 일반적으로 임의의 암호를 생성하지만 사용자 지정 Redis 암호를 정의할 수 있습니다. 자세한 내용은 4.2.2절. “로드 밸런싱 옵션 구성”를 참조하십시오. - 기본 분산 방법은 라운드 로빈입니다. 그러나 이 서비스에는 첫 번째 방법을 사용합니다. 이렇게 하면 사용 가능한 연결 슬롯이 있는 첫 번째 서버가 연결을 수신하게 됩니다.
HAProxy 예:
3.19. swift_proxy_server 링크 복사링크가 클립보드에 복사되었습니다!
포트 번호: 8080
바인딩 대상: 스토리지, 외부
대상 네트워크/서버: overcloud-controller-0, overcloud-controller-1 및 overcloud-controller-2의 스토리지
기타 정보:
- 각 대상 서버는 기본 상태 점검을 사용합니다.
HAProxy 예:
4장. 오버클라우드 구성 링크 복사링크가 클립보드에 복사되었습니다!
이 섹션은 외부 로드 밸런서를 사용하는 오버클라우드 생성 프로세스를 통해 실행됩니다. 여기에는 노드 등록, 네트워크 설정 구성, Overcloud 생성 명령에 필요한 구성 옵션이 포함됩니다.
4.1. 환경 설정 링크 복사링크가 클립보드에 복사되었습니다!
다음 워크플로우를 사용하여 환경을 설정합니다.
- 노드 정의 템플릿을 생성하고 director에 빈 노드를 등록합니다.
- 모든 노드의 하드웨어를 검사합니다.
- 노드를 역할에 수동으로 태그합니다.
- 플레이버를 생성하고 역할에 태그를 지정합니다.
4.1.1. Stack 사용자 초기화 링크 복사링크가 클립보드에 복사되었습니다!
director 호스트에 stack 사용자로 로그인하고 다음 명령을 실행하여 director 설정을 초기화합니다.
source ~/stackrc
$ source ~/stackrc
이렇게 하면 director의 CLI 툴에 액세스하기 위해 인증 세부 정보가 포함된 환경 변수가 설정됩니다.
4.1.2. 노드 등록 링크 복사링크가 클립보드에 복사되었습니다!
노드 정의 템플릿(instackenv.json)은 JSON 형식 파일이며 노드 등록을 위한 하드웨어 및 전원 관리 세부 정보가 포함되어 있습니다. 예를 들면 다음과 같습니다.
템플릿을 생성한 후 stack 사용자의 홈 디렉터리(/home/stack/instackenv.json)에 저장한 다음 director로 가져옵니다. 이 작업을 수행하려면 다음 명령을 사용합니다.
openstack baremetal import --json ~/instackenv.json
$ openstack baremetal import --json ~/instackenv.json
템플릿을 가져오고 템플릿의 각 노드를 director에 등록합니다.
커널 및 램디스크 이미지를 모든 노드에 할당합니다.
openstack baremetal configure boot
$ openstack baremetal configure boot
이제 노드가 director에 등록 및 구성됩니다.
4.1.3. 노드의 하드웨어 검사 링크 복사링크가 클립보드에 복사되었습니다!
노드를 등록한 후 각 노드의 hardware 속성을 검사합니다. 다음 명령을 실행하여 각 노드의 하드웨어 속성을 확인합니다.
openstack baremetal introspection bulk start
$ openstack baremetal introspection bulk start
이 프로세스가 완료되었는지 확인합니다. 베어 메탈 노드의 경우 이 프로세스는 일반적으로 15분 정도 걸립니다.
4.1.4. 수동으로 노드 태그 지정 링크 복사링크가 클립보드에 복사되었습니다!
각 노드의 하드웨어를 등록하고 검사한 후 특정 프로필에 태그를 지정합니다. 이러한 프로필 태그에는 노드에 일치하는 플레이버가 배포 역할에 할당됩니다.
노드 목록을 검색하여 UUID를 확인합니다.
ironic node-list
$ ironic node-list
노드를 특정 프로필에 수동으로 태그하려면 profile 옵션을 각 노드의 properties/capabilities 매개변수에 추가합니다. 예를 들어 컨트롤러 프로필과 하나의 노드를 사용하도록 3개의 노드를 태그하여 compute 프로필을 사용하려면 다음 명령을 사용합니다.
ironic node-update 1a4e30da-b6dc-499d-ba87-0bd8a3819bc0 add properties/capabilities='profile:control,boot_option:local' ironic node-update 6faba1a9-e2d8-4b7c-95a2-c7fbdc12129a add properties/capabilities='profile:control,boot_option:local' ironic node-update 5e3b2f50-fcd9-4404-b0a2-59d79924b38e add properties/capabilities='profile:control,boot_option:local' ironic node-update 58c3d07e-24f2-48a7-bbb6-6843f0e8ee13 add properties/capabilities='profile:compute,boot_option:local'
$ ironic node-update 1a4e30da-b6dc-499d-ba87-0bd8a3819bc0 add properties/capabilities='profile:control,boot_option:local'
$ ironic node-update 6faba1a9-e2d8-4b7c-95a2-c7fbdc12129a add properties/capabilities='profile:control,boot_option:local'
$ ironic node-update 5e3b2f50-fcd9-4404-b0a2-59d79924b38e add properties/capabilities='profile:control,boot_option:local'
$ ironic node-update 58c3d07e-24f2-48a7-bbb6-6843f0e8ee13 add properties/capabilities='profile:compute,boot_option:local'
profile:compute 및 profile:control 옵션을 추가하면 노드를 각 프로필에 태그합니다.
4.2. 네트워크 구성 링크 복사링크가 클립보드에 복사되었습니다!
이 섹션에서는 Overcloud의 네트워크 구성을 검토합니다. 여기에는 특정 네트워크 트래픽을 사용하고 로드 밸런싱 옵션으로 Overcloud를 구성하기 위해 서비스를 격리하는 작업이 포함됩니다.
4.2.1. 네트워크 격리 링크 복사링크가 클립보드에 복사되었습니다!
director는 분리된 오버클라우드 네트워크를 구성하는 방법을 제공합니다. 즉, Overcloud 환경은 네트워크 트래픽 유형을 다른 네트워크로 분리하여 네트워크 트래픽을 특정 네트워크 인터페이스 또는 본딩에 할당합니다. 분리된 네트워크를 구성한 후 director는 격리된 네트워크를 사용하도록 OpenStack 서비스를 구성합니다. 격리된 네트워크가 구성되지 않은 경우 모든 서비스가 프로비저닝 네트워크에서 실행됩니다.
먼저 Overcloud에는 네트워크 인터페이스 템플릿 세트가 필요합니다. 이러한 템플릿을 사용자 지정하여 역할별로 노드 인터페이스를 구성합니다. 이러한 템플릿은 YAML 형식의 표준 Heat 템플릿입니다. director에는 시작하기 위한 예제 템플릿 세트가 포함되어 있습니다.
- /usr/share/openstack-tripleo-heat-templates/network/config/single-nic-vlans - 역할별로 VLAN을 구성하는 단일 NIC에 대한 템플릿이 포함된 디렉터리입니다.
- /usr/share/openstack-tripleo-heat-templates/network/config/bond-with-vlans - 역할별로 결합된 NIC 구성에 대한 템플릿이 포함된 디렉터리입니다.
네트워크 인터페이스 구성에 대한 자세한 내용은 6.2를 참조하십시오. Red Hat OpenStack Platform 8 Director 설치 및사용의 네트워크 격리
다음으로 네트워크 환경 파일을 만듭니다. 이 파일은 Overcloud의 네트워크 환경을 설명하고 네트워크 인터페이스 구성 템플릿을 가리키는 Heat 환경 파일입니다. 이 파일은 또한 IP 주소 범위와 함께 네트워크의 서브넷 및 VLAN을 정의합니다. 로컬 환경에 대해 이러한 값을 사용자 지정합니다.
이 시나리오에서는 /home/stack/network-environment.yaml 로 저장된 다음 네트워크 환경 파일을 사용합니다.
네트워크 환경 구성에 대한 자세한 내용은 6.2를 참조하십시오. Red Hat OpenStack Platform 8 Director 설치 및 사용 가이드의 네트워크 분리.
keystone_admin_ssh VIP에 연결할 수 있도록 director 호스트가 내부 API 네트워크에 액세스할 수 있는지 확인합니다.
4.2.2. 로드 밸런싱 옵션 구성 링크 복사링크가 클립보드에 복사되었습니다!
director는 외부 로드 밸런서가 HAProxy를 내부적으로 관리하는 대신 가상 IP를 호스팅하는 Overcloud를 생성하는 방법을 제공합니다. 이 구성에서는 Overcloud 배포가 시작되기 전에 여러 가상 IP가 격리된 네트워크당 하나 이상 Redis 서비스용으로 구성된 외부 로드 밸런서에 구성된 것으로 가정합니다. Overcloud 노드 NIC 구성이 허용하는 경우 일부 가상 IP가 같을 수 있습니다.
이전 장의 설정을 사용하여 외부 로드 밸런서를 구성했습니다. 이러한 설정에는 director가 Overcloud 노드에 할당하고 서비스 설정에 사용하는 IP가 포함됩니다.
다음은 외부 로드 밸런서를 사용하는 오버클라우드 구성이 포함된 Heat 환경 파일(external-lb.yaml)의 예입니다.
parameter_defaults 섹션에는 OpenStack의 각 네트워크에 대한 VIP 및 IP 할당이 포함되어 있습니다. 이러한 설정은 로드 밸런서의 각 서비스에 대해 동일한 IP 구성과 일치해야 합니다. 이 섹션에서는 Redis 서비스(RedisPassword)의 관리 암호도 정의합니다. 이 섹션에는 각 OpenStack 서비스를 특정 네트워크에 매핑하는 ServiceNetMap 매개변수도 포함되어 있습니다. 로드 밸런싱 구성을 사용하려면 이 서비스를 다시 매핑해야 합니다.
4.3. 로드 밸런싱을 위한 SSL 구성 링크 복사링크가 클립보드에 복사되었습니다!
Overcloud는 기본적으로 서비스에 암호화되지 않은 엔드포인트를 사용합니다. 즉, Overcloud 구성에 엔드포인트에 대해 SSL/TLS를 활성화하려면 추가 환경 파일이 필요합니다.
외부 로드 밸런서에 SSL 인증서 및 키의 사본이 설치되어 있는지 확인합니다.
Heat 템플릿 컬렉션에서 enable-tls.yaml 환경 파일을 복사합니다.
cp -r /usr/share/openstack-tripleo-heat-templates/environments/enable-tls.yaml ~/templates/.
$ cp -r /usr/share/openstack-tripleo-heat-templates/environments/enable-tls.yaml ~/templates/.
이 파일을 편집하고 다음을 수행합니다.
-
parameter_defaults섹션에서SSLCertificate,SSLIntermediateCertificate및SSLKey를 제거합니다. -
resource_registry섹션을 완전히 제거합니다. 남은 것은
parameter_defaults의EndpointMap매개변수입니다.EndpointMap에는 HTTPS 및 HTTP 통신을 사용하는 서비스 매핑이 포함되어 있습니다. SSL 통신에 DNS를 사용하는 경우 이 섹션을 기본값으로 둡니다. 그러나 SSL 인증서의 일반 이름에 IP 주소를 사용하는 경우CLOUDNAME의 모든 인스턴스를IP_ADDRESS로 바꿉니다. 이 작업을 수행하려면 다음 명령을 사용합니다.sed -i 's/CLOUDNAME/IP_ADDRESS/' ~/templates/enable-tls.yaml
$ sed -i 's/CLOUDNAME/IP_ADDRESS/' ~/templates/enable-tls.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 중요실제 값은
IP_ADDRESS또는CLOUDNAME을 대체하지 마십시오. Heat는 오버클라우드 생성 중에 이러한 변수를 적절한 값으로 바꿉니다.
자체 서명된 인증서 또는 인증서 서명자가 Overcloud 이미지의 기본 신뢰 저장소에 없는 경우 인증서를 Overcloud 이미지에 삽입합니다. Heat 템플릿 컬렉션에서 inject-trust-anchor.yaml 환경 파일을 복사합니다.
cp -r /usr/share/openstack-tripleo-heat-templates/environments/inject-trust-anchor.yaml ~/templates/.
$ cp -r /usr/share/openstack-tripleo-heat-templates/environments/inject-trust-anchor.yaml ~/templates/.
이 파일을 편집하고 이러한 매개변수에 대해 다음과 같이 변경합니다.
- SSLRootCertificate
루트 인증 기관 파일의 내용을
SSLRootCertificate매개변수에 복사합니다. 예를 들면 다음과 같습니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 중요인증 기관 콘텐츠에는 모든 새 행에 대해 동일한 들여쓰기 수준이 필요합니다.
- OS::TripleO::NodeTLSCAData
OS::TripleO::NodeTLSCAData:의 리소스 URL을 절대 URL로 변경합니다.resource_registry: OS::TripleO::NodeTLSCAData: /usr/share/openstack-tripleo-heat-templates/puppet/extraconfig/tls/ca-inject.yamlresource_registry: OS::TripleO::NodeTLSCAData: /usr/share/openstack-tripleo-heat-templates/puppet/extraconfig/tls/ca-inject.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
DNS 호스트 이름을 사용하여 SSL/TLS를 통해 Overcloud에 액세스하는 경우 새 환경 파일(~/templates/cloudname.yaml)을 생성하여 Overcloud 엔드포인트의 호스트 이름을 정의합니다. 다음 매개변수를 사용합니다.
- CloudName
- Overcloud 엔드포인트의 DNS 호스트 이름입니다.
- DnsServers
- 사용할 DNS 서버 목록입니다. 구성된 DNS 서버에는 공용 API의 IP와 일치하는 구성된 CloudName 항목이 포함되어야 합니다.
다음은 이 파일의 내용 예입니다.
parameter_defaults: CloudName: overcloud.example.com DnsServers: 10.0.0.1
parameter_defaults:
CloudName: overcloud.example.com
DnsServers: 10.0.0.1
4.4절. “오버클라우드 생성” 의 배포 명령(openstack overcloud deploy)은 -e 옵션을 사용하여 환경 파일을 추가합니다. 다음 순서로 이 섹션의 환경 파일을 추가합니다.
-
SSL/TLS를 활성화하는 환경 파일(
enable-tls.yaml) -
DNS 호스트 이름을 설정하는 환경 파일 (
cloudname.yaml) -
루트 인증 기관을 삽입할 환경 파일(
inject-trust-anchor.yaml)
예를 들면 다음과 같습니다.
openstack overcloud deploy --templates [...] -e /home/stack/templates/enable-tls.yaml -e ~/templates/cloudname.yaml -e ~/templates/inject-trust-anchor.yaml
$ openstack overcloud deploy --templates [...] -e /home/stack/templates/enable-tls.yaml -e ~/templates/cloudname.yaml -e ~/templates/inject-trust-anchor.yaml
4.4. 오버클라우드 생성 링크 복사링크가 클립보드에 복사되었습니다!
외부 로드 밸런서를 사용하는 Overcloud를 생성하려면 openstack overcloud deploy 명령에 추가 인수가 필요합니다. 예를 들면 다음과 같습니다.
openstack overcloud deploy --templates -e /usr/share/openstack-tripleo-heat-templates/environments/network-isolation.yaml -e ~/network-environment.yaml -e /usr/share/openstack-tripleo-heat-templates/environments/external-loadbalancer-vip.yaml -e ~/external-lb.yaml --control-scale 3 --compute-scale 1 --control-flavor control --compute-flavor compute [ADDITIONAL OPTIONS]
$ openstack overcloud deploy --templates -e /usr/share/openstack-tripleo-heat-templates/environments/network-isolation.yaml -e ~/network-environment.yaml -e /usr/share/openstack-tripleo-heat-templates/environments/external-loadbalancer-vip.yaml -e ~/external-lb.yaml --control-scale 3 --compute-scale 1 --control-flavor control --compute-flavor compute [ADDITIONAL OPTIONS]
위의 명령은 다음 옵션을 사용합니다.
- --templates - 기본 Heat 템플릿 컬렉션에서 Overcloud를 생성합니다.
- -e /usr/share/openstack-tripleo-heat-templates/environments/network-isolation.yaml - Overcloud 배포에 추가 환경 파일을 추가합니다. 이 경우 네트워크 격리 구성을 초기화하는 환경 파일입니다.
- -e ~/network-environment.yaml - Overcloud 배포에 추가 환경 파일을 추가합니다. 이 경우 이전에 생성한 네트워크 환경 파일입니다.
- -e /usr/share/openstack-tripleo-heat-templates/environments/external-loadbalancer-vip.yaml - 오버클라우드 배포에 추가 환경 파일을 추가합니다. 이 경우 외부 로드 밸런싱 구성을 초기화하는 환경 파일입니다. 네트워크 구성 파일 뒤에 이 환경 파일을 포함해야 합니다.
- -e ~/external-lb.yaml - Overcloud 배포에 추가 환경 파일을 추가합니다. 이 경우 외부 로드 밸런서 구성이 포함된 환경 파일입니다. 네트워크 구성 파일 뒤에 이 환경 파일을 포함해야 합니다.
- --control-scale 3 - 컨트롤러 노드를 3개로 확장합니다.
- --compute-scale 3 - 컴퓨팅 노드를 3개로 확장합니다.
- --control-flavor control - 컨트롤러 노드에 특정 플레이버를 사용합니다.
- --compute-flavor compute - 컴퓨팅 노드에 특정 플레이버를 사용합니다.
전체 옵션 목록은 다음을 실행합니다.
openstack help overcloud deploy
$ openstack help overcloud deploy
7.1도 참조하십시오. 매개 변수 예제는 Red Hat OpenStack Platform 8 Director 설치 및 사용 가이드에서 Overcloud Parameters 를 설정합니다.
Overcloud 생성 프로세스가 시작되고 director가 노드를 프로비저닝합니다. 이 프로세스를 완료하는 데 시간이 다소 걸립니다. Overcloud 생성 상태를 보려면 stack 사용자로 별도의 터미널을 열고 다음을 실행합니다.
source ~/stackrc heat stack-list --show-nested
$ source ~/stackrc
$ heat stack-list --show-nested
4.5. 오버클라우드 액세스 링크 복사링크가 클립보드에 복사되었습니다!
director는 director 호스트에서 Overcloud와의 상호 작용을 구성하고 인증을 지원하는 스크립트를 생성합니다. director는 overcloudrc 파일을 stack 사용자의 홈 디렉터리에 저장합니다. 이 파일을 사용하려면 다음 명령을 실행합니다.
source ~/overcloudrc
$ source ~/overcloudrc
이렇게 하면 director 호스트의 CLI에서 Overcloud와 상호 작용하는 데 필요한 환경 변수가 로드됩니다. director 호스트와의 상호 작용으로 돌아가려면 다음 명령을 실행합니다.
source ~/stackrc
$ source ~/stackrc
4.6. 오버클라우드 구성 완료 링크 복사링크가 클립보드에 복사되었습니다!
이렇게 하면 Advanced Overcloud 생성이 완료됩니다.
고가용성 클러스터를 펜싱하는 경우 8.6을 참조하십시오. Red Hat OpenStack Platform 8 Director 설치 및 사용 가이드에서 컨트롤러 노드 를 펜싱합니다.
생성 후 기능에 대해서는 Chapter 8을 참조하십시오. Red Hat OpenStack Platform 8 Director 설치 및 사용 가이드에서 오버클라우드 생성 후 작업 수행.
부록 A. 기본 HAProxy 구성 예 링크 복사링크가 클립보드에 복사되었습니다!
다음은 Overcloud 컨트롤러 노드의 HAProxy에 대한 기본 구성 파일의 예입니다. 이 파일은 각 컨트롤러 노드의 /etc/haproxy/haproxy.conf 에 있습니다.