8장. OpenShift 노드에서 Red Hat OpenStack Services로 Object Storage 서비스 마이그레이션


Red Hat OpenStack Platform Object Storage 서비스(swift)를 Object Storage 서비스로 사용하는 경우 OpenShift 노드의 Object Storage 서비스를 Red Hat OpenStack Services로 마이그레이션해야 합니다.

Ceph Object Gateway(RGW)의 Object Storage API를 사용하는 경우 이 장을 건너뛰고 Red Hat Ceph Storage 클러스터를 마이그레이션할 수 있습니다. 자세한 내용은 Red Hat Ceph Storage 클러스터 마이그레이션을 참조하십시오. 컨트롤러 노드에서 Ceph 데몬을 마이그레이션하지 않으려면 Ceph 수신 데몬 배포 및 Object Storage 서비스 끝점을 생성하거나 업데이트하는 데 설명된 단계를 수행해야 합니다.

데이터 마이그레이션은 복제본에 의해 복제됩니다. 예를 들어 복제본이 3개인 경우 다른 두 복제본이 계속 작동하는지 확인하기 위해 한 번에 하나씩 이동하여 마이그레이션 중에 Object Storage 서비스를 계속 사용할 수 있습니다.

참고

새 배포로 데이터 마이그레이션은 대부분 백그라운드에서 실행되는 장기 실행 프로세스입니다. Object Storage 서비스 복제자는 사용된 스토리지 크기에 따라 데이터를 이전 노드에서 새 노드로 이동할 수 있습니다. 다운타임을 줄이기 위해 실행 중인 경우 이전 노드를 사용하고 마이그레이션이 완료될 때까지 다른 서비스를 계속 채택할 수 있습니다. 네트워크의 복제 트래픽 양으로 인해 성능이 저하될 수 있습니다.

8.1. RHOSP에서 RHOSO 노드로 Object Storage 서비스 데이터 마이그레이션

Object Storage 서비스(swift) 마이그레이션에는 다음 단계가 포함됩니다.

  1. Object Storage 서비스 링에 새 노드를 추가합니다.
  2. 기존 노드의 weights를 0으로 설정합니다.
  3. 하나의 복제본을 이동하여 링을 리밸런스합니다.
  4. 링을 기존 노드에 복사하고 서비스를 다시 시작합니다.
  5. 복제 상태를 확인하고 이전 노드가 드레이닝될 때까지 이전 두 단계를 반복합니다.
  6. 링에서 이전 노드를 제거합니다.

사전 요구 사항

  • 오브젝트 스토리지 서비스를 채택합니다. 자세한 내용은 오브젝트 스토리지 서비스 변경을 참조하십시오.
  • DNS 서버의 경우 모든 기존 노드가 Red Hat OpenShift Container Platform (RHOCP) Pod의 호스트 이름을 확인할 수 있는지 확인합니다. 예를 들어 /etc/resolv.conf 의 네임 서버로 DNSMasq 서비스의 외부 IP를 사용합니다.

    $ oc get service dnsmasq-dns -o jsonpath="{.status.loadBalancer.ingress[0].ip}" | $CONTROLLER1_SSH sudo tee /etc/resolv.conf
  • swift-dispersion 툴을 사용하여 복제의 현재 상태를 추적합니다.

    $ oc debug --keep-labels=true job/swift-ring-rebalance -- /bin/sh -c 'swift-ring-tool get && swift-dispersion-populate'

    명령을 완료하는 데 몇 분이 걸릴 수 있습니다. Object Storage 서비스 배포에 분산된 0바이트 오브젝트를 만들고, 나중에 swift-dispersion-report 를 사용하여 현재 복제 상태를 표시할 수 있습니다.

    $ oc debug --keep-labels=true job/swift-ring-rebalance -- /bin/sh -c 'swift-ring-tool get && swift-dispersion-report'

    swift-dispersion-report 명령의 출력은 다음과 유사합니다.

    Queried 1024 containers for dispersion reporting, 5s, 0 retries
    100.00% of container copies found (3072 of 3072)
    Sample represents 100.00% of the container partition space
    Queried 1024 objects for dispersion reporting, 4s, 0 retries
    There were 1024 partitions missing 0 copies.
    100.00% of object copies found (3072 of 3072)
    Sample represents 100.00% of the object partition space

프로세스

  1. SwiftStorage 리소스를 0에서 3으로 확장하여 새 노드를 추가합니다.

    $ oc patch openstackcontrolplane openstack --type=merge -p='{"spec":{"swift":{"template":{"swiftStorage":{"replicas": 3}}}}}'

    이 명령은 영구 볼륨 클레임을 사용하는RHOCP(Red Hat OpenShift Container Platform) 클러스터에 세 개의 스토리지 인스턴스를 생성합니다.

  2. 3개의 Pod가 모두 실행되고 링에 새 장치가 포함될 때까지 기다립니다.

    $ oc wait pods --for condition=Ready -l component=swift-storage
    $ oc debug --keep-labels=true job/swift-ring-rebalance -- /bin/sh -c 'swift-ring-tool get && swift-ring-builder object.builder search --device pv'
  3. 현재 링에서 드레이닝할 노드의 스토리지 관리 IP 주소를 가져옵니다.

    $ oc debug --keep-labels=true job/swift-ring-rebalance -- /bin/sh -c 'swift-ring-tool get && swift-ring-builder object.builder search _' | tail -n +2 | awk '{print $4}' | sort -u

    출력은 다음과 유사합니다.

    172.20.0.100
    swift-storage-0.swift-storage.openstack.svc
    swift-storage-1.swift-storage.openstack.svc
    swift-storage-2.swift-storage.openstack.svc
  4. 이전 노드를 드레이닝합니다. 다음 예에서는 기존 노드 172.20.0.100 이 드레이닝됩니다.

    $ oc debug --keep-labels=true job/swift-ring-rebalance -- /bin/sh -c '
    swift-ring-tool get
    swift-ring-tool drain 172.20.0.100
    swift-ring-tool rebalance
    swift-ring-tool push'

    배포에 따라 명령에 포함할 노드가 더 많이 있을 수 있습니다.

  5. 업데이트된 링을 복사하여 원래 노드에 적용합니다. Object Storage 서비스 데이터를 저장하는 기존 노드에 대해 ssh 명령을 실행합니다.

    $ oc extract --confirm cm/swift-ring-files
    $CONTROLLER1_SSH "tar -C /var/lib/config-data/puppet-generated/swift/etc/swift/ -xzf -" < swiftrings.tar.gz
    $CONTROLLER1_SSH "systemctl restart tripleo_swift_*"
  6. swift-dispersion-report 툴을 사용하여 복제 진행 상황을 추적합니다.

    $ oc debug --keep-labels=true job/swift-ring-rebalance -- /bin/sh -c "swift-ring-tool get && swift-dispersion-report"

    출력에 생성된 사본의 100% 미만이 표시됩니다. 모든 컨테이너 및 오브젝트 복사본이 발견될 때까지 명령을 반복합니다.

    Queried 1024 containers for dispersion reporting, 6s, 0 retries
    There were 5 partitions missing 1 copy.
    99.84% of container copies found (3067 of 3072)
    Sample represents 100.00% of the container partition space
    Queried 1024 objects for dispersion reporting, 7s, 0 retries
    There were 739 partitions missing 1 copy.
    There were 285 partitions missing 0 copies.
    75.94% of object copies found (2333 of 3072)
    Sample represents 100.00% of the object partition space
  7. 링의 재조정 및 배포를 통해 다음 복제본을 새 노드로 이동합니다.

    $ oc debug --keep-labels=true job/swift-ring-rebalance -- /bin/sh -c '
    swift-ring-tool get
    swift-ring-tool rebalance
    swift-ring-tool push'
    
    $ oc extract --confirm cm/swift-ring-files
    $CONTROLLER1_SSH "tar -C /var/lib/config-data/puppet-generated/swift/etc/swift/ -xzf -" < swiftrings.tar.gz
    $CONTROLLER1_SSH "systemctl restart tripleo_swift_*"

    swift-dispersion-report 출력을 다시 모니터링하고 모든 복사본이 발견될 때까지 기다린 다음 모든 복제본을 새 노드로 이동할 때까지 반복합니다.

  8. 링에서 노드를 제거합니다.

    $ oc debug --keep-labels=true job/swift-ring-rebalance -- /bin/sh -c '
    swift-ring-tool get
    swift-ring-tool remove 172.20.0.100
    swift-ring-tool rebalance
    swift-ring-tool push'
    참고

    모든 복제본이 새 노드에 있고 swift-dispersion-report 명령에서 발견된 복사본의 100%를 보고하더라도 이전 노드에 데이터가 계속 있을 수 있습니다. 복제자는 이 데이터를 제거하지만 더 많은 시간이 걸릴 수 있습니다.

검증

  1. 클러스터에 있는 모든 디스크의 디스크 사용량을 확인합니다.

    $ oc debug --keep-labels=true job/swift-ring-rebalance -- /bin/sh -c 'swift-ring-tool get && swift-recon -d'
  2. 노드의 /srv/node 디렉터리에 더 이상 \*.db 또는 *.data 파일이 없는지 확인합니다.

    $CONTROLLER1_SSH "find /srv/node/ -type f -name '*.db' -o -name '*.data' | wc -l"
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

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

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2026 Red Hat
맨 위로 이동