Red Hat Training

A Red Hat training course is available for Red Hat Ceph Storage

부록 G. Red Hat Ceph Storage 2에서 3으로 수동 업그레이드

클러스터가 실행되는 동안 Ceph Storage 클러스터를 롤링 방식으로 2에서 3으로 업그레이드할 수 있습니다. 클러스터의 각 노드를 순차적으로 업그레이드하고 이전 노드가 완료된 후 다음 노드로만 이동합니다.

다음과 같은 순서로 Ceph 구성 요소를 업그레이드하는 것이 좋습니다.

  • 노드 모니터링
  • OSD 노드
  • Ceph Object Gateway 노드
  • 기타 모든 Ceph 클라이언트 노드

Red Hat Ceph Storage 3에는 새로운 데몬 Ceph Manager(ceph-mgr)가 도입되었습니다. Monitor 노드를 업그레이드한 후 ceph-mgr 을 설치합니다.

Red Hat Ceph Storage 2를 3으로 업그레이드하는 방법은 다음 두 가지가 있습니다.

  • Red Hat CDN(Content Delivery Network) 사용
  • Red Hat 제공 ISO 이미지 파일 사용

스토리지 클러스터를 업그레이드한 후 기존 튜닝 가능 항목을 사용하여 CRUSH 맵에 대한 상태 경고를 받을 수 있습니다. 자세한 내용은 Red Hat Ceph Storage 3용 스토리지 전략 가이드의 CRUSH Tunables 섹션을 참조하십시오.

예제

$ ceph -s
    cluster 848135d7-cdb9-4084-8df2-fb5e41ae60bd
     health HEALTH_WARN
            crush map has legacy tunables (require bobtail, min is firefly)
     monmap e1: 1 mons at {ceph1=192.168.0.121:6789/0}
            election epoch 2, quorum 0 ceph1
     osdmap e83: 2 osds: 2 up, 2 in
      pgmap v1864: 64 pgs, 1 pools, 38192 kB data, 17 objects
            10376 MB used, 10083 MB / 20460 MB avail
                  64 active+clean

중요

Red Hat은 모든 Ceph 클라이언트가 Ceph 스토리지 클러스터와 동일한 버전을 실행하도록 권장합니다.

사전 요구 사항

  • 업그레이드하려는 클러스터에 exclusive-lock 기능을 사용하는 Ceph Block Device 이미지가 포함된 경우 모든 Ceph Block Device 사용자에게 클라이언트를 블랙리스트로 지정할 수 있는 권한이 있는지 확인하십시오.

    ceph auth caps client.<ID> mon 'allow r, allow command "osd blacklist"' osd '<existing-OSD-user-capabilities>'

모니터 노드 업그레이드

이 섹션에서는 Ceph Monitor 노드를 최신 버전으로 업그레이드하는 단계를 설명합니다. 홀수의 모니터가 있어야 합니다. 모니터 하나를 업그레이드하는 동안 스토리지 클러스터에는 쿼럼이 있습니다.

절차

스토리지 클러스터의 각 모니터 노드에서 다음 단계를 수행합니다. 한 번에 하나의 Monitor 노드만 업그레이드합니다.

  1. 소프트웨어 리포지토리를 사용하여 Red Hat Ceph Storage 2를 설치한 경우 리포지토리를 비활성화합니다.

    # subscription-manager repos --disable=rhel-7-server-rhceph-2-mon-rpms --disable=rhel-7-server-rhceph-2-installer-rpms
  2. Red Hat Ceph Storage 3 Monitor 리포지토리를 활성화합니다.

    [root@monitor ~]# subscription-manager repos --enable=rhel-7-server-rhceph-3-mon-els-rpms
  3. root 로 monitor 프로세스를 중지합니다.

    구문

    # service ceph stop <daemon_type>.<monitor_host_name>

    예제

    # service ceph stop mon.node1

  4. rootceph-mon 패키지를 업데이트합니다.

    # yum update ceph-mon
  5. root 로서 소유자 및 그룹 권한을 업데이트합니다.

    구문

    # chown -R <owner>:<group> <path_to_directory>

    예제

    # chown -R ceph:ceph /var/lib/ceph/mon
    # chown -R ceph:ceph /var/log/ceph
    # chown -R ceph:ceph /var/run/ceph
    # chown ceph:ceph /etc/ceph/ceph.client.admin.keyring
    # chown ceph:ceph /etc/ceph/ceph.conf
    # chown ceph:ceph /etc/ceph/rbdmap

    참고

    Ceph Monitor 노드가 OpenStack 컨트롤러 노드와 함께 배치되는 경우 Glance 및 Cinder 인증 키 파일을 각각 glancecinder 에서 소유해야 합니다. 예를 들면 다음과 같습니다.

    # ls -l /etc/ceph/
    ...
    -rw-------.  1 glance glance      64 <date> ceph.client.glance.keyring
    -rw-------.  1 cinder cinder      64 <date> ceph.client.cinder.keyring
    ...
  6. SELinux가 강제 모드 또는 허용 모드인 경우 다음 재부팅 시 SELinux 컨텍스트의 레이블을 다시 지정합니다.

    # touch /.autorelabel
    주의

    SELinux가 모든 파일 시스템을 트래버스하고 레이블이 잘못 지정된 파일을 수정해야 하므로 레이블을 다시 지정하는 데 시간이 오래 걸릴 수 있습니다. 디렉터리의 레이블을 다시 레이블로 지정하지 않도록 하려면 재부팅하기 전에 /etc/selinux/fixfiles_exclude_dirs 파일에 디렉토리를 추가합니다.

  7. rootceph-mon 프로세스를 활성화합니다.

    # systemctl enable ceph-mon.target
    # systemctl enable ceph-mon@<monitor_host_name>
  8. root 로서 Monitor 노드를 재부팅합니다.

    # shutdown -r now
  9. Monitor 노드가 가동되면 다음 Monitor 노드로 이동하기 전에 Ceph 스토리지 클러스터의 상태를 확인합니다.

    # ceph -s

G.1. 수동으로 Ceph Manager 설치

일반적으로 Ansible 자동화 유틸리티는 Red Hat Ceph Storage 클러스터를 배포할 때 Ceph Manager 데몬(ceph-mgr)을 설치합니다. 그러나 Ansible을 사용하여 Red Hat Ceph Storage를 관리하지 않는 경우 Ceph Manager를 수동으로 설치할 수 있습니다. Red Hat은 동일한 노드에서 Ceph Manager 및 Ceph Monitor 데몬을 배치하는 것이 좋습니다.

사전 요구 사항

  • 작동하는 Red Hat Ceph Storage 클러스터
  • root 또는 sudo 액세스
  • rhel-7-server-rhceph-3-mon-els-rpms 리포지토리 활성화
  • 방화벽이 사용되는 경우 공용 네트워크에서 포트 6800-7300

절차

ceph-mgr 가 배포되는 노드에서 및 root 사용자로 또는 sudo 유틸리티를 사용하여 다음 명령을 사용합니다.

  1. ceph-mgr 패키지를 설치합니다.

    [root@node1 ~]# yum install ceph-mgr
  2. /var/lib/ceph/mgr/ceph-호스트 이름/ 디렉터리를 생성합니다.

    mkdir /var/lib/ceph/mgr/ceph-hostname

    hostnameceph-mgr 데몬이 배포될 노드의 호스트 이름으로 교체합니다. 예를 들면 다음과 같습니다.

    [root@node1 ~]# mkdir /var/lib/ceph/mgr/ceph-node1
  3. 새로 생성된 디렉터리에서 ceph-mgr 데몬에 대한 인증 키를 생성합니다.

    [root@node1 ~]# ceph auth get-or-create mgr.`hostname -s` mon 'allow profile mgr' osd 'allow *' mds 'allow *' -o /var/lib/ceph/mgr/ceph-node1/keyring
  4. /var/lib/ceph/mgr/ 디렉터리의 소유자 및 그룹을 ceph:ceph 로 변경합니다.

    [root@node1 ~]# chown -R ceph:ceph /var/lib/ceph/mgr
  5. ceph-mgr 대상을 활성화합니다.

    [root@node1 ~]# systemctl enable ceph-mgr.target
  6. ceph-mgr 인스턴스를 활성화하고 시작합니다.

    systemctl enable ceph-mgr@hostname
    systemctl start ceph-mgr@hostname

    hostnameceph-mgr 이 배포할 노드의 호스트 이름으로 교체합니다. 예를 들면 다음과 같습니다.

    [root@node1 ~]# systemctl enable ceph-mgr@node1
    [root@node1 ~]# systemctl start ceph-mgr@node1
  7. ceph-mgr 데몬이 시작되었는지 확인합니다.

    ceph -s

    출력에는 services: 섹션 아래의 다음 행과 유사한 행이 포함됩니다.

        mgr: node1(active)
  8. 현재 활성 데몬이 실패하는 경우 더 많은 ceph-mgr 데몬을 설치하여 대기 데몬으로 작동합니다.

OSD 노드 업그레이드

이 섹션에서는 Ceph OSD 노드를 최신 버전으로 업그레이드하는 단계를 설명합니다.

사전 요구 사항

OSD 노드를 업그레이드할 때 OSD가 다운되거나 다시 시작될 수 있으므로 일부 배치 그룹이 성능이 저하됩니다. Ceph가 복구 프로세스를 시작하지 못하도록 하려면 Monitor 노드에서 nooutnorebalance OSD 플래그를 설정합니다.

[root@monitor ~]# ceph osd set noout
[root@monitor ~]# ceph osd set norebalance

절차

스토리지 클러스터의 각 OSD 노드에서 다음 단계를 수행합니다. 한 번에 하나의 OSD 노드만 업그레이드합니다. Red Hat Ceph Storage 2.3에 대해 ISO 기반 설치를 수행한 경우 이 첫 번째 단계를 건너뜁니다.

  1. root 로서 Red Hat Ceph Storage 2 리포지토리를 비활성화합니다.

    # subscription-manager repos --disable=rhel-7-server-rhceph-2-osd-rpms --disable=rhel-7-server-rhceph-2-installer-rpms
  2. Red Hat Ceph Storage 3 OSD 리포지토리를 활성화합니다.

    [root@osd ~]# subscription-manager repos --enable=rhel-7-server-rhceph-3-osd-els-rpms
  3. root 로 실행 중인 OSD 프로세스를 중지합니다.

    구문

    # service ceph stop <daemon_type>.<osd_id>

    예제

    # service ceph stop osd.0

  4. rootceph-osd 패키지를 업데이트합니다.

    # yum update ceph-osd
  5. root 로서 새로 생성된 디렉터리 및 파일에 대한 소유자 및 그룹 권한을 업데이트합니다.

    구문

    # chown -R <owner>:<group> <path_to_directory>

    예제

    # chown -R ceph:ceph /var/lib/ceph/osd
    # chown -R ceph:ceph /var/log/ceph
    # chown -R ceph:ceph /var/run/ceph
    # chown -R ceph:ceph /etc/ceph

    참고

    다음 find 명령을 사용하면 다수의 디스크가 많은 Ceph 스토리지 클러스터에서 chown 명령을 병렬로 사용하여 소유권을 변경하는 프로세스를 빠르게 수행할 수 있습니다.

    # find /var/lib/ceph/osd -maxdepth 1 -mindepth 1 -print | xargs -P12 -n1 chown -R ceph:ceph
  6. SELinux가 강제 모드 또는 허용 모드로 설정된 경우 다음 재부팅을 위해 파일에서 SELinux 컨텍스트 재지정을 설정합니다.

    # touch /.autorelabel
    주의

    SELinux는 모든 파일 시스템을 트래버스하고 레이블이 잘못 지정된 파일을 수정해야 하므로 레이블을 다시 지정하는 데 시간이 오래 걸립니다. 디렉터리의 레이블 재지정을 제외하려면 재부팅하기 전에 /etc/selinux/fixfiles_exclude_dirs 파일에 디렉토리를 추가합니다.

    참고

    배치 그룹(PG)당 많은 개체가 있는 환경에서는 디렉터리 열거 속도가 감소하여 성능에 부정적인 영향을 미칩니다. 이는 SELinux 컨텍스트를 확인하는 xattr 쿼리의 추가로 인해 발생합니다. 마운트 시 컨텍스트를 설정하면 컨텍스트에 대한 xattr 쿼리가 제거되고 특히 느린 디스크에서 전체 디스크 성능이 도움이 됩니다.

    /etc/ceph/ceph.conf 파일의 [osd] 섹션에 다음 행을 추가합니다.

    +

    osd_mount_options_xfs=rw,noatime,inode64,context="system_u:object_r:ceph_var_lib_t:s0"
  7. root 로서 커널에서 장치 이벤트를 재생합니다.

    # udevadm trigger
  8. rootceph-osd 프로세스를 활성화합니다.

    # systemctl enable ceph-osd.target
    # systemctl enable ceph-osd@<osd_id>
  9. root 로서 OSD 노드를 재부팅합니다.

    # shutdown -r now
  10. 다음 OSD 노드로 이동합니다.

    참고

    nooutnorebalance 플래그가 설정된 경우 스토리지 클러스터는 HEALTH_WARN 상태입니다.

    $ ceph health
    HEALTH_WARN noout,norebalance flag(s) set

Ceph Storage 클러스터를 업그레이드한 후 이전에 설정한 OSD 플래그를 설정 해제하고 스토리지 클러스터 상태를 확인합니다.

모니터 노드에서 및 모든 OSD 노드가 업그레이드된 후 nooutnorebalance 플래그를 설정 해제합니다.

# ceph osd unset noout
# ceph osd unset norebalance

또한 ceph osd require-osd-release <release> 명령을 실행합니다. 이 명령을 사용하면 더 이상 Red Hat Ceph Storage 2.3이 있는 OSD를 스토리지 클러스터에 추가할 수 없습니다. 이 명령을 실행하지 않으면 스토리지 상태가 HEALTH_WARN 이 됩니다.

# ceph osd require-osd-release luminous

추가 리소스

  • 스토리지 클러스터에 새 OSD를 추가하여 스토리지 용량을 확장하려면 Red Hat Ceph Storage 3 관리 가이드OSD 추가 섹션을 참조하십시오.

Ceph Object Gateway 노드 업그레이드

이 섹션에서는 Ceph Object Gateway 노드를 이후 버전으로 업그레이드하는 단계를 설명합니다.

사전 요구 사항

  • Red Hat은 HAProxy 와 같은 로드 밸런서 뒤에 Ceph 오브젝트 게이트웨이를 두는 것이 좋습니다. 로드 밸런서를 사용하는 경우 요청이 제공되지 않으면 로드 밸런서에서 Ceph Object Gateway를 제거합니다.
  • rgw_region_root_pool 매개변수에 지정된 리전 풀에 사용자 지정 이름을 사용하는 경우 Ceph 구성 파일의 [global] 섹션에 rgw_zonegroup_root_pool 매개변수를 추가합니다. rgw_zonegroup_root_pool 의 값을 rgw_region_root_pool 과 동일하게 설정합니다. 예를 들면 다음과 같습니다.

    [global]
    rgw_zonegroup_root_pool = .us.rgw.root

절차

스토리지 클러스터의 각 Ceph Object Gateway 노드에서 다음 단계를 수행합니다. 한 번에 하나의 노드만 업그레이드합니다.

  1. Red Hat Ceph Storage를 설치하기 위해 온라인 리포지토리를 사용한 경우 2 리포지토리를 비활성화합니다.

    # subscription-manager repos --disable=rhel-7-server-rhceph-2.3-tools-rpms --disable=rhel-7-server-rhceph-2-installer-rpms
  2. Red Hat Ceph Storage 3 툴 리포지토리를 활성화합니다.

    [root@gateway ~]# subscription-manager repos --enable=rhel-7-server-rhceph-3-tools-els-rpms
  3. Ceph Object Gateway 프로세스(ceph-radosgw)를 중지합니다.

    # service ceph-radosgw stop
  4. ceph-radosgw 패키지를 업데이트합니다.

    # yum update ceph-radosgw
  5. 새로 생성된 /var/lib/ceph/radosgw//var/log/ceph/ 디렉터리에 대한 소유자 및 그룹 권한을 ceph 로 변경합니다.

    # chown -R ceph:ceph /var/lib/ceph/radosgw
    # chown -R ceph:ceph /var/log/ceph
  6. SELinux가 강제 또는 허용 모드에서 실행되도록 설정된 경우 다음 부팅 시 SELinux 컨텍스트의 레이블을 다시 지정하도록 지시합니다.

    # touch /.autorelabel
    중요

    SELinux는 모든 파일 시스템을 통과하고 레이블이 잘못 지정된 파일을 수정해야 하므로 레이블을 다시 지정하는 데 시간이 오래 걸립니다. 디렉터리의 레이블이 다시 지정되지 않은 경우 재부팅하기 전에 /etc/selinux/fixfiles_exclude_dirs 파일에 추가합니다.

  7. ceph-radosgw 프로세스를 활성화합니다.

    # systemctl enable ceph-radosgw.target
    # systemctl enable ceph-radosgw@rgw.<hostname>

    <hostname> 을 Ceph Object Gateway 호스트의 이름으로 바꿉니다(예: gateway-node ).

    # systemctl enable ceph-radosgw.target
    # systemctl enable ceph-radosgw@rgw.gateway-node
  8. Ceph Object Gateway 노드 재부팅

    # shutdown -r now
  9. 로드 밸런서를 사용하는 경우 Ceph Object Gateway 노드를 다시 로드 밸런서에 추가합니다.

예를 들면 다음과 같습니다.

Ceph 클라이언트 노드 업그레이드

Ceph 클라이언트는 다음과 같습니다.

  • Ceph 블록 장치
  • OpenStack Nova Compute 노드
  • QEMU/KVM 하이퍼바이저
  • Ceph 클라이언트 측 라이브러리를 사용하는 사용자 정의 애플리케이션

Red Hat은 모든 Ceph 클라이언트가 Ceph 스토리지 클러스터와 동일한 버전을 실행하도록 권장합니다.

사전 요구 사항

  • 예기치 않은 오류가 발생하지 않도록 패키지를 업그레이드하는 동안 Ceph 클라이언트 노드에 대한 모든 I/O 요청을 중지합니다.

절차

  1. 소프트웨어 리포지토리를 사용하여 Red Hat Ceph Storage 2 클라이언트를 설치한 경우 리포지토리를 비활성화합니다.

    # subscription-manager repos --disable=rhel-7-server-rhceph-2-tools-rpms --disable=rhel-7-server-rhceph-2-installer-rpms
    참고

    Red Hat Ceph Storage 2 클라이언트에 대해 ISO 기반 설치를 수행한 경우 이 첫 번째 단계를 건너뜁니다.

  2. 클라이언트 노드에서 Red Hat Ceph Storage Tools 3 리포지토리를 활성화합니다.

    [root@gateway ~]# subscription-manager repos --enable=rhel-7-server-rhceph-3-tools-els-rpms
  3. 클라이언트 노드에서 ceph-common 패키지를 업데이트합니다.

    # yum update ceph-common

ceph-common 패키지를 업그레이드한 후 Ceph 클라이언트 측 라이브러리에 종속된 애플리케이션을 다시 시작합니다.

참고

QEMU/KVM 인스턴스를 실행하거나 전용 QEMU/KVM 클라이언트를 사용하는 OpenStack Nova 컴퓨팅 노드를 업그레이드하는 경우 이 경우 인스턴스를 다시 시작할 수 없으므로 QEMU/KVM 인스턴스를 중지 및 시작합니다.