부록 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 노드만 업그레이드합니다.
소프트웨어 리포지토리를 사용하여 Red Hat Ceph Storage 2를 설치한 경우 리포지토리를 비활성화합니다.
# subscription-manager repos --disable=rhel-7-server-rhceph-2-mon-rpms --disable=rhel-7-server-rhceph-2-installer-rpms
Red Hat Ceph Storage 3 Monitor 리포지토리를 활성화합니다.
[root@monitor ~]# subscription-manager repos --enable=rhel-7-server-rhceph-3-mon-els-rpms
root
로 monitor 프로세스를 중지합니다.구문
# service ceph stop <daemon_type>.<monitor_host_name>
예제
# service ceph stop mon.node1
root
로ceph-mon
패키지를 업데이트합니다.# yum update ceph-mon
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 인증 키 파일을 각각
glance
및cinder
에서 소유해야 합니다. 예를 들면 다음과 같습니다.# ls -l /etc/ceph/ ... -rw-------. 1 glance glance 64 <date> ceph.client.glance.keyring -rw-------. 1 cinder cinder 64 <date> ceph.client.cinder.keyring ...
SELinux가 강제 모드 또는 허용 모드인 경우 다음 재부팅 시 SELinux 컨텍스트의 레이블을 다시 지정합니다.
# touch /.autorelabel
주의SELinux가 모든 파일 시스템을 트래버스하고 레이블이 잘못 지정된 파일을 수정해야 하므로 레이블을 다시 지정하는 데 시간이 오래 걸릴 수 있습니다. 디렉터리의 레이블을 다시 레이블로 지정하지 않도록 하려면 재부팅하기 전에
/etc/selinux/fixfiles_exclude_dirs
파일에 디렉토리를 추가합니다.root
로ceph-mon
프로세스를 활성화합니다.# systemctl enable ceph-mon.target # systemctl enable ceph-mon@<monitor_host_name>
root
로서 Monitor 노드를 재부팅합니다.# shutdown -r now
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
유틸리티를 사용하여 다음 명령을 사용합니다.
ceph-mgr
패키지를 설치합니다.[root@node1 ~]# yum install ceph-mgr
/var/lib/ceph/mgr/ceph-호스트 이름/
디렉터리를 생성합니다.mkdir /var/lib/ceph/mgr/ceph-hostname
hostname 을
ceph-mgr
데몬이 배포될 노드의 호스트 이름으로 교체합니다. 예를 들면 다음과 같습니다.[root@node1 ~]# mkdir /var/lib/ceph/mgr/ceph-node1
새로 생성된 디렉터리에서
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
/var/lib/ceph/mgr/
디렉터리의 소유자 및 그룹을ceph:ceph
로 변경합니다.[root@node1 ~]# chown -R ceph:ceph /var/lib/ceph/mgr
ceph-mgr
대상을 활성화합니다.[root@node1 ~]# systemctl enable ceph-mgr.target
ceph-mgr
인스턴스를 활성화하고 시작합니다.systemctl enable ceph-mgr@hostname systemctl start ceph-mgr@hostname
hostname 을
ceph-mgr
이 배포할 노드의 호스트 이름으로 교체합니다. 예를 들면 다음과 같습니다.[root@node1 ~]# systemctl enable ceph-mgr@node1 [root@node1 ~]# systemctl start ceph-mgr@node1
ceph-mgr
데몬이 시작되었는지 확인합니다.ceph -s
출력에는
services:
섹션 아래의 다음 행과 유사한 행이 포함됩니다.mgr: node1(active)
-
현재 활성 데몬이 실패하는 경우 더 많은
ceph-mgr
데몬을 설치하여 대기 데몬으로 작동합니다.
추가 리소스
OSD 노드 업그레이드
이 섹션에서는 Ceph OSD 노드를 최신 버전으로 업그레이드하는 단계를 설명합니다.
사전 요구 사항
OSD 노드를 업그레이드할 때 OSD가 다운되거나 다시 시작될 수 있으므로 일부 배치 그룹이 성능이 저하됩니다. Ceph가 복구 프로세스를 시작하지 못하도록 하려면 Monitor 노드에서 noout
및 norebalance
OSD 플래그를 설정합니다.
[root@monitor ~]# ceph osd set noout [root@monitor ~]# ceph osd set norebalance
절차
스토리지 클러스터의 각 OSD 노드에서 다음 단계를 수행합니다. 한 번에 하나의 OSD 노드만 업그레이드합니다. Red Hat Ceph Storage 2.3에 대해 ISO 기반 설치를 수행한 경우 이 첫 번째 단계를 건너뜁니다.
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
Red Hat Ceph Storage 3 OSD 리포지토리를 활성화합니다.
[root@osd ~]# subscription-manager repos --enable=rhel-7-server-rhceph-3-osd-els-rpms
root
로 실행 중인 OSD 프로세스를 중지합니다.구문
# service ceph stop <daemon_type>.<osd_id>
예제
# service ceph stop osd.0
root
로ceph-osd
패키지를 업데이트합니다.# yum update ceph-osd
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
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"
root
로서 커널에서 장치 이벤트를 재생합니다.# udevadm trigger
root
로ceph-osd
프로세스를 활성화합니다.# systemctl enable ceph-osd.target # systemctl enable ceph-osd@<osd_id>
root
로서 OSD 노드를 재부팅합니다.# shutdown -r now
다음 OSD 노드로 이동합니다.
참고noout
및norebalance
플래그가 설정된 경우 스토리지 클러스터는HEALTH_WARN
상태입니다.$ ceph health HEALTH_WARN noout,norebalance flag(s) set
Ceph Storage 클러스터를 업그레이드한 후 이전에 설정한 OSD 플래그를 설정 해제하고 스토리지 클러스터 상태를 확인합니다.
모니터 노드에서 및 모든 OSD 노드가 업그레이드된 후 noout
및 norebalance
플래그를 설정 해제합니다.
# 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 노드에서 다음 단계를 수행합니다. 한 번에 하나의 노드만 업그레이드합니다.
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
Red Hat Ceph Storage 3 툴 리포지토리를 활성화합니다.
[root@gateway ~]# subscription-manager repos --enable=rhel-7-server-rhceph-3-tools-els-rpms
Ceph Object Gateway 프로세스(
ceph-radosgw
)를 중지합니다.# service ceph-radosgw stop
ceph-radosgw
패키지를 업데이트합니다.# yum update ceph-radosgw
새로 생성된
/var/lib/ceph/radosgw/
및/var/log/ceph/
디렉터리에 대한 소유자 및 그룹 권한을ceph
로 변경합니다.# chown -R ceph:ceph /var/lib/ceph/radosgw # chown -R ceph:ceph /var/log/ceph
SELinux가 강제 또는 허용 모드에서 실행되도록 설정된 경우 다음 부팅 시 SELinux 컨텍스트의 레이블을 다시 지정하도록 지시합니다.
# touch /.autorelabel
중요SELinux는 모든 파일 시스템을 통과하고 레이블이 잘못 지정된 파일을 수정해야 하므로 레이블을 다시 지정하는 데 시간이 오래 걸립니다. 디렉터리의 레이블이 다시 지정되지 않은 경우 재부팅하기 전에
/etc/selinux/fixfiles_exclude_dirs
파일에 추가합니다.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
Ceph Object Gateway 노드 재부팅
# shutdown -r now
- 로드 밸런서를 사용하는 경우 Ceph Object Gateway 노드를 다시 로드 밸런서에 추가합니다.
예를 들면 다음과 같습니다.
Ceph 클라이언트 노드 업그레이드
Ceph 클라이언트는 다음과 같습니다.
- Ceph 블록 장치
- OpenStack Nova Compute 노드
- QEMU/KVM 하이퍼바이저
- Ceph 클라이언트 측 라이브러리를 사용하는 사용자 정의 애플리케이션
Red Hat은 모든 Ceph 클라이언트가 Ceph 스토리지 클러스터와 동일한 버전을 실행하도록 권장합니다.
사전 요구 사항
- 예기치 않은 오류가 발생하지 않도록 패키지를 업그레이드하는 동안 Ceph 클라이언트 노드에 대한 모든 I/O 요청을 중지합니다.
절차
소프트웨어 리포지토리를 사용하여 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 기반 설치를 수행한 경우 이 첫 번째 단계를 건너뜁니다.
클라이언트 노드에서 Red Hat Ceph Storage Tools 3 리포지토리를 활성화합니다.
[root@gateway ~]# subscription-manager repos --enable=rhel-7-server-rhceph-3-tools-els-rpms
클라이언트 노드에서
ceph-common
패키지를 업데이트합니다.# yum update ceph-common
ceph-common
패키지를 업그레이드한 후 Ceph 클라이언트 측 라이브러리에 종속된 애플리케이션을 다시 시작합니다.
QEMU/KVM 인스턴스를 실행하거나 전용 QEMU/KVM 클라이언트를 사용하는 OpenStack Nova 컴퓨팅 노드를 업그레이드하는 경우 이 경우 인스턴스를 다시 시작할 수 없으므로 QEMU/KVM 인스턴스를 중지 및 시작합니다.