2.5. 다중 경로 구성

다중 경로를 사용하여 서버 노드와 스토리지 어레이 간에 여러 I/O 경로를 단일 장치로 구성하여 중복성을 생성하고 성능을 개선합니다. 새 오버클라우드 배포 및 기존 오버클라우드 배포에 다중 경로를 구성할 수 있습니다.

그래픽은 cinder 다중 경로 I/O를 사용하여 구성된 Red Hat OpenStack Platform 배포의 논리적 입력/출력 데이터 경로를 보여줍니다.

2.5.1. 새 배포에 다중 경로 구성

새 Overcloud 배포에 다중 경로를 구성하려면 다음 절차를 완료합니다.

기존 오버클라우드 배포에 다중 경로를 구성하는 방법에 대한 자세한 내용은 2.5.2절. “기존 배포에 다중 경로 구성” 을 참조하십시오.

사전 요구 사항

오버클라우드 컨트롤러 및 컴퓨팅 노드는 Red Hat Enterprise Linux 서버 리포지토리에 액세스할 수 있어야 합니다. 자세한 내용은 Director 설치 및 사용 가이드 의 기본 클라우드 이미지 다운로드를 참조하십시오.

절차

  1. Overcloud를 구성합니다.

    참고

    자세한 내용은 Director 설치 및 사용 가이드에서 CLI 툴을 사용하여 기본 오버클라우드 구성을 참조하십시오.

  2. 다중 경로를 활성화하도록 heat 템플릿을 업데이트합니다.

    parameter_defaults:
      NovaLibvirtVolumeUseMultipath:  true
      NovaComputeOptVolumes:
        - /etc/multipath.conf:/etc/multipath.conf:ro
        - /etc/multipath/:/etc/multipath/:rw
      CinderVolumeOptVolumes:
        - /etc/multipath.conf:/etc/multipath.conf:ro
        - /etc/multipath/:/etc/multipath/:rw
  3. 선택 사항: Block Storage(cinder)를 Image 서비스(glance) 백엔드로 사용하는 경우 다음 단계도 완료해야 합니다.

    1. 다음 GlanceApiOptVolumes 구성을 heat 템플릿에 추가합니다.

      parameter_defaults:
        GlanceApiOptVolumes:
          - /etc/multipath.conf:/etc/multipath.conf:ro
          - /etc/multipath/:/etc/multipath/:rw
    2. 다음과 같은 방식으로 ControllerExtraConfig 매개변수를 설정합니다.

      parameter_defaults:
        ControllerExtraConfig:
          glance::config::api_config:
            default_backend/cinder_use_multipath:
              value: true
      참고
      default_backendGlanceBackendID heat 템플릿 기본값이 모두 일치하는지 확인합니다.
  4. 구성된 모든 백엔드에 대해 use_multipath_for_image_xfertrue로 설정합니다.

    parameter_defaults:
      ExtraConfig:
        cinder::config::cinder_config:
          <backend>/use_multipath_for_image_xfer:
            value: true
  5. 오버클라우드를 배포합니다.

    $ openstack overcloud deploy
    참고

    Overcloud 매개 변수를 사용하여 Overcloud를 생성하는 방법에 대한 자세한 내용은 Director 설치 및 사용 가이드 의 CLI 툴을 사용하여 Overcloud 생성을 참조하십시오.

  6. 컨테이너가 실행되기 전에 모든 컨트롤러 및 컴퓨팅 노드에 다중 경로를 설치합니다.

    $ sudo dnf install -y device-mapper-multipath
    참고

    director는 첫 번째 부팅이 완료된 후 코어 구성이 시작되기 전에 특정 노드 역할에 대한 사용자 정의 구성을 지원하는 후크 세트를 제공합니다. 사용자 정의 오버클라우드 구성에 대한 자세한 내용은 Pre-Configuration을 참조하십시오. Advanced Overcloud Customization 가이드에서 특정 Overcloud Roles 사용자 지정.

  7. 모든 컨트롤러 및 컴퓨팅 노드에서 다중 경로 데몬을 구성합니다.

    $ mpathconf --enable --with_multipathd y --user_friendly_names n --find_multipaths y
    참고

    예제 코드는 대부분의 환경에서 작동하는 기본 다중 경로 구성을 생성합니다. 그러나 일부 벤더는 하드웨어에 고유한 구성을 최적화했기 때문에 스토리지 벤더에서 권장 사항을 확인하십시오. 다중 경로에 대한 자세한 내용은 장치 매퍼 다중 경로 구성 가이드를 참조하십시오.

  8. 모든 컨트롤러 및 컴퓨팅 노드에서 다음 명령을 실행하여 파티션이 생성되지 않도록 합니다.

    $ sed -i "s/^defaults {/defaults {\n\tskip_kpartx yes/" /etc/multipath.conf
    참고

    skip_kpartxyes 로 설정하면 Compute 노드에서 kpartx가 장치에 파티션을 자동으로 생성하지 못하여 불필요한 장치 매퍼 항목이 방지됩니다. 구성 속성에 대한 자세한 내용은 장치 매퍼 다중 경로 구성 가이드의 DM-Multipath 구성 파일 수정을 참조하십시오.

  9. 모든 컨트롤러 및 컴퓨팅 노드에서 다중 경로 데몬을 시작합니다.

    $ systemctl enable --now multipathd

2.5.2. 기존 배포에 다중 경로 구성

워크로드에서 다중 경로 기능을 사용할 수 있도록 기존 배포에서 다중 경로를 구성합니다.

참고

기존 배포에 다중 경로를 구성한 후 생성하는 새 워크로드는 기본적으로 다중 경로를 인식합니다. 기존 워크로드가 있는 경우 인스턴스를 보류하고 보류 해제하여 이러한 인스턴스에서 다중 경로를 활성화해야 합니다.

새 오버클라우드 배포에 다중 경로를 구성하는 방법에 대한 자세한 내용은 2.5.1절. “새 배포에 다중 경로 구성” 을 참조하십시오.

사전 요구 사항

오버클라우드 컨트롤러 및 컴퓨팅 노드는 Red Hat Enterprise Linux 서버 리포지토리에 액세스할 수 있어야 합니다. 자세한 내용은 Director 설치 및 사용 가이드 의 기본 클라우드 이미지 다운로드를 참조하십시오.

절차

  1. 다중 경로가 모든 컨트롤러 및 컴퓨팅 노드에 설치되어 있는지 확인합니다.

    $ rpm -qa | grep device-mapper-multipath
    
    device-mapper-multipath-0.4.9-127.el8.x86_64
    device-mapper-multipath-libs-0.4.9-127.el8.x86_64

    다중 경로가 설치되지 않은 경우 모든 컨트롤러 및 컴퓨팅 노드에 설치합니다.

    $ sudo dnf install -y device-mapper-multipath
  2. 모든 컨트롤러 및 컴퓨팅 노드에서 다중 경로 데몬을 구성합니다.

    $ mpathconf --enable --with_multipathd y --user_friendly_names n --find_multipaths y
    참고

    예제 코드는 대부분의 환경에서 작동하는 기본 다중 경로 구성을 생성합니다. 그러나 일부 벤더는 하드웨어에 고유한 구성을 최적화했기 때문에 스토리지 벤더에서 권장 사항을 확인하십시오. 다중 경로에 대한 자세한 내용은 장치 매퍼 다중 경로 구성 가이드를 참조하십시오.

  3. 모든 컨트롤러 및 컴퓨팅 노드에서 다음 명령을 실행하여 파티션이 생성되지 않도록 합니다.

    $ sed -i "s/^defaults {/defaults {\n\tskip_kpartx yes/" /etc/multipath.conf
    참고

    skip_kpartxyes 로 설정하면 Compute 노드에서 kpartx가 장치에 파티션을 자동으로 생성하지 못하여 불필요한 장치 매퍼 항목이 방지됩니다. 구성 속성에 대한 자세한 내용은 장치 매퍼 다중 경로 구성 가이드의 DM-Multipath 구성 파일 수정을 참조하십시오.

  4. 모든 컨트롤러 및 컴퓨팅 노드에서 다중 경로 데몬을 시작합니다.

    $ systemctl enable --now multipathd
  5. 다중 경로를 활성화하도록 heat 템플릿을 업데이트합니다.

    parameter_defaults:
      NovaLibvirtVolumeUseMultipath:  true
      NovaComputeOptVolumes:
        - /etc/multipath.conf:/etc/multipath.conf:ro
        - /etc/multipath/:/etc/multipath/:rw
      CinderVolumeOptVolumes:
        - /etc/multipath.conf:/etc/multipath.conf:ro
        - /etc/multipath/:/etc/multipath/:rw
  6. 선택 사항: Block Storage(cinder)를 Image 서비스(glance) 백엔드로 사용하는 경우 다음 단계도 완료해야 합니다.

    1. 다음 GlanceApiOptVolumes 구성을 heat 템플릿에 추가합니다.

      parameter_defaults:
        GlanceApiOptVolumes:
          - /etc/multipath.conf:/etc/multipath.conf:ro
          - /etc/multipath/:/etc/multipath/:rw
    2. 다음과 같은 방식으로 ControllerExtraConfig 매개변수를 설정합니다.

      parameter_defaults:
        ControllerExtraConfig:
          glance::config::api_config:
            default_backend/cinder_use_multipath:
              value: true
      참고
      default_backendGlanceBackendID heat 템플릿 기본값이 모두 일치하는지 확인합니다.
  7. 구성된 모든 백엔드에 대해 use_multipath_for_image_xfertrue로 설정합니다.

    parameter_defaults:
      ExtraConfig:
        cinder::config::cinder_config:
          <backend>/use_multipath_for_image_xfer:
            value: true
  8. 다음 명령을 실행하여 오버클라우드를 업데이트합니다.

    $ openstack overcloud deploy
    참고

    openstack overcloud deploy 명령을 실행하여 다중 경로를 설치하고 구성할 때 오버클라우드를 배포하는 데 사용한 이전 역할과 환경 파일을 모두 전달해야 합니다(예: --templates,--roles-file,-e 모든 환경 파일, --timeout ). 이전 역할 및 환경 파일을 모두 전달하지 못하면 오버클라우드 배포에 문제가 발생할 수 있습니다. 오버클라우드 매개변수 사용에 대한 자세한 내용은 Director 설치 및 사용 가이드 의 CLI 툴을 사용하여 Overcloud 생성을 참조하십시오.

2.5.3. 다중 경로 구성 확인

다음 절차에서는 신규 또는 기존 오버클라우드 배포에서 다중 경로 구성을 확인하는 방법을 설명합니다.

절차

  1. VM 생성.
  2. 암호화되지 않은 볼륨을 VM에 연결합니다.
  3. 인스턴스가 포함된 컴퓨팅 노드의 이름을 가져옵니다.

    $ nova show INSTANCE | grep OS-EXT-SRV-ATTR:host

    INSTANCE 를 부팅한 VM의 이름으로 교체합니다.

  4. 인스턴스의 virsh 이름을 검색합니다.

    $ nova show INSTANCE | grep instance_name

    INSTANCE 를 부팅한 VM의 이름으로 교체합니다.

  5. 컴퓨팅 노드의 IP 주소를 가져옵니다.

    $ . stackrc
    $ nova list | grep compute_name

    compute_namenova show INSTANCE 명령의 출력에서 이름으로 바꿉니다.

  6. VM을 실행하는 컴퓨팅 노드에 SSH로 연결합니다.

    $ ssh heat-admin@COMPUTE_NODE_IP

    COMPUTE_NODE_IP 를 컴퓨팅 노드의 IP 주소로 바꿉니다.

  7. virsh를 실행하는 컨테이너에 로그인합니다.

    $ podman exec -it nova_libvirt /bin/bash
  8. 컴퓨팅 노드 인스턴스에 다음 명령을 입력하여 cinder 볼륨 호스트 위치에서 다중 경로를 사용하는지 확인합니다.

    virsh domblklist VIRSH_INSTANCE_NAME | grep /dev/dm

    VIRSH_INSTANCE_NAMEnova show INSTANCE | grep instance_name 명령의 출력으로 바꿉니다.

    인스턴스에 /dev/dm- 이외의 값이 표시되면 연결이 멀티패스가 아니므로 nova Shelve 및 nova unshelve 명령을 사용하여 연결 정보를 새로 고쳐야 합니다.

    $ nova shelve <instance>
    $ nova unshelve <instance>
    참고

    백엔드 유형이 두 개 이상인 경우 각 백엔드에서 반환하는 연결 정보가 다를 수 있으므로 모든 백엔드에서 인스턴스와 볼륨을 확인해야 합니다.