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.ymlRed 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.ymlgroup_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: Trueceph_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-rhel8rhceph/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플레이북에--limitAnsible 옵션을 사용하는 것은 지원되지 않습니다.RBD 미러링 데몬 노드의
root사용자로rbd-mirror패키지를 수동으로 업그레이드합니다.[root@rbd ~]# yum upgrade rbd-mirrorrbd-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 psRed Hat Enterprise Linux 8
[root@mon ~]# podman ps상태 점검:
Red Hat Enterprise Linux 7
[root@mon ~]# docker exec ceph-mon-MONITOR_NAME ceph -sRed 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 trueOSD가 중단된 동안 데이터 이동을 방지하려면
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.targetOSD에서 복구 기능을 실행하여 실제 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 repairOSD 서비스를 시작합니다.
[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: bluestorelvm_volumes변수를 사용하는 경우journal및journal_vg옵션을 각각db및db_vg로 변경합니다. 예를 들면 다음과 같습니다.이전
lvm_volumes: - data: /dev/sdb journal: /dev/sdc1 - data: /dev/sdd journal: journal1 journal_vg: journalsBluestore로 변환 한 후
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 인스턴스를 중지하고 시작합니다.