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 노드만 업그레이드합니다.
소프트웨어 리포지토리를 사용하여 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-hostnamehostname 을
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 인스턴스를 중지 및 시작합니다.