7.3. Ansible을 사용하여 스토리지 클러스터 업그레이드
Ansible 배포 툴을 사용하면 롤링 업그레이드를 수행하여 Red Hat Ceph Storage 클러스터를 업그레이드할 수 있습니다. 이러한 단계는 달리 명시되지 않는 한 베어 메탈 및 컨테이너 배포에 모두 적용됩니다.
사전 요구 사항
- Ansible 관리 노드에 대한 루트 수준 액세스.
-
ansible
사용자 계정.
절차
/usr/share/ceph-ansible/
디렉토리로 이동합니다.예제
[root@admin ~]# cd /usr/share/ceph-ansible/
Red Hat Ceph Storage 3에서 Red Hat Ceph Storage 4로 업그레이드하는 경우
group_vars/all.yml
,group_vars/osds.yml
파일의 백업 사본,group_vars/clients.yml
파일의 백업 사본을 만듭니다.[root@admin ceph-ansible]# cp group_vars/all.yml group_vars/all_old.yml [root@admin ceph-ansible]# cp group_vars/osds.yml group_vars/osds_old.yml [root@admin ceph-ansible]# cp group_vars/clients.yml group_vars/clients_old.yml
Red Hat Ceph Storage 3에서 Red Hat Ceph Storage 4로 업그레이드하는 경우
group_vars/all.yml.sample
,group_vars/osds.yml.sample
및group_vars/clients.yml.sample
파일의 새 복사본을 생성하고group_vars/all.yml
파일 이름을 group_vars/all.yml , group_vars/osds.yml ,group_vars/osds.yml
,group_vars/osds.yml.yml
로 변경합니다. 그에 따라 열고 편집하여 이전에 백업한 사본에 변경 사항을 적용합니다.[root@admin ceph-ansible]# cp group_vars/all.yml.sample group_vars/all.yml [root@admin ceph-ansible]# cp group_vars/osds.yml.sample group_vars/osds.yml [root@admin ceph-ansible]# cp group_vars/clients.yml.sample group_vars/clients.yml
group_vars/osds.yml
파일을 편집합니다. 다음 옵션을 추가하고 설정합니다.nb_retry_wait_osd_up: 60 delay_wait_osd_up: 10
참고이는 기본값입니다. 사용 사례에 따라 값을 수정할 수 있습니다.
Red Hat Ceph Storage 4의 새 마이너 버전으로 업그레이드하는 경우
group_vars/all.yml
의grafana_container_image
값이group_vars/all.yml.sample
과 동일한지 확인합니다. 동일하지 않은 경우 다음과 같이 편집합니다.예제
grafana_container_image: registry.redhat.io/rhceph/rhceph-4-dashboard-rhel8:4
참고표시된 이미지 경로는
ceph-ansible
버전 4.0.23-1에 포함되어 있습니다.샘플 파일에서 최신
site.yml
또는site-container.yml
파일을 복사합니다.베어 메탈 배포의 경우:
[root@admin ceph-ansible]# cp site.yml.sample site.yml
컨테이너 배포의 경우:
[root@admin ceph-ansible]# cp site-container.yml.sample site-container.yml
group_vars/all.yml
파일을 열고 다음 옵션을 편집합니다.fetch_directory
옵션을 추가합니다.fetch_directory: FULL_DIRECTORY_PATH
- 대체 버전
- Ansible 사용자의 홈 디렉터리와 같이 쓰기 가능한 위치가 있는 FULL_DIRECTORY_PATH.
업그레이드하려는 클러스터에 Ceph Object Gateway 노드가 포함된 경우
radosgw_interface
옵션을 추가합니다.radosgw_interface: INTERFACE
- 대체 버전
- Ceph Object Gateway 노드가 수신 대기하는 인터페이스를 사용하여 인터넷 연결을 수행합니다.
현재 설정에 SSL 인증서가 구성된 경우 다음을 편집해야 합니다.
radosgw_frontend_ssl_certificate: /etc/pki/ca-trust/extracted/CERTIFICATE_NAME radosgw_frontend_port: 443
기본 OSD 오브젝트 저장소는 BlueStore입니다. 기존 OSD 오브젝트 저장소를 유지하려면
osd_objectstore
옵션을filestore
로 명시적으로 설정해야 합니다.osd_objectstore: filestore
참고osd_objectstore
옵션을filestore
로 설정하면 OSD는 BlueStore 대신 FileStore를 사용합니다.중요Red Hat Ceph Storage 4부터 FileStore는 더 이상 사용되지 않는 기능입니다. Red Hat은 FileStore OSD를 BlueStore OSD로 마이그레이션하는 것이 좋습니다.
-
Red Hat Ceph Storage 4.1부터
/usr/share/ceph-ansible/group_vars/all.yml
에서dashboard_admin_password
및grafana_admin_password
의 주석 처리를 해제하거나 설정해야 합니다. 각각에 대해 보안 암호를 설정합니다.dashboard_admin_user
및grafana_admin_user
의 사용자 지정 사용자 이름도 설정합니다. 베어 메탈 및 컨테이너 배포 모두에 대해 다음을 수행합니다.
upgrade_ceph_packages
옵션의 주석을 제거하고True
로 설정합니다.upgrade_ceph_packages: True
ceph_rhcs_version
옵션을4
로 설정합니다.ceph_rhcs_version: 4
참고ceph_rhcs_version
옵션을4
로 설정하면 최신 버전의 Red Hat Ceph Storage 4가 표시됩니다.ceph_docker_registry
정보를all.yml
에 추가합니다.구문
ceph_docker_registry: registry.redhat.io ceph_docker_registry_username: SERVICE_ACCOUNT_USER_NAME ceph_docker_registry_password: TOKEN
참고Red Hat Registry Service 계정이 없는 경우 레지스트리 서비스 계정 웹 페이지를 사용하여 생성합니다. 자세한 내용은 Red Hat Container Registry Authentication Knowledgebase 문서를 참조하십시오.
참고ceph_docker_registry_username
및ceph_docker_registry_password
매개변수에 서비스 계정을 사용하는 것 외에도 고객 포털 자격 증명을 사용하지만 보안을 보장하기 위해ceph_docker_registry_password
매개변수를 암호화할 수 있습니다. 자세한 내용은 ansible-vault를 사용하여 Ansible 암호 변수 암호화 를 참조하십시오.
컨테이너 배포의 경우 다음을 수행합니다.
ceph_docker_image
옵션을 변경하여 Ceph 4 컨테이너 버전을 가리킵니다.ceph_docker_image: rhceph/rhceph-4-rhel8
rhceph/rhceph-4-rhel8
의 최신 버전을 가리키도록ceph_docker_image_tag
옵션을 변경합니다.ceph_docker_image_tag: latest
-
Red Hat Ceph Storage 3에서 Red Hat Ceph Storage 4로 업그레이드하는 경우 Ansible 인벤토리 파일을 기본적으로 열고
[grafana-server]
섹션에 Ceph 대시보드 노드 이름 또는 IP 주소를 추가합니다.이 섹션이 없는 경우 노드 이름 또는 IP 주소와 함께 이 섹션을 추가합니다.
Ansible 사용자로 전환하거나 Ansible 사용자로 로그인한 다음
rolling_update.yml
플레이북을 실행합니다.[ansible@admin ceph-ansible]$ ansible-playbook infrastructure-playbooks/rolling_update.yml -i hosts
중요rolling_update.yml
플레이북에--limit
Ansible 옵션을 사용하는 것은 지원되지 않습니다.RBD 미러링 데몬 노드의
root
사용자로rbd-mirror
패키지를 수동으로 업그레이드합니다.[root@rbd ~]# yum upgrade rbd-mirror
rbd-mirror
데몬을 다시 시작합니다.systemctl restart ceph-rbd-mirror@CLIENT_ID
스토리지 클러스터의 상태를 확인합니다.
베어 메탈 배포의 경우
root
사용자로 모니터 노드에 로그인하고 Ceph status 명령을 실행합니다.[root@mon ~]# ceph -s
컨테이너 배포의 경우
root
사용자로 Ceph Monitor 노드에 로그인합니다.실행 중인 컨테이너를 모두 나열합니다.
Red Hat Enterprise Linux 7
[root@mon ~]# docker ps
Red Hat Enterprise Linux 8
[root@mon ~]# podman ps
상태 점검:
Red Hat Enterprise Linux 7
[root@mon ~]# docker exec ceph-mon-MONITOR_NAME ceph -s
Red Hat Enterprise Linux 8
[root@mon ~]# podman exec ceph-mon-MONITOR_NAME ceph -s
- 대체 버전
이전 단계에서 찾은 Ceph Monitor 컨테이너의 이름이 MONITOR_NAME 입니다.
예제
[root@mon ~]# podman exec ceph-mon-mon01 ceph -s
선택 사항: Red Hat Ceph Storage 3.x에서 Red Hat Ceph Storage 4.x로 업그레이드하는 경우 다음 상태 경고가 표시될 수 있습니다. 336 OSD에서 탐지된 레거시 BlueStore 통계 보고 이는 최신 코드가 풀 통계를 다르게 계산하기 때문에 발생합니다.
bluestore_fsck_quick_fix_on_mount
매개변수를 설정하여 이 문제를 해결할 수 있습니다.bluestore_fsck_quick_fix_on_mount
를true
로 설정합니다.예제
[root@mon ~]# ceph config set osd bluestore_fsck_quick_fix_on_mount true
OSD가 중단된 동안 데이터 이동을 방지하려면
noout
및norebalance
플래그를 설정합니다.예제
[root@mon ~]# ceph osd set noout [root@mon ~]# ceph osd set norebalance
베어 메탈 배포의 경우 스토리지 클러스터의 모든 OSD 노드에서
ceph-osd.target
을 다시 시작합니다.예제
[root@osd ~]# systemctl restart ceph-osd.target
컨테이너화된 배포의 경우 개별 OSD를 하나씩 다시 시작하고 모든 배치 그룹이
active+clean
상태가 될 때까지 기다립니다.구문
systemctl restart ceph-osd@OSD_ID.service
예제
[root@osd ~]# systemctl restart ceph-osd@0.service
모든 OSD가 복구되면
nout
및norebalance
플래그를 설정 해제합니다.예제
[root@mon ~]# ceph osd unset noout [root@mon ~]# ceph osd unset norebalance
모든 OSD
가 복구되면 Bluestore_fsck_quick_fix_on_mount
를false
로 설정합니다.예제
[root@mon ~]# ceph config set osd bluestore_fsck_quick_fix_on_mount false
선택 사항: 베어 메탈 배포를 위한 대체 방법은 OSD 서비스를 중지하고,
ceph-
bluestore-tool 명령을 사용하여 OSD에서 복구 기능을 실행한 다음, OSD 서비스를 시작하는 것입니다.OSD 서비스를 중지합니다.
[root@osd ~]# systemctl stop ceph-osd.target
OSD에서 복구 기능을 실행하여 실제 OSD ID를 지정합니다.
구문
ceph-bluestore-tool --path /var/lib/ceph/osd/ceph-OSDID repair
예제
[root@osd ~]# ceph-bluestore-tool --path /var/lib/ceph/osd/ceph-2 repair
OSD 서비스를 시작합니다.
[root@osd ~]# systemctl start ceph-osd.target
업그레이드가 완료되면 Ansible 플레이북을 실행하여 FileStore OSD를 BlueStore OSD로 마이그레이션할 수 있습니다.
구문
ansible-playbook infrastructure-playbooks/filestore-to-bluestore.yml --limit OSD_NODE_TO_MIGRATE
예제
[ansible@admin ceph-ansible]$ ansible-playbook infrastructure-playbooks/filestore-to-bluestore.yml --limit osd01
마이그레이션이 완료되면 다음 하위 단계를 수행합니다.
group_vars/osds.yml
파일을 편집하려면 을 열고osd_objectstore
옵션을bluestore
로 설정합니다. 예를 들면 다음과 같습니다.osd_objectstore: bluestore
lvm_volumes
변수를 사용하는 경우journal
및journal_vg
옵션을 각각db
및db_vg
로 변경합니다. 예를 들면 다음과 같습니다.이전
lvm_volumes: - data: /dev/sdb journal: /dev/sdc1 - data: /dev/sdd journal: journal1 journal_vg: journals
Bluestore로 변환 한 후
lvm_volumes: - data: /dev/sdb db: /dev/sdc1 - data: /dev/sdd db: journal1 db_vg: journals
OpenStack 환경에서 작업하는 경우 풀에 RBD 프로필
을
사용하도록 모든 VDDK 사용자를 업데이트합니다. 다음 명령은root
사용자로 실행해야 합니다.Glance 사용자:
구문
ceph auth caps client.glance mon 'profile rbd' osd 'profile rbd pool=GLANCE_POOL_NAME'
예제
[root@mon ~]# ceph auth caps client.glance mon 'profile rbd' osd 'profile rbd pool=images'
Cinder 사용자:
구문
ceph auth caps client.cinder mon 'profile rbd' osd 'profile rbd pool=CINDER_VOLUME_POOL_NAME, profile rbd pool=NOVA_POOL_NAME, profile rbd-read-only pool=GLANCE_POOL_NAME'
예제
[root@mon ~]# ceph auth caps client.cinder mon 'profile rbd' osd 'profile rbd pool=volumes, profile rbd pool=vms, profile rbd-read-only pool=images'
OpenStack 일반 사용자:
구문
ceph auth caps client.openstack mon 'profile rbd' osd 'profile rbd-read-only pool=CINDER_VOLUME_POOL_NAME, profile rbd pool=NOVA_POOL_NAME, profile rbd-read-only pool=GLANCE_POOL_NAME'
예제
[root@mon ~]# ceph auth caps client.openstack mon 'profile rbd' osd 'profile rbd-read-only pool=volumes, profile rbd pool=vms, profile rbd-read-only pool=images'
중요라이브 클라이언트 마이그레이션을 수행하기 전에 이러한 CAPS 업데이트를 수행합니다. 이를 통해 클라이언트는 메모리에서 실행되는 새 라이브러리를 사용하여 이전 CAPS 설정이 캐시에서 삭제하고 새 RBD 프로필 설정을 적용할 수 있습니다.
선택 사항: 클라이언트 노드에서 Ceph 클라이언트 측 라이브러리에 따라 애플리케이션을 다시 시작합니다.
참고QEMU 또는 KVM 인스턴스를 실행하거나 전용 QEMU 또는 KVM 클라이언트를 사용하는 OpenStack Nova 컴퓨팅 노드를 업그레이드하는 경우 이 경우 인스턴스를 다시 시작하지 않기 때문에 QEMU 또는 KVM 인스턴스를 중지하고 시작합니다.
추가 리소스
- 자세한 내용은 제한 옵션 이해를 참조하십시오.
- 자세한 내용은 Red Hat Ceph Storage 관리 가이드에서 FileStore에서 개체 저장소를 마이그레이션하는 방법을 참조하십시오.
- 자세한 내용은 지식베이스 문서 after a ceph-upgrade the cluster status reports 'Legacy BlueStore stats reporting detected'.