오버클라우드의 External Load Balancing

Red Hat OpenStack Platform 17.0

외부 로드 밸런서를 사용하도록 Red Hat OpenStack Platform 환경 구성

OpenStack Documentation Team

초록

오버클라우드에 외부 로드 밸런서를 사용하도록 RHOSP(Red Hat OpenStack Platform) 환경을 구성합니다. 여기에는 Red Hat OpenStack Platform director를 사용한 오버클라우드의 로드 밸런서 및 설정에 대한 구성 지침이 포함됩니다.

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

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

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

문서 개선을 위한 의견을 보내 주십시오. 우리가 어떻게 그것을 더 잘 만들 수 있는지 알려주십시오.

Direct Documentation feedback(DDF) 함수 사용

특정 문장, 단락 또는 코드 블록에 대한 직접 코멘트를 위해서는 DDF 함수 추가 를 사용하십시오.

  1. Multi-page HTML 형식으로 설명서를 확인합니다.
  2. 문서의 오른쪽 위에 사용자 지정 단추가 표시되는지 확인합니다.Ensure that you see the Feedback button in the upper right corner of the document.
  3. 주석하려는 텍스트 부분을 강조 표시합니다.
  4. 피드백 추가를 클릭합니다.
  5. 코멘트와 함께 피드백 추가 필드를 완료합니다.
  6. 선택 사항: 문서 팀에서 문제 해결을 위해 연락할 수 있도록 이메일 주소를 추가하십시오.
  7. 제출을 클릭합니다.

1장. 외부 로드 밸런서를 사용하도록 오버클라우드 구성

RHOSP(Red Hat OpenStack Platform)에서 오버클라우드는 여러 Controller 노드를 고가용성 클러스터로 함께 사용하여 OpenStack 서비스의 운영 성능을 극대화합니다. 또한 클러스터는 OpenStack 서비스에 대한 부하 분산을 제공하여 트래픽을 컨트롤러 노드에 균등하게 분산하고 각 노드의 서버 과부하를 줄입니다.

기본적으로 오버클라우드는 HAProxy라는 오픈 소스 툴을 사용하여 로드 밸런싱을 관리합니다. HAProxy는 OpenStack 서비스를 실행하는 컨트롤러 노드에 대한 트래픽을 부하 분산합니다. haproxy 패키지에는 들어오는 트래픽을 수신 대기하는 haproxy 데몬과 로깅 기능 및 샘플 구성이 포함되어 있습니다.

또한 오버클라우드는 고가용성 리소스 관리자 Pacemaker를 사용하여 HAProxy를 고가용성 서비스로 제어합니다. 즉, HAProxy는 각 컨트롤러 노드에서 실행되고 각 구성에서 정의한 규칙 세트에 따라 트래픽을 분산합니다.

외부 로드 밸런서를 사용하여 이 배포를 수행할 수도 있습니다. 예를 들어 조직에서 전용 하드웨어 기반 로드 밸런서를 사용하여 컨트롤러 노드의 트래픽 배포를 처리할 수 있습니다. 외부 로드 밸런서 및 오버클라우드 생성에 대한 구성을 정의하려면 다음 프로세스를 수행합니다.

  1. 외부 로드 밸런서를 설치하고 구성합니다.
  2. 오버클라우드를 외부 로드 밸런서와 통합하기 위해 heat 템플릿 매개 변수를 사용하여 오버클라우드를 구성하고 배포합니다. 이를 위해서는 로드 밸런서 및 잠재적인 노드의 IP 주소가 필요합니다.

외부 로드 밸런서를 사용하도록 오버클라우드를 구성하기 전에 오버클라우드에서 고가용성을 배포하고 실행해야 합니다.

1.1. 외부 로드 밸런서를 위한 환경 준비

외부 로드 밸런서를 위해 환경을 준비하려면 먼저 노드 정의 템플릿을 생성하고 director에 빈 노드를 등록합니다. 그런 다음 모든 노드의 하드웨어를 검사하고 수동으로 노드를 프로필에 태그합니다.

다음 워크플로우를 사용하여 환경을 준비합니다.

  • 노드 정의 템플릿을 생성하고 Red Hat OpenStack Platform director에 빈 노드를 등록합니다. 노드 정의 템플릿 instackenv.json 은 JSON 형식 파일이며 노드를 등록할 하드웨어 및 전원 관리 세부 정보가 포함되어 있습니다.
  • 모든 노드의 하드웨어를 검사합니다. 이렇게 하면 모든 노드가 manageable 상태가 됩니다.
  • 노드를 프로필에 수동으로 태그합니다. 이러한 프로필 태그는 노드와 플레이버와 일치합니다. 그러면 플레이버가 배포 역할에 할당됩니다.

절차

  1. director 호스트에 stack 사용자로 로그인하고 director 자격 증명을 가져옵니다.

    $ source ~/stackrc
  2. instackenv.json 에서 노드 정의 템플릿을 생성하고 사용자 환경에 따라 다음 예제를 복사하고 편집합니다.

    {
        "nodes":[
            {
                "mac":[
                    "bb:bb:bb:bb:bb:bb"
                ],
                "cpu":"4",
                "memory":"6144",
                "disk":"40",
                "arch":"x86_64",
                "pm_type":"ipmi",
                "pm_user":"admin",
                "pm_password":"p@55w0rd!",
                "pm_addr":"192.0.2.205"
            },
            {
                "mac":[
                    "cc:cc:cc:cc:cc:cc"
                ],
                "cpu":"4",
                "memory":"6144",
                "disk":"40",
                "arch":"x86_64",
                "pm_type":"ipmi",
                "pm_user":"admin",
                "pm_password":"p@55w0rd!",
                "pm_addr":"192.0.2.206"
            },
            {
                "mac":[
                    "dd:dd:dd:dd:dd:dd"
                ],
                "cpu":"4",
                "memory":"6144",
                "disk":"40",
                "arch":"x86_64",
                "pm_type":"ipmi",
                "pm_user":"admin",
                "pm_password":"p@55w0rd!",
                "pm_addr":"192.0.2.207"
            },
            {
                "mac":[
                    "ee:ee:ee:ee:ee:ee"
                ],
                "cpu":"4",
                "memory":"6144",
                "disk":"40",
                "arch":"x86_64",
                "pm_type":"ipmi",
                "pm_user":"admin",
                "pm_password":"p@55w0rd!",
                "pm_addr":"192.0.2.208"
            }
        ]
    }
  3. stack 사용자의 홈 디렉터리인 /home/stack/instackenv.json 에 파일을 저장한 다음 director로 가져와서 노드를 director에 등록합니다.

    $ openstack overcloud node import ~/instackenv.json
  4. 커널 및 램디스크 이미지를 모든 노드에 할당합니다.

    $ openstack overcloud node configure
  5. 각 노드의 하드웨어 속성을 검사합니다.

    $ openstack overcloud node introspect --all-manageable
    중요

    노드가 manageable 상태에 있어야 합니다. 이 프로세스가 완료되었는지 확인합니다. 베어 메탈 노드의 경우 이 프로세스는 일반적으로 15분 정도 걸립니다.

  6. 노드 목록을 가져와 해당 UUID를 확인합니다.

    $ openstack baremetal node list
  7. 각 노드의 properties/capabilities 매개변수에 profile 옵션을 추가하여 각 노드를 특정 프로필에 수동으로 태그합니다. 예를 들어 컨트롤러 프로필과 컴퓨팅 프로필을 사용하려면 하나의 노드를 사용하도록 세 개의 노드를 태그하려면 다음 명령을 사용합니다.

    $ openstack baremetal node set 1a4e30da-b6dc-499d-ba87-0bd8a3819bc0 --property capabilities='profile:control,boot_option:local'
    $ openstack baremetal node set 6faba1a9-e2d8-4b7c-95a2-c7fbdc12129a --property capabilities='profile:control,boot_option:local'
    $ openstack baremetal node set 5e3b2f50-fcd9-4404-b0a2-59d79924b38e --property capabilities='profile:control,boot_option:local'
    $ openstack baremetal node set 58c3d07e-24f2-48a7-bbb6-6843f0e8ee13 --property capabilities='profile:compute,boot_option:local'

    profile:computeprofile:control 옵션은 각 해당 프로필에 노드를 태그합니다.

추가 리소스

1.2. 외부 로드 밸런서에 대한 오버클라우드 네트워크 구성

오버클라우드의 네트워크를 구성하려면 특정 네트워크 트래픽을 사용하도록 서비스를 격리한 다음 로컬 환경에 대한 네트워크 환경 파일을 구성합니다. 이 파일은 오버클라우드 네트워크 환경을 설명하고 네트워크 인터페이스 구성 템플릿을 가리키며 네트워크 및 IP 주소 범위의 서브넷 및 VLAN을 정의하는 heat 환경 파일입니다.

절차

  1. 각 역할에 대한 노드 인터페이스를 구성하려면 다음 네트워크 인터페이스 템플릿을 사용자 지정합니다.

    • 각 역할에 대해 단일 NIC를 사용하여 VLAN을 구성하려면 다음 디렉터리에서 예제 템플릿을 사용합니다.

      /usr/share/openstack-tripleo-heat-templates/network/config/single-nic-vlans
    • 각 역할에 대해 결합된 NIC를 구성하려면 다음 디렉터리에서 예제 템플릿을 사용합니다.

      /usr/share/openstack-tripleo-heat-templates/network/config/bond-with-vlans
  2. /home/stack/network-environment.yaml 에서 파일을 복사하고 환경에 따라 콘텐츠를 편집하여 네트워크 환경 파일을 생성합니다.

1.3. 외부 로드 밸런서 환경 파일 생성

외부 로드 밸런서를 사용하여 오버클라우드를 배포하려면 필요한 구성으로 새 환경 파일을 생성합니다. 이 예제 파일에서는 여러 가상 IP가 외부 로드 밸런서에 구성되어 있으며, Overcloud 배포를 시작하기 전에 여러 가상 IP가 격리된 각 네트워크에 하나의 가상 IP를, Redis 서비스용으로 하나씩 구성됩니다. 오버클라우드 노드 NIC 구성이 구성을 지원하는 경우 일부 가상 IP가 같을 수 있습니다.

절차

  • 다음 예제 환경 파일 external-lb.yaml 을 사용하여 환경 파일을 생성하고 환경에 따라 콘텐츠를 편집합니다.

    parameter_defaults:
      ControlFixedIPs: [{'ip_address':'192.0.2.250'}]
      PublicVirtualFixedIPs: [{'ip_address':'172.16.23.250'}]
      InternalApiVirtualFixedIPs: [{'ip_address':'172.16.20.250'}]
      StorageVirtualFixedIPs: [{'ip_address':'172.16.21.250'}]
      StorageMgmtVirtualFixedIPs: [{'ip_address':'172.16.19.250'}]
      RedisVirtualFixedIPs: [{'ip_address':'172.16.20.249'}]
      # IPs assignments for the Overcloud Controller nodes. Ensure these IPs are from each respective allocation pools defined in the network environment file.
      ControllerIPs:
        external:
        - 172.16.23.150
        - 172.16.23.151
        - 172.16.23.152
        internal_api:
        - 172.16.20.150
        - 172.16.20.151
        - 172.16.20.152
        storage:
        - 172.16.21.150
        - 172.16.21.151
        - 172.16.21.152
        storage_mgmt:
        - 172.16.19.150
        - 172.16.19.151
        - 172.16.19.152
        tenant:
        - 172.16.22.150
        - 172.16.22.151
        - 172.16.22.152
        # CIDRs
        external_cidr: "24"
        internal_api_cidr: "24"
        storage_cidr: "24"
        storage_mgmt_cidr: "24"
        tenant_cidr: "24"
      RedisPassword: p@55w0rd!
      ServiceNetMap:
        NeutronTenantNetwork: tenant
        CeilometerApiNetwork: internal_api
        AodhApiNetwork: internal_api
        GnocchiApiNetwork: internal_api
        MongoDbNetwork: internal_api
        CinderApiNetwork: internal_api
        CinderIscsiNetwork: storage
        GlanceApiNetwork: storage
        GlanceRegistryNetwork: internal_api
        KeystoneAdminApiNetwork: internal_api
        KeystonePublicApiNetwork: internal_api
        NeutronApiNetwork: internal_api
        HeatApiNetwork: internal_api
        NovaApiNetwork: internal_api
        NovaMetadataNetwork: internal_api
        NovaVncProxyNetwork: internal_api
        SwiftMgmtNetwork: storage_mgmt
        SwiftProxyNetwork: storage
        HorizonNetwork: internal_api
        MemcachedNetwork: internal_api
        RabbitMqNetwork: internal_api
        RedisNetwork: internal_api
        MysqlNetwork: internal_api
        CephClusterNetwork: storage_mgmt
        CephPublicNetwork: storage
        ControllerHostnameResolveNetwork: internal_api
        ComputeHostnameResolveNetwork: internal_api
        BlockStorageHostnameResolveNetwork: internal_api
        ObjectStorageHostnameResolveNetwork: internal_api
        CephStorageHostnameResolveNetwork: storage
    참고
    • parameter_defaults 섹션에는 각 네트워크의 VIP 및 IP 할당이 포함되어 있습니다. 이러한 설정은 로드 밸런서의 각 서비스에 대해 동일한 IP 구성과 일치해야 합니다.
    • parameter_defaults 섹션에서는 Redis 서비스(RedisPassword)의 관리 암호를 정의하고 각 OpenStack 서비스를 특정 네트워크에 매핑하는 ServiceNetMap 매개 변수를 포함합니다. 로드 밸런싱 구성에 이 서비스를 다시 매핑해야 합니다.

1.4. 외부 로드 밸런싱을 위한 SSL 구성

외부 로드 밸런서에 대해 암호화된 끝점을 구성하려면 SSL이 끝점에 액세스할 수 있는 추가 환경 파일을 만든 다음, 외부 로드 밸런싱 서버에 SSL 인증서 및 키 사본을 설치합니다. 기본적으로 오버클라우드는 암호화되지 않은 끝점 서비스를 사용합니다.

사전 요구 사항

  • IP 주소 또는 도메인 이름을 사용하여 공용 엔드포인트에 액세스하는 경우 오버클라우드 배포에 포함할 다음 환경 파일 중 하나를 선택합니다.

    • 도메인 이름 서비스(DNS)를 사용하여 공용 엔드포인트에 액세스하려면 /usr/share/openstack-tripleo-heat-templates/environments/tls-endpoints-public-dns.yaml 파일을 사용합니다.
    • IP 주소를 사용하여 공용 엔드포인트에 액세스하려면 /usr/share/openstack-tripleo-heat-templates/environments/tls-endpoints-public-ip.yaml 파일을 사용하십시오.

절차

  1. 자체 서명된 인증서를 사용하거나 인증서 서명자가 오버클라우드 이미지의 기본 신뢰 저장소에 없는 경우 heat 템플릿 컬렉션에서 inject-trust-anchor.yaml 환경 파일을 복사하여 오버클라우드 이미지에 인증서를 삽입합니다.

    $ cp -r /usr/share/openstack-tripleo-heat-templates/environments/inject-trust-anchor.yaml ~/templates/
  2. 텍스트 편집기에서 파일을 열고 루트 인증 기관 파일의 내용을 SSLRootCertificate 매개 변수에 복사합니다.

    parameter_defaults:
      SSLRootCertificate: |
      -----BEGIN CERTIFICATE-----
      MIIDgzCCAmugAwIBAgIJAKk46qw6ncJaMA0GCSqGSIb3DQEBCwUAMFgxCzAJBgNV
      ...
      sFW3S2roS4X0Af/kSSD8mlBBTFTCMBAj6rtLBKLaQbIxEpIzrgvp
      -----END CERTIFICATE-----
    중요

    인증 기관 콘텐츠에는 모든 새 행에 대해 동일한 들여쓰기 수준이 필요합니다.

  3. OS::TripleO::NodeTLSCAData: 매개변수의 리소스 URL을 절대 URL로 변경합니다.

    resource_registry:
      OS::TripleO::NodeTLSCAData: /usr/share/openstack-tripleo-heat-templates/puppet/extraconfig/tls/ca-inject.yaml
  4. 선택 사항: DNS 호스트 이름을 사용하여 SSL/TLS를 통해 오버클라우드에 액세스하는 경우 새 환경 파일 ~/templates/cloudname.yaml 을 생성하고 오버클라우드 끝점의 호스트 이름을 정의합니다.

    parameter_defaults:
      CloudName: overcloud.example.com

    overcloud.example.com 을 오버클라우드 엔드포인트의 DNS 호스트 이름으로 교체합니다.

1.5. 외부 로드 밸런서를 사용하여 오버클라우드 배포

외부 로드 밸런서를 사용하는 오버클라우드를 배포하려면 openstack overcloud deploy 를 실행하고 외부 로드 밸런서에 대한 추가 환경 파일 및 구성 파일을 포함합니다.

사전 요구 사항

절차

  1. 외부 로드 밸런서를 위한 모든 환경 및 설정 파일을 사용하여 오버클라우드를 배포합니다.

    $ 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 /
      -e <SSL/TLS endpoint environment file> /
      -e <DNS hostname environment file> /
      -e <root certificate injection environment file> /
      -e <additional_options_if_needed>

    각도 대괄호 <> 의 값을 환경에 대해 정의된 파일 경로로 바꿉니다.

    중요

    이 예에 나열된 순서대로 네트워크 환경 파일을 명령에 추가해야 합니다.

    이 명령에는 다음 환경 파일이 포함됩니다.

    • network-isolation.yaml: 네트워크 격리 구성 파일.
    • network-environment.yaml: 네트워크 구성 파일.
    • external-loadbalancer-vip.yaml: 외부 로드 밸런싱 가상 IP 주소 구성 파일.
    • external-lb.yaml: 외부 로드 밸런서 구성 파일. 이 파일에 대해 다음 옵션을 설정하고 해당 환경의 값을 조정할 수도 있습니다.

      • --control-scale 3: 컨트롤러 노드를 3으로 확장합니다.
      • --compute-scale 3: 컴퓨팅 노드를 3으로 확장합니다.
      • --control-flavor 제어: 컨트롤러 노드에 특정 플레이버를 사용합니다.
      • --compute-flavor 컴퓨팅: 컴퓨팅 노드에 특정 플레이버를 사용합니다.
    • SSL/TLS 환경 파일:

      • SSL/TLS 끝점 환경 파일: 공용 endpoinst에 연결하는 방법을 정의하는 환경 파일입니다. tls-endpoints-public-dns.yaml 또는 tls-endpoints-public-ip.yaml 을 사용합니다.
      • (선택 사항) DNS 호스트 이름 환경 파일: DNS 호스트 이름을 설정하는 환경 파일입니다.
      • 루트 인증서 삽입 환경 파일: 루트 인증 기관을 삽입할 환경 파일입니다.

    오버클라우드 배포 프로세스 중에 Red Hat OpenStack Platform director가 노드를 프로비저닝합니다. 이 프로세스를 완료하는 데 시간이 다소 걸립니다.

  2. 오버클라우드 배포 상태를 보려면 다음 명령을 입력합니다.

    $ source ~/stackrc
    $ openstack stack list --nested

1.6. 추가 리소스

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)로 지시합니다.

2.2. 로드 밸런싱을 사용하는 서비스에 대한 구성 매개변수

로드 밸런싱을 사용하는 오버클라우드의 각 서비스에 대해 다음 예제를 가이드로 사용하여 외부 로드 밸런서를 구성합니다. 환경에 따라 매개변수 값을 조정하고, 로드 밸런싱하려는 각 서비스의 섹션을 복사합니다.

참고

대부분의 서비스에서는 기본 상태 점검 구성을 사용합니다.

  • 연속된 두 상태 점검 간격은 2000밀리초 또는 2초로 설정됩니다.
  • 두 가지 상태 점검이 성공하면 서버가 작동하는 것으로 간주됩니다.
  • 5개의 상태 점검 실패 후 서비스는 오프라인으로 간주됩니다.

각 서비스는 해당 서비스의 기타 정보 섹션에 있는 기본 상태 점검 또는 추가 옵션을 나타냅니다.

aodh

포트 번호: 8042

bind to: internal_api, external

대상 네트워크 또는 서버: overcloud-controller-0, overcloud-controller-1, overcloud-controller-2의 internal_api

기타 정보:

  • 각 대상 서버는 기본 상태 점검을 사용합니다.

HAProxy 예:

listen aodh
  bind 172.16.20.250:8042
  bind 172.16.23.250:8042
  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.152:8042 check fall 5 inter 2000 rise 2

Ceilometer

포트 번호: 8777

bind to: internal_api, external

대상 네트워크 또는 서버: overcloud-controller-0, overcloud-controller-1, overcloud-controller-2의 internal_api

기타 정보:

  • 각 대상 서버는 기본 상태 점검을 사용합니다.

HAProxy 예:

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

cinder

포트 번호: 8776

bind to: internal_api, external

대상 네트워크 또는 서버: overcloud-controller-0, overcloud-controller-1, overcloud-controller-2의 internal_api

기타 정보:

  • 각 대상 서버는 기본 상태 점검을 사용합니다.

HAProxy 예:

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

glance_api

포트 번호: 9292

바인딩 대상: 스토리지, 외부

대상 네트워크 또는 서버: overcloud-controller-0, overcloud-controller-1, overcloud-controller-2의 스토리지

기타 정보:

  • 각 대상 서버는 기본 상태 점검을 사용합니다.

HAProxy 예:

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

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

Gnocchi

포트 번호: 8041

bind to: internal_api, external

대상 네트워크 또는 서버: overcloud-controller-0, overcloud-controller-1, overcloud-controller-2의 internal_api

기타 정보:

  • 각 대상 서버는 기본 상태 점검을 사용합니다.

HAProxy 예:

listen gnocchi
  bind 172.16.20.250:8041
  bind 172.16.23.250:8041
  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

heat_api

포트 번호: 8004

bind to: internal_api, external

대상 네트워크 또는 서버: overcloud-controller-0, overcloud-controller-1, overcloud-controller-2의 internal_api

기타 정보:

  • 각 대상 서버는 기본 상태 점검을 사용합니다.
  • 이 서비스는 기본 TCP 모드 대신 HTTP 모드를 사용합니다.

HAProxy 예:

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

heat_cfn

포트 번호: 8000

bind to: internal_api, external

대상 네트워크 또는 서버: overcloud-controller-0, overcloud-controller-1, overcloud-controller-2의 internal_api

기타 정보:

  • 각 대상 서버는 기본 상태 점검을 사용합니다.

HAProxy 예:

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

heat_cloudwatch

포트 번호: 8003

bind to: internal_api, external

대상 네트워크 또는 서버: overcloud-controller-0, overcloud-controller-1, overcloud-controller-2의 internal_api

기타 정보:

  • 각 대상 서버는 기본 상태 점검을 사용합니다.

HAProxy 예:

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

Horizon

포트 번호: 80

bind to: internal_api, external

대상 네트워크 또는 서버: overcloud-controller-0, overcloud-controller-1, overcloud-controller-2의 internal_api

기타 정보:

  • 각 대상 서버는 기본 상태 점검을 사용합니다.
  • 이 서비스는 기본 TCP 모드 대신 HTTP 모드를 사용합니다.
  • 이 서비스는 UI와의 상호 작용을 위해 쿠키 기반 지속성을 사용합니다.

HAProxy 예:

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

keystone_admin

포트 번호: 35357

bind to: internal_api, external

대상 네트워크 또는 서버: overcloud-controller-0, overcloud-controller-1, overcloud-controller-2의 internal_api

기타 정보:

  • 각 대상 서버는 기본 상태 점검을 사용합니다.

HAProxy 예:

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

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

keystone_public

포트 번호: 5000

bind to: internal_api, external

대상 네트워크 또는 서버: overcloud-controller-0, overcloud-controller-1, overcloud-controller-2의 internal_api

기타 정보:

  • 각 대상 서버는 기본 상태 점검을 사용합니다.

HAProxy 예:

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

mysql

포트 번호: 3306

internal_api에 바인딩

대상 네트워크 또는 서버: overcloud-controller-0, overcloud-controller-1, overcloud-controller-2의 internal_api

기타 정보:

  • 각 대상 서버는 기본 상태 점검을 사용합니다. 그러나 상태 점검에서는 포트 9200을 사용합니다.
  • 이 서비스는 한 번에 하나의 서버로만 부하 분산됩니다.
  • 각 서버는 다른 모든 백업 서버를 사용할 수 없는 경우에만 로드 밸런싱에 사용됩니다.
  • 서버가 오프라인인 경우 모든 연결이 즉시 종료됩니다.
  • 양쪽에서 TCP keepalive 패킷을 보낼 수 있어야 합니다.
  • 서버 상태를 확인하려면 HTTP 프로토콜을 활성화해야 합니다.
  • 지속성 유지를 위해 IP 주소를 저장하도록 고정 테이블을 구성할 수 있습니다.
중요

mysql 서비스는 Galera를 사용하여 고가용성 데이터베이스 클러스터를 제공합니다. Galera는 활성-활성 구성을 지원하지만 잠금 경합을 방지하려면 로드 밸런서에서 적용되는 활성-수동 구성을 사용해야 합니다.

HAProxy 예:

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

Neutron

포트 번호: 9696

bind to: internal_api, external

대상 네트워크 또는 서버: overcloud-controller-0, overcloud-controller-1, overcloud-controller-2의 internal_api

기타 정보:

  • 각 대상 서버는 기본 상태 점검을 사용합니다.

HAProxy 예:

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

nova_ec2

포트 번호: 8773

bind to: internal_api, external

대상 네트워크 또는 서버: overcloud-controller-0, overcloud-controller-1, overcloud-controller-2의 internal_api

기타 정보:

  • 각 대상 서버는 기본 상태 점검을 사용합니다.

HAProxy 예:

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

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

nova_novncproxy

포트 번호: 6080

bind to: internal_api, external

대상 네트워크 또는 서버: overcloud-controller-0, overcloud-controller-1, overcloud-controller-2의 internal_api

기타 정보:

  • 각 대상 서버는 기본 상태 점검을 사용합니다.
  • 기본 로드 밸런싱 방법은 라운드 로빈입니다. 그러나 이 서비스에는 source 메서드를 사용합니다. 이 메서드는 소스 IP 주소를 해시하고 실행 중인 서버의 총 가중치로 나눕니다. 또한 이 메서드는 서버를 중단하거나 가동하지 않는 한 요청을 수신하는 서버를 지정하고 동일한 클라이언트 IP 주소가 항상 동일한 서버에 도달하도록 합니다. 실행 중인 서버 수의 변경으로 인해 해시 결과가 변경되면 로드 밸런서는 클라이언트를 다른 서버로 리디렉션합니다.

HAProxy 예:

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

nova_osapi

포트 번호: 8774

bind to: internal_api, external

대상 네트워크 또는 서버: overcloud-controller-0, overcloud-controller-1, overcloud-controller-2의 internal_api

기타 정보:

  • 각 대상 서버는 기본 상태 점검을 사용합니다.

HAProxy 예:

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

nova_placement

포트 번호: 8778

bind to: internal_api, external

대상 네트워크 또는 서버: overcloud-controller-0, overcloud-controller-1, overcloud-controller-2의 internal_api

기타 정보:

  • 각 대상 서버는 기본 상태 점검을 사용합니다.

HAProxy 예:

listen nova_placement
  bind 172.16.20.250:8778
  bind 172.16.23.250:8778
  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

Panko

포트 번호: 8779

bind to: internal_api, external

대상 네트워크 또는 서버: overcloud-controller-0, overcloud-controller-1, overcloud-controller-2의 internal_api

기타 정보:

  • 각 대상 서버는 기본 상태 점검을 사용합니다.

HAProxy 예:

listen panko
  bind 172.16.20.250:8779
  bind 172.16.23.250:8779
  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

Redis

포트 번호: 6379

bind to: internal_api (redis service 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 암호를 정의할 수 있습니다.
  • 기본 밸런싱 방법은 라운드 로빈 입니다. 그러나 이 서비스에는 번째 방법을 사용합니다. 이렇게 하면 사용 가능한 연결 슬롯이 있는 첫 번째 서버가 연결을 수신합니다.

HAProxy 예:

listen redis
  bind 172.16.20.249:6379 transparent
  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

swift_proxy_server

포트 번호: 8080

바인딩 대상: 스토리지, 외부

대상 네트워크 또는 서버: overcloud-controller-0, overcloud-controller-1, overcloud-controller-2의 스토리지

기타 정보:

  • 각 대상 서버는 기본 상태 점검을 사용합니다.

HAProxy 예:

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

법적 공지

Copyright © 2023 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.