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 옵션은 각 해당 프로필에 노드를 태그합니다.

추가 리소스