1.2.3.3. Octavia 구성

Kuryr SDN은 RHOSP(Red Hat OpenStack Platform)의 Octavia LBaaS를 사용하여 OpenShift Container Platform 서비스를 구현합니다. 따라서 Kuryr SDN을 사용하려면 RHOSP에서 Octavia 구성 요소를 설치하고 구성해야 합니다.

Octavia를 활성화하려면 RHOSP Overcloud 설치 중에 Octavia 서비스를 포함하거나 Overcloud가 이미 존재하는 경우 Octavia 서비스를 업그레이드해야 합니다. Octavia를 활성화하는 다음 단계는 Overcloud 새로 설치 또는 Overcloud 업데이트에 모두 적용됩니다.

참고

다음 단계는 Octavia를 처리할 때 RHOSP 배포 과정에서 필요한 주요 부분만을 다룹니다. 레지스트리 방법도 다를 수 있습니다.

이 예에서는 로컬 레지스트리 방법을 사용합니다.

프로세스

  1. 로컬 레지스트리를 사용하는 경우 이미지를 레지스트리에 업로드하는 템플릿을 만듭니다. 예를 들면 다음과 같습니다.

    (undercloud) $ openstack overcloud container image prepare \
    -e /usr/share/openstack-tripleo-heat-templates/environments/services-docker/octavia.yaml \
    --namespace=registry.access.redhat.com/rhosp13 \
    --push-destination=<local-ip-from-undercloud.conf>:8787 \
    --prefix=openstack- \
    --tag-from-label {version}-{release} \
    --output-env-file=/home/stack/templates/overcloud_images.yaml \
    --output-images-file /home/stack/local_registry_images.yaml
  2. local_registry_images.yaml 파일에 Octavia 이미지가 포함되어 있는지 확인합니다. 예를 들면 다음과 같습니다.

    ...
    - imagename: registry.access.redhat.com/rhosp13/openstack-octavia-api:13.0-43
      push_destination: <local-ip-from-undercloud.conf>:8787
    - imagename: registry.access.redhat.com/rhosp13/openstack-octavia-health-manager:13.0-45
      push_destination: <local-ip-from-undercloud.conf>:8787
    - imagename: registry.access.redhat.com/rhosp13/openstack-octavia-housekeeping:13.0-45
      push_destination: <local-ip-from-undercloud.conf>:8787
    - imagename: registry.access.redhat.com/rhosp13/openstack-octavia-worker:13.0-44
      push_destination: <local-ip-from-undercloud.conf>:8787
    참고

    Octavia 컨테이너 버전은 설치된 특정 RHOSP 릴리스에 따라 다릅니다.

  3. registry.redhat.io에서 Undercloud 노드로 컨테이너 이미지를 가져옵니다.

    (undercloud) $ sudo openstack overcloud container image upload \
      --config-file  /home/stack/local_registry_images.yaml \
      --verbose

    네트워크 및 Undercloud 디스크의 속도에 따라 다소 시간이 걸릴 수 있습니다.

  4. Octavia 로드 밸런서는 OpenShift Container Platform API에 액세스하는 데 사용되므로 연결에 대한 리스너의 기본 제한 시간을 늘려야 합니다. 기본 제한 시간은 50초입니다. 다음 파일을 Overcloud 배포 명령에 전달하여 제한 시간을 20분으로 늘립니다.

    (undercloud) $ cat octavia_timeouts.yaml
    parameter_defaults:
      OctaviaTimeoutClientData: 1200000
      OctaviaTimeoutMemberData: 1200000
    참고

    RHOSP 13.0.13+에는 필요하지 않습니다.

  5. Octavia로 Overcloud 환경을 설치 또는 업데이트합니다.

    $ openstack overcloud deploy --templates \
      -e /usr/share/openstack-tripleo-heat-templates/environments/services-docker/octavia.yaml \
      -e octavia_timeouts.yaml
    참고

    이 명령에는 Octavia와 관련된 파일만 포함됩니다. 해당 파일은 RHOSP의 특정 설치에 따라 다릅니다. 자세한 내용은 RHOSP 문서를 참조하십시오. Octavia 설치 사용자 지정에 대한 자세한 내용은 Director를 사용하여 Octavia 설치를 참조하십시오.

    참고

    Kuryr SDN을 활용하는 경우 Overcloud 설치에는 Neutron trunk 확장이 필요합니다. 이 확장은 기본적으로 디렉터 배포에서 사용할 수 있습니다. Neutron 백엔드가 ML2/OVS인 경우 기본 ovs-hybrid 대신 openvswitch 방화벽을 사용합니다. 백엔드가 ML2/OVN인 경우에는 수정하지 않아도 됩니다.

  6. RHOSP 13.0.13 이전 버전에서 프로젝트를 생성한 후 프로젝트 ID를 octavia.conf 구성 파일에 추가합니다.

    • 트래픽이 Octavia 로드 밸런서를 통과할 때와 같이 서비스 전체에 네트워크 정책을 적용하려면 Octavia가 사용자 프로젝트에서 Amphora VM 보안 그룹을 생성해야 합니다.

      이 변경으로 인해 필요한 로드 밸런서 보안 그룹이 해당 프로젝트에 속하게 되며 서비스 격리를 적용하도록 업데이트될 수 있습니다.

      참고

      RHOSP 13.0.13 버전 이상에서는 이 작업이 필요하지 않습니다.

      Octavia는 로드 밸런서 VIP에 대한 액세스를 제한하는 새로운 ACL API를 구현합니다.

      1. 프로젝트 ID 가져오기

        $ openstack project show <project>

        출력 예

        +-------------+----------------------------------+
        | Field       | Value                            |
        +-------------+----------------------------------+
        | description |                                  |
        | domain_id   | default                          |
        | enabled     | True                             |
        | id          | PROJECT_ID                       |
        | is_domain   | False                            |
        | name        | *<project>*                      |
        | parent_id   | default                          |
        | tags        | []                               |
        +-------------+----------------------------------+

      2. 컨트롤러의 octavia.conf에 프로젝트 ID를 추가합니다.

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

          $ source stackrc  # Undercloud credentials
        2. Overcloud 컨트롤러를 나열합니다.

          $ openstack server list

          출력 예

          +--------------------------------------+--------------+--------+-----------------------+----------------+------------+
          │
          | ID                                   | Name         | Status | Networks
          | Image          | Flavor     |
          │
          +--------------------------------------+--------------+--------+-----------------------+----------------+------------+
          │
          | 6bef8e73-2ba5-4860-a0b1-3937f8ca7e01 | controller-0 | ACTIVE |
          ctlplane=192.168.24.8 | overcloud-full | controller |
          │
          | dda3173a-ab26-47f8-a2dc-8473b4a67ab9 | compute-0    | ACTIVE |
          ctlplane=192.168.24.6 | overcloud-full | compute    |
          │
          +--------------------------------------+--------------+--------+-----------------------+----------------+------------+

        3. 컨트롤러에 SSH를 적용합니다.

          $ ssh heat-admin@192.168.24.8
        4. octavia.conf 파일을 편집하여 Amphora 보안 그룹이 사용자 계정에 있는 프로젝트 목록에 프로젝트를 추가합니다.

          # List of project IDs that are allowed to have Load balancer security groups
          # belonging to them.
          amp_secgroup_allowed_projects = PROJECT_ID
      3. Octavia 작업자를 다시 시작하여 새 구성을 로드합니다.

        controller-0$ sudo docker restart octavia_worker
참고

RHOSP 환경에 따라 Octavia가 UDP 리스너를 지원하지 않을 수 있습니다. RHOSP 버전 13.0.13 이하에서 Kuryr SDN을 사용하는 경우에는 UDP 서비스가 지원되지 않습니다. RHOSP 버전 16 이상은 UDP를 지원합니다.

1.2.3.3.1. Octavia OVN 드라이버

Octavia는 Octavia API를 통해 여러 공급자 드라이버를 지원합니다.

사용 가능한 모든 Octavia 공급자 드라이버를 보려면 명령줄에서 다음을 입력합니다.

$ openstack loadbalancer provider list

출력 예

+---------+-------------------------------------------------+
| name    | description                                     |
+---------+-------------------------------------------------+
| amphora | The Octavia Amphora driver.                     |
| octavia | Deprecated alias of the Octavia Amphora driver. |
| ovn     | Octavia OVN driver.                             |
+---------+-------------------------------------------------+

RHOSP 버전 16부터 Octavia OVN 공급자 드라이버(ovn)는 RHOSP 배포의 OpenShift Container Platform에서 지원됩니다.

ovn은 Octavia와 OVN이 제공하는 로드 밸런싱을 위한 통합 드라이버입니다. 기본 로드 밸런싱 기능을 지원하며 OpenFlow 규칙을 기반으로 합니다. 이 드라이버는 OVN Neutron ML2를 사용하는 배포에서 Director에 의해 Octavia에서 자동으로 활성화됩니다.

기본 드라이버는 Amphora 공급자 드라이버입니다. 그러나 ovn이 활성화되면 Kuryr는 ovn을 사용합니다.

Kuryr가 Amphora 대신 ovn을 사용하는 경우 다음과 같은 이점을 제공합니다.

  • 리소스 요구사항 감소. Kuryr는 각 서비스마다 로드 밸런서 VM이 필요하지 않습니다.
  • 네트워크 대기 시간 감소.
  • 각 서비스마다 VM 대신 OpenFlow 규칙을 사용하므로 서비스 생성 속도가 향상됩니다.
  • 로드 밸런싱 작업이 Amphora VM에 집중되지 않고 모든 노드에 분산됩니다.

RHOSP 클라우드가 버전 13에서 버전 16으로 업그레이드된 후 Octavia OVN 드라이버를 사용하도록 클러스터를 구성할 수 있습니다.