1.9. 업그레이드 프로세스
스토리지 관리자는 Ansible 플레이북을 사용하여 Red Hat Ceph Storage 4 스토리지 클러스터를 Red Hat Ceph Storage 5로 업그레이드합니다. rolling_update.yml
Ansible Playbook은 Red Hat Ceph Storage 배포를 위해 업그레이드를 수행합니다. ceph-ansible
은 Ceph 노드를 다음 순서로 업그레이드합니다.
- Ceph Monitor
- Ceph Manager
- Ceph OSD 노드
- MDS 노드
- Ceph Object Gateway(RGW) 노드
- Ceph RBD-mirror 노드
- Ceph NFS 노드
- Ceph iSCSI 게이트웨이 노드
- Ceph 클라이언트 노드
- Ceph-crash 데몬
- 모든 노드의 node-exporter
- Ceph 대시보드
스토리지 클러스터를 Red Hat Ceph Storage 4에서 Red Hat Ceph Storage 5로 업그레이드한 후 Grafana UI에 두 개의 대시보드가 표시됩니다. 이는 Red Hat Ceph Storage 4의 Prometheus 포트는 9092이고 Red Hat Ceph Storage 5의 경우 9095이기 때문입니다. grafana를 제거할 수 있습니다. cephadm
은 서비스와 데몬을 재배포하고 Grafana UI에서 이전 대시보드를 제거합니다.
Red Hat Ceph Storage 5는 컨테이너화된 배포만 지원합니다.
현재 Red Hat Ceph Storage 5에서는 Ceph -ansible
이 지원되지 않습니다. 즉, 스토리지 클러스터를 Red Hat Ceph Storage 5로 마이그레이션했으면 cephadm
을 사용하여 후속 업데이트를 수행해야 합니다.
단일 영역과 여러 영역을 사용하여 다중 사이트 Ceph Object Gateway를 배포하려면 all.yml
파일을 편집합니다. 자세한 내용은 Red Hat Ceph Storage 4 설치 가이드의 다중 사이트 Ceph Object Gateway 구성 을 참조하십시오.
Red Hat Ceph Storage 5에는 스토리지 클러스터의 데몬이 여러 버전의 Red Hat Ceph Storage를 실행하는 경우 DAE jenkinsfile_OLD_VERSION 경고를 반환하는 상태 점검 기능도 포함되어 있습니다. 데몬은 mon_warn_older_version_delay
옵션에 설정된 시간 값 이외의 여러 버전의 Red Hat Ceph Storage를 계속 실행할 때 트리거됩니다. 기본적으로 mon_warn_older_version_delay
옵션이 1 주로 설정됩니다. 이 설정을 사용하면 대부분의 업그레이드가 경고를 잘못 보지 않고 진행할 수 있습니다. 업그레이드 프로세스가 장기간 일시 중지되면 상태 경고를 음소거할 수 있습니다.
ceph health mute DAEMON_OLD_VERSION --sticky
업그레이드가 완료되면 상태 경고를 음소거합니다.
ceph health unmute DAEMON_OLD_VERSION
사전 요구 사항
- 실행 중인 Red Hat Ceph Storage 클러스터.
- 스토리지 클러스터의 모든 호스트에 대한 루트 수준 액세스.
- 유효한 고객 서브스크립션.
- Ansible 관리 노드에 대한 루트 수준 액세스.
-
Red Hat Ceph Storage 5에서 사용 가능한
최신 Ansible 및 ceph-
anible 버전입니다. -
Ansible 애플리케이션과 함께 사용할
ansible
사용자 계정입니다. - 스토리지 클러스터 노드가 Red Hat Enterprise Linux 8.4 EUS 이상으로 업그레이드됩니다.
Ansible 인벤토리 파일은 ceph-ansible
디렉터리에 있어야 합니다.
절차
Ansible 관리 노드에서 Ceph 및 Ansible 리포지토리를 활성화합니다.
Red Hat Enterprise Linux 8
subscription-manager repos --enable=rhceph-5-tools-for-rhel-8-x86_64-rpms --enable=ansible-2.9-for-rhel-8-x86_64-rpms
Red Hat Enterprise Linux 9
subscription-manager repos --enable=rhceph-5-tools-for-rhel-9-x86_64-rpms
Ansible 관리 노드에서 최신 버전의
ansible
및ceph-ansible
패키지가 설치되어 있는지 확인합니다.구문
dnf update ansible ceph-ansible
/usr/share/ceph-ansible/
디렉터리로 이동합니다.예제
[root@admin ~]# cd /usr/share/ceph-ansible
Red Hat Ceph Storage 4에서 Red Hat Ceph Storage 5로 업그레이드하는 경우
group_vars/osds.yml.sample
및group_vars/clients.sample
파일의 복사본을 각각 만들고 이를group_vars/osds.yml
,group_vars/clients.yml
로 변경합니다.예제
[root@admin ceph-ansible]# cp group_vars/osds.yml.sample group_vars/osds.yml [root@admin ceph-ansible]# cp group_vars/mdss.yml.sample group_vars/mdss.yml [root@admin ceph-ansible]# cp group_vars/rgws.yml.sample group_vars/rgws.yml [root@admin ceph-ansible]# cp group_vars/clients.yml.sample group_vars/clients.yml
-
Red Hat Ceph Storage 4에서 Red Hat Ceph Storage 5로 업그레이드하는 경우
group_vars/all.yml
파일을 편집하여 Red Hat Ceph Storage 5 세부 정보를 추가합니다. 위의 두 단계를 완료하면 이전
yaml
파일의 설정을 새yaml
파일로 복사합니다. 이러한 구성 매개변수의 값이 Red Hat Ceph Storage 5의 값으로ceph_rhcs_version
,ceph_docker_image
및grafana_container_image
값을 변경하지 마십시오. 이렇게 하면 클러스터와 관련된 모든 설정이 현재yaml
파일에 있습니다.예제
fetch_directory: ~/ceph-ansible-keys monitor_interface: eth0 public_network: 192.168.0.0/24 ceph_docker_registry_auth: true ceph_docker_registry_username: SERVICE_ACCOUNT_USER_NAME ceph_docker_registry_password: TOKEN dashboard_admin_user: DASHBOARD_ADMIN_USERNAME dashboard_admin_password: DASHBOARD_ADMIN_PASSWORD grafana_admin_user: GRAFANA_ADMIN_USER grafana_admin_password: GRAFANA_ADMIN_PASSWORD radosgw_interface: eth0 ceph_docker_image: "rhceph/rhceph-5-rhel8" ceph_docker_image_tag: "latest" ceph_docker_registry: "registry.redhat.io" node_exporter_container_image: registry.redhat.io/openshift4/ose-prometheus-node-exporter:v4.6 grafana_container_image: registry.redhat.io/rhceph/rhceph-5-dashboard-rhel8:5 prometheus_container_image: registry.redhat.io/openshift4/ose-prometheus:v4.6 alertmanager_container_image: registry.redhat.io/openshift4/ose-prometheus-alertmanager:v4.6
참고Red Hat Ceph Storage 5 컨테이너 이미지가 기본값으로 설정되어 있는지 확인합니다.
group_vars/osds.yml
파일을 편집합니다. 다음 옵션을 추가하고 설정합니다.구문
nb_retry_wait_osd_up: 50 delay_wait_osd_up: 30
group_vars/all.yml
파일을 열고 이전all.yml
파일에서 다음 값이 있는지 확인합니다.fetch_directory
옵션은 이전all.yml
파일과 동일한 값으로 설정됩니다.구문
fetch_directory: FULL_DIRECTORY_PATH
FULL_DIRECTORY_PATH 를 Ansible 사용자의 홈 디렉터리와 같은 쓰기 가능한 위치로 바꿉니다.
업그레이드하려는 클러스터에 Ceph Object Gateway 노드가 포함된 경우
radosgw_interface
옵션을 추가합니다.radosgw_interface: INTERFACE
INTERFACE 를 Ceph Object Gateway 노드에서 수신 대기하는 인터페이스로 교체합니다.
현재 설정에 SSL 인증서가 구성된 경우 다음을 편집합니다.
구문
radosgw_frontend_ssl_certificate: /etc/pki/ca-trust/extracted/CERTIFICATE_NAME radosgw_frontend_port: 443
upgrade_ceph_packages
옵션의 주석을 제거하고True
로 설정합니다.구문
upgrade_ceph_packages: True
스토리지 클러스터에 노드당 Ceph Object Gateway 인스턴스가 두 개 이상 있는 경우
radosgw_num_instances
설정의 주석 처리를 해제하고 클러스터의 노드당 인스턴스 수로 설정합니다.구문
radosgw_num_instances : NUMBER_OF_INSTANCES_PER_NODE
예제
radosgw_num_instances : 2
-
스토리지 클러스터에 Ceph Object Gateway 다중 사이트가 정의되어 있는 경우
all.yml
의 다중 사이트 설정을 확인하여 이전all.yml
파일에서와 동일한 값이 포함되어 있는지 확인합니다.
버킷이 생성되거나
num_shards = 0
인 경우 Red Hat Ceph Storage 5.3으로 업그레이드하기 전에 버킷을 수동으로 다시 정렬합니다.주의bucket_index_max_shards
가0
인 경우 이전 릴리스에서 Red Hat Ceph Storage 5.3으로 업그레이드하면 Ceph Object Gateway 버킷의 메타데이터가 손실되어 버킷에 액세스하지 못할 수 있습니다. 따라서bucket_index_max_shards
가11
shard로 설정되어 있는지 확인합니다. 그렇지 않은 경우 영역 그룹 수준에서 이 구성을 수정합니다.구문
radosgw-admin bucket reshard --num-shards 11 --bucket BUCKET_NAME
예제
[ceph: root@host01 /]# radosgw-admin bucket reshard --num-shards 11 --bucket mybucket
-
Ansible 관리 노드에
ansible-user
로 로그인합니다. --extra-vars
옵션을 사용하여infrastructure-playbooks/rolling_update.yml
플레이북을 업데이트하고health_osd_check_retries
및health_osd_check_delay
값을 각각50
및30
으로 변경합니다.예제
[root@admin ceph-ansible]# ansible-playbook -i hosts infrastructure-playbooks/rolling_update.yml --extra-vars "health_osd_check_retries=50 health_osd_check_delay=30"
각 OSD 노드에서 이러한 값은
ceph-
anible이 30초(최대 50번)마다 스토리지 클러스터 상태를 확인합니다. 즉ceph-ansible
은 각 OSD에 대해 최대 25분 정도 기다립니다.스토리지 클러스터의 사용된 스토리지 용량에 따라
health_osd_check_retries
옵션 값을 up 또는 down으로 조정합니다. 예를 들어 436TB 중 218TB 또는 스토리지 용량의 50%를 사용하는 경우health_osd_check_retries
옵션을50
으로 설정합니다./etc/ansible/hosts
는 Ansible 인벤토리 파일의 기본 위치입니다.rolling_update.yml
플레이북을 실행하여 스토리지 클러스터를 Red Hat Ceph Storage 4에서 Red Hat Ceph Storage 5로 변환합니다.구문
ansible-playbook -vvvv infrastructure-playbooks/rolling_update.yml -i INVENTORY_FILE
-vvv 옵션은 업그레이드 프로세스의 자세한 로그를 수집합니다.
예제
[ceph-admin@admin ceph-ansible]$ ansible-playbook -vvvv infrastructure-playbooks/rolling_update.yml -i hosts
중요rolling_update.yml
플레이북에--limit
Ansible 옵션을 사용하는 것은 지원되지 않습니다.- Ansible 플레이북 로그 출력을 검토하여 업그레이드 상태를 확인합니다.
검증
실행 중인 컨테이너를 모두 나열합니다.
예제
[root@mon ~]# podman ps
클러스터의 상태를 확인합니다. MONITOR_ID 를 이전 단계에서 찾은 Ceph Monitor 컨테이너의 이름으로 교체합니다.
구문
podman exec ceph-mon-MONITOR_ID ceph -s
예제
[root@mon ~]# podman exec ceph-mon-mon01 ceph -s
Ceph 클러스터 데몬 버전을 확인하여 모든 데몬 업그레이드를 확인합니다. MONITOR_ID 를 이전 단계에서 찾은 Ceph Monitor 컨테이너의 이름으로 교체합니다.
구문
podman exec ceph-mon-MONITOR_ID ceph --cluster ceph versions
예제
[root@mon ~]# podman exec ceph-mon-mon01 ceph --cluster ceph versions