2장. 설정 예: 외부 HAProxy 로드 밸런서가 있는 오버클라우드

이 예제 구성은 페더레이션 HAProxy 서버를 사용하여 외부 부하 분산을 제공하는 오버클라우드를 보여줍니다. 환경 요구 사항에 따라 다른 외부 로드 밸런서를 선택할 수 있습니다.

예제 구성에는 다음 요소가 포함됩니다.

  • HAProxy를 실행하는 외부 로드 밸런싱 서버입니다.
  • RHOSP(Red Hat OpenStack Platform) director 노드 1개.
  • 고가용성 클러스터와 컴퓨팅 노드 1개에 컨트롤러 노드 3개로 구성된 오버클라우드
  • VLAN을 통한 네트워크 격리.

이 예제에서는 각 네트워크에 대해 다음 IP 주소 할당을 사용합니다.

  • 내부 API: 172.16.20.0/24
  • 테넌트: 172.16.22.0/24
  • 스토리지: 172.16.21.0/24
  • 스토리지 관리: 172.16.19.0/24
  • external: 172.16.23.0/24

이러한 IP 범위에는 로드 밸런서가 OpenStack 서비스에 바인딩되는 컨트롤러 노드 및 가상 IP에 대한 IP가 포함됩니다.

2.1. HAProxy 구성 파일의 예

예제 파일은 내부 HAProxy 구성 매개 변수를 보여줍니다. 외부 로드 밸런서를 구성하기 위한 기준으로 샘플 구성 매개변수를 사용할 수 있습니다.

HAProxy 구성 파일에는 다음 섹션이 포함되어 있습니다.

  • 글로벌 구성
  • 기본값 구성
  • 서비스 구성

director는 컨테이너화되지 않은 환경에 대해 각 컨트롤러 노드의 /etc/haproxy/haproxy.conf 파일과 컨테이너화된 환경의 경우 /var/lib/config-data/puppet-generated/haproxy/etc/haproxy/haproxy.cfg 파일에 이 구성을 제공합니다.

참고

글로벌, 기본 및 서비스 매개변수 외에도 다른 HAProxy 매개변수도 구성해야 합니다. HAProxy 매개변수에 대한 자세한 내용은 Controller 노드의 /usr/share/doc/haproxy-*/configuration.txt 또는 haproxy 패키지가 설치된 모든 시스템에 있는 HAProxy 구성 설명서 를 참조하십시오.

HAProxy 구성 파일의 예

global
  daemon
  group  haproxy
  log  /dev/log local0
  maxconn  10000
  pidfile  /var/run/haproxy.pid
  user  haproxy

defaults
  log  global
  mode  tcp
  retries  3
  timeout  http-request 10s
  timeout  queue 1m
  timeout  connect 10s
  timeout  client 1m
  timeout  server 1m
  timeout  check 10s

listen aodh
  bind 172.16.20.250:8042
  bind 172.16.20.250:8042
  mode http
  server overcloud-controller-0 172.16.20.150:8042 check fall 5 inter 2000 rise 2
  server overcloud-controller-1 172.16.20.151:8042 check fall 5 inter 2000 rise 2
  server overcloud-controller-2 172.16.20.252:8042 check fall 5 inter 2000 rise 2

listen ceilometer
  bind 172.16.20.250:8777
  bind 172.16.23.250:8777
  server overcloud-controller-0 172.16.20.150:8777 check fall 5 inter 2000 rise 2
  server overcloud-controller-1 172.16.20.151:8777 check fall 5 inter 2000 rise 2
  server overcloud-controller-2 172.16.20.152:8777 check fall 5 inter 2000 rise 2

listen cinder
  bind 172.16.20.250:8776
  bind 172.16.23.250:8776
  server overcloud-controller-0 172.16.20.150:8776 check fall 5 inter 2000 rise 2
  server overcloud-controller-1 172.16.20.151:8776 check fall 5 inter 2000 rise 2
  server overcloud-controller-2 172.16.20.152:8776 check fall 5 inter 2000 rise 2

listen glance_api
  bind 172.16.23.250:9292
  bind 172.16.21.250:9292
  server overcloud-controller-0 172.16.21.150:9292 check fall 5 inter 2000 rise 2
  server overcloud-controller-1 172.16.21.151:9292 check fall 5 inter 2000 rise 2
  server overcloud-controller-2 172.16.21.152:9292 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

listen gnocchi
  bind 172.16.23.250:8041
  bind 172.16.21.250:8041
  mode http
  server overcloud-controller-0 172.16.20.150:8041 check fall 5 inter 2000 rise 2
  server overcloud-controller-1 172.16.20.151:8041 check fall 5 inter 2000 rise 2
  server overcloud-controller-2 172.16.20.152:8041 check fall 5 inter 2000 rise 2

listen heat_api
  bind 172.16.20.250:8004
  bind 172.16.23.250:8004
  mode http
  server overcloud-controller-0 172.16.20.150:8004 check fall 5 inter 2000 rise 2
  server overcloud-controller-1 172.16.20.151:8004 check fall 5 inter 2000 rise 2
  server overcloud-controller-2 172.16.20.152:8004 check fall 5 inter 2000 rise 2

listen heat_cfn
  bind 172.16.20.250:8000
  bind 172.16.23.250:8000
  server overcloud-controller-0 172.16.20.150:8000 check fall 5 inter 2000 rise 2
  server overcloud-controller-1 172.16.20.152:8000 check fall 5 inter 2000 rise 2
  server overcloud-controller-2 172.16.20.151:8000 check fall 5 inter 2000 rise 2

listen heat_cloudwatch
  bind 172.16.20.250:8003
  bind 172.16.23.250:8003
  server overcloud-controller-0 172.16.20.150:8003 check fall 5 inter 2000 rise 2
  server overcloud-controller-1 172.16.20.151:8003 check fall 5 inter 2000 rise 2
  server overcloud-controller-2 172.16.20.152:8003 check fall 5 inter 2000 rise 2

listen horizon
  bind 172.16.20.250:80
  bind 172.16.23.250:80
  mode http
  cookie SERVERID insert indirect nocache
  server overcloud-controller-0 172.16.20.150:80 check fall 5 inter 2000 rise 2
  server overcloud-controller-1 172.16.20.151:80 check fall 5 inter 2000 rise 2
  server overcloud-controller-2 172.16.20.152:80 check fall 5 inter 2000 rise 2

listen keystone_admin
  bind 172.16.23.250:35357
  bind 172.16.20.250:35357
  server overcloud-controller-0 172.16.20.150:35357 check fall 5 inter 2000 rise 2
  server overcloud-controller-1 172.16.20.151:35357 check fall 5 inter 2000 rise 2
  server overcloud-controller-2 172.16.20.152:35357 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

listen keystone_public
  bind 172.16.20.250:5000
  bind 172.16.23.250:5000
  server overcloud-controller-0 172.16.20.150:5000 check fall 5 inter 2000 rise 2
  server overcloud-controller-1 172.16.20.151:5000 check fall 5 inter 2000 rise 2
  server overcloud-controller-2 172.16.20.152:5000 check fall 5 inter 2000 rise 2

listen mysql
  bind 172.16.20.250:3306
  option tcpka
  option httpchk
  stick on dst
  stick-table type ip size 1000
  timeout client 0
  timeout server 0
  server overcloud-controller-0 172.16.20.150:3306 backup check fall 5 inter 2000 on-marked-down shutdown-sessions port 9200 rise 2
  server overcloud-controller-1 172.16.20.151:3306 backup check fall 5 inter 2000 on-marked-down shutdown-sessions port 9200 rise 2
  server overcloud-controller-2 172.16.20.152:3306 backup check fall 5 inter 2000 on-marked-down shutdown-sessions port 9200 rise 2

listen neutron
  bind 172.16.20.250:9696
  bind 172.16.23.250:9696
  server overcloud-controller-0 172.16.20.150:9696 check fall 5 inter 2000 rise 2
  server overcloud-controller-1 172.16.20.151:9696 check fall 5 inter 2000 rise 2
  server overcloud-controller-2 172.16.20.152:9696 check fall 5 inter 2000 rise 2

listen nova_ec2
  bind 172.16.20.250:8773
  bind 172.16.23.250:8773
  server overcloud-controller-0 172.16.20.150:8773 check fall 5 inter 2000 rise 2
  server overcloud-controller-1 172.16.20.151:8773 check fall 5 inter 2000 rise 2
  server overcloud-controller-2 172.16.20.152:8773 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

listen nova_novncproxy
  bind 172.16.20.250:6080
  bind 172.16.23.250:6080
  balance source
  server overcloud-controller-0 172.16.20.150:6080 check fall 5 inter 2000 rise 2
  server overcloud-controller-1 172.16.20.151:6080 check fall 5 inter 2000 rise 2
  server overcloud-controller-2 172.16.20.152:6080 check fall 5 inter 2000 rise 2

listen nova_osapi
  bind 172.16.20.250:8774
  bind 172.16.23.250:8774
  server overcloud-controller-0 172.16.20.150:8774 check fall 5 inter 2000 rise 2
  server overcloud-controller-1 172.16.20.151:8774 check fall 5 inter 2000 rise 2
  server overcloud-controller-2 172.16.20.152:8774 check fall 5 inter 2000 rise 2

listen nova_placement
  bind 172.16.20.250:8778
  bind 172.16.23.250:8778
  mode http
  server overcloud-controller-0 172.16.20.150:8778 check fall 5 inter 2000 rise 2
  server overcloud-controller-1 172.16.20.151:8778 check fall 5 inter 2000 rise 2
  server overcloud-controller-2 172.16.20.152:8778 check fall 5 inter 2000 rise 2

listen panko
  bind 172.16.20.250:8779 transparent
  bind 172.16.23.250:8779 transparent
  server overcloud-controller-0 172.16.20.150:8779 check fall 5 inter 2000 rise 2
  server overcloud-controller-1 172.16.20.151:8779 check fall 5 inter 2000 rise 2
  server overcloud-controller-2 172.16.20.152:8779 check fall 5 inter 2000 rise 2

listen redis
  bind 172.16.20.249:6379
  balance first
  option tcp-check
  tcp-check send AUTH\ p@55w0rd!\r\n
  tcp-check send PING\r\n
  tcp-check expect string +PONG
  tcp-check send info\ replication\r\n
  tcp-check expect string role:master
  tcp-check send QUIT\r\n
  tcp-check expect string +OK
  server overcloud-controller-0 172.16.20.150:6379 check fall 5 inter 2000 rise 2
  server overcloud-controller-1 172.16.20.151:6379 check fall 5 inter 2000 rise 2
  server overcloud-controller-2 172.16.20.152:6379 check fall 5 inter 2000 rise 2

listen swift_proxy_server
  bind 172.16.23.250:8080
  bind 172.16.21.250:8080
  server overcloud-controller-0 172.16.21.150:8080 check fall 5 inter 2000 rise 2
  server overcloud-controller-1 172.16.21.151:8080 check fall 5 inter 2000 rise 2
  server overcloud-controller-2 172.16.21.152:8080 check fall 5 inter 2000 rise 2

2.1.1. 전역 구성 매개변수: HAProxy 구성 파일의 예

글로벌 구성 parameters 섹션에서는 로드 밸런서에 대한 프로세스 수준 매개 변수 집합을 정의합니다. 구성 파일에서 예제 매개변수를 사용하여 외부 로드 밸런서를 구성할 수 있습니다. 환경에 따라 매개변수 값을 조정합니다.

전역 구성 매개변수

global
  daemon
  user  haproxy
  group  haproxy
  log  /dev/log local0
  maxconn  10000
  pidfile  /var/run/haproxy.pid

예에서는 다음 매개 변수를 보여줍니다.

  • daemon: 백그라운드 프로세스로 실행합니다.
  • 사용자 haproxy그룹 haproxy: 프로세스를 소유한 Linux 사용자 및 그룹을 정의합니다.
  • log: 사용할 syslog 서버를 정의합니다.
  • maxconn: 프로세스에 대한 최대 동시 연결 수를 설정합니다.
  • pidfile: 프로세스 ID에 사용할 파일을 설정합니다.

2.1.2. 기본 값 구성 매개변수: HAProxy 구성 파일의 예

기본 값 구성 매개변수 섹션에서는 외부 로드 밸런서 서비스를 실행할 때 사용할 기본값 세트를 정의합니다. 구성 파일에서 예제 매개변수를 사용하여 외부 로드 밸런서를 구성할 수 있습니다. 환경에 따라 매개변수 값을 조정합니다.

기본값 구성 매개변수

defaults
  log  global
  mode  tcp
  retries  3
  timeout  http-request 10s
  timeout  queue 1m
  timeout  connect 10s
  timeout  client 1m
  timeout  server 1m
  timeout  check 10s

예에서는 다음 매개 변수를 보여줍니다.

  • log: 서비스에 대한 로깅을 활성화합니다. global 값은 로깅 함수가 global 섹션의 로그 매개변수를 사용한다는 것을 의미합니다.
  • 모드: 사용할 프로토콜을 정의합니다. 이 경우 기본값은 TCP입니다.
  • retries: 연결 오류를 보고하기 전에 서버에서 수행할 재시도 횟수를 설정합니다.
  • timeout: 특정 함수를 기다리는 최대 시간을 설정합니다. 예를 들어 timeout http-request 는 완전한 HTTP 요청에 대해 대기하는 최대 시간을 설정합니다.

2.1.3. 서비스 수준 구성 매개변수: HAProxy 구성 파일의 예

서비스 수준 구성 매개 변수 섹션에서는 특정 RHOSP(Red Hat OpenStack Platform) 서비스에 트래픽을 로드할 때 사용할 매개 변수 집합을 정의합니다. 구성 파일에서 예제 매개변수를 사용하여 외부 로드 밸런서를 구성할 수 있습니다. 환경에 따라 매개변수 값을 조정하고, 로드 밸런싱하려는 각 서비스의 섹션을 복사합니다.

서비스 수준 구성 매개변수

이 예에서는 ceilometer 서비스의 구성 매개 변수를 보여줍니다.

listen ceilometer
  bind 172.16.20.250:8777
  bind 172.16.23.250:8777
  server overcloud-controller-0 172.16.20.150:8777 check fall 5 inter 2000 rise 2
  server overcloud-controller-1 172.16.20.151:8777 check fall 5 inter 2000 rise 2
  server overcloud-controller-2 172.16.20.152:8777 check fall 5 inter 2000 rise 2

균형을 조정하려는 각 서비스는 구성 파일의 섹션에 일치해야 합니다. 각 서비스 구성에는 다음 매개변수가 포함됩니다.

  • 수신 대기: 요청을 수신하는 서비스의 이름입니다.
  • bind: 서비스에서 수신 대기하는 IP 주소 및 TCP 포트 번호입니다. 각 서비스는 다른 네트워크 트래픽 유형을 나타내는 다른 주소를 바인딩합니다.
  • server: 서비스를 제공하는 각 서버의 이름, 서버 IP 주소 및 수신 포트, 연결 매개 변수:
  • 확인: (선택 사항) 상태 점검을 활성화합니다.
  • fall 5: (선택 사항) 5개의 상태 점검이 실패한 후 서비스는 오프라인으로 간주됩니다.
  • 2000 년 중: (선택 사항) 연속된 두 상태 점검 간격은 2000밀리초 또는 2초로 설정됩니다.
  • 상승된 2: (선택 사항) 두 가지 상태 점검 후 서비스가 작동하는 것으로 간주됩니다.

ceilometer 예에서 서비스는 ceilometer 서비스가 172.16.20.2500:8777172.16.23.250:8777 로 제공되는 IP 주소와 포트를 식별합니다. 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)로 지시합니다.