1.2. Ceph 모니터
Ceph 모니터는 스토리지 클러스터 맵의 마스터 복사본을 유지하는 경량 프로세스입니다. 모든 Ceph 클라이언트가 Ceph에 접속하여 스토리지 클러스터 맵의 현재 사본을 검색하여 클라이언트가 풀에 바인딩하고 데이터를 읽고 쓸 수 있습니다.
Ceph 모니터는 Paxos 프로토콜의 변형을 사용하여 맵과 스토리지 클러스터 전체의 기타 중요 정보에 대한 합의점을 구축합니다. Ceph는 Paxos의 특성으로 인해 쿼럼을 설정하기 위해 대부분의 모니터를 실행해야 하므로 합의점을 설정합니다.
프로덕션 클러스터에 대한 지원을 받으려면 별도의 호스트에 3개 이상의 모니터가 필요합니다.
홀수의 모니터 배포를 권장합니다. 홀수의 Ceph 모니터는 심지어 모니터 수보다 실패 가능성이 높습니다. 예를 들어, 2개 모니터 배포에서 쿼럼을 유지 관리하기 위해 Ceph는 3개의 모니터, 1개의 모니터, 1개의 모니터, 5개의 모니터가 있는 2개의 오류를 허용할 수 없습니다. 따라서 홀수의 숫자를 사용하는 것이 좋습니다. Ceph에서는 대부분의 모니터가 실행되고 있고 서로 통신할 수 있어야 하며, 3개 중 2개, 4개 중 3개 등에서 통신할 수 있어야 합니다.
멀티 노드 Ceph 스토리지 클러스터의 초기 배포를 위해 Red Hat은 세 개 이상의 모니터가 있는 경우 한 번에 2개 이상의 모니터를 늘려야 합니다.
Ceph 모니터는 경량이므로 OpenStack 노드와 동일한 호스트에서 실행할 수 있습니다. 그러나 Red Hat은 별도의 호스트에서 모니터를 실행하는 것이 좋습니다.
Red Hat은 동일한 노드에서 Ceph 모니터 및 OSD의 배치를 지원하지 않습니다. 이렇게 하면 스토리지 클러스터 성능에 부정적인 영향을 미칠 수 있습니다.
Red Hat은 컨테이너화된 환경에서 Ceph 서비스를 조합하여만 지원합니다.
스토리지 클러스터에서 모니터를 제거하면 Ceph 모니터가 Paxos 프로토콜을 사용하여 마스터 스토리지 클러스터 맵에 대한 합의점을 설정한다고 고려하십시오. 쿼럼을 설정하기 위해 충분한 수의 Ceph 모니터가 있어야 합니다.
추가 리소스
- 지원되는 모든 Ceph 구성은 Red Hat Ceph Storage 지원 구성 지식 베이스 문서를 참조하십시오.
1.2.1. 새 Ceph Monitor 노드 준비
배포를 위해 새 Ceph 모니터 노드를 준비하기 전에 Red Hat Ceph Storage 설치 가이드의 Red Hat Ceph Storage 설치 요구 사항 장을 검토하십시오.
각 새 Ceph Monitor를 별도의 노드에 배포하고 스토리지 클러스터의 모든 Ceph Monitor 노드는 동일한 하드웨어에서 실행해야 합니다.
사전 요구 사항
- 네트워크 연결.
- 새 노드에 대한 루트 수준의 액세스.
절차
- 새 노드를 서버 랙에 추가합니다.
- 새 노드를 네트워크에 연결합니다.
최신 버전의 Red Hat Enterprise Linux 7 또는 Red Hat Enterprise Linux 8을 설치합니다.
Red Hat Enterprise Linux 7의 경우
ntp
를 설치하고 안정적인 시간 소스를 설정합니다.[root@mon ~]# yum install ntp
Red Hat Enterprise Linux 8의 경우
chrony
를 설치하고 안정적인 시간 소스를 구성합니다.[root@mon ~]# dnf install chrony
방화벽을 사용하는 경우 TCP 포트 6789를 엽니다.
[root@mon ~]# firewall-cmd --zone=public --add-port=6789/tcp [root@mon ~]# firewall-cmd --zone=public --add-port=6789/tcp --permanent
추가 리소스
-
chrony
에 대한 자세한 내용은 Red Hat Enterprise Linux 8 기본 시스템 설정 구성 을 참조하십시오.
1.2.2. Ansible을 사용하여 Ceph 모니터 추가
홀수의 모니터를 유지하기 위해 한 번에 두 개의 Ceph 모니터를 추가할 것을 권장합니다. 예를 들어 스토리지 클러스터에 3개의 Ceph 모니터가 있는 경우 모니터 수를 5개로 확장하는 것이 좋습니다.
사전 요구 사항
- 새 노드에 대한 루트 수준의 액세스.
- Ansible 관리 노드.
- Ansible에서 배포한 실행 중인 Red Hat Ceph Storage 클러스터.
절차
[mons]
섹션의/etc/ansible/hosts
Ansible 인벤토리 파일에 새 Ceph Monitor 노드를 추가합니다.예제
[mons] monitor01 monitor02 monitor03 NEW_MONITOR_NODE_NAME NEW_MONITOR_NODE_NAME
Ansible이 Ceph 노드에 연결할 수 있는지 확인합니다.
[root@admin ~]# ansible all -m ping
디렉터리를 Ansible 구성 디렉터리로 변경합니다.
[root@admin ~]# cd /usr/share/ceph-ansible
다음 단계 중 하나를 사용하여 Ceph Monitor를 추가할 수 있습니다.
베어 메탈 및 컨테이너 배포 모두
infrastructure-playbook
을 실행합니다.[root@admin ceph-ansible]# ansible-playbook -vvvv -i hosts infrastructure-playbooks/add-mon.yml
ansible 사용자로 사이트 플레이북 또는
site
-container베어 메탈 배포:
예제
[ansible@admin ceph-ansible]$ ansible-playbook -vvvv -i hosts site.yml --limit mons
컨테이너 배포:
예제
[ansible@admin ceph-ansible]$ ansible-playbook -vvvv -i hosts site-container.yml --limit mons
Ansible 플레이북이 실행을 완료하고 나면 새 Ceph Monitor 노드가 스토리지 클러스터에 표시됩니다.
구성 파일을 업데이트합니다.
베어 메탈 배포:
예제
[user@admin ceph-ansible]$ ansible-playbook -vvvv -i hosts site.yml --tags ceph_update_config
컨테이너 배포:
예제
[user@admin ceph-ansible]$ ansible-playbook -vvvv -i hosts site-container.yml --tags ceph_update_config
추가 리소스
1.2.3. 명령줄 인터페이스를 사용하여 Ceph Monitor 추가
홀수의 모니터를 유지하기 위해 한 번에 두 개의 Ceph 모니터를 추가할 것을 권장합니다. 예를 들어 스토리지 클러스터에 3개의 Ceph 모니터가 있는 경우 모니터 수를 5개로 확장하는 것이 좋습니다.
노드당 하나의 Ceph Monitor 데몬만 실행하는 것이 좋습니다.
사전 요구 사항
- 실행 중인 Red Hat Ceph Storage 클러스터.
- 실행 중인 Ceph Monitor 노드와 새 모니터 노드에 대한 루트 수준의 액세스.
절차
Red Hat Ceph Storage 4 모니터 리포지토리를 추가합니다.
Red Hat Enterprise Linux 7
[root@mon ~]# subscription-manager repos --enable=rhel-7-server-rhceph-4-mon-rpms
Red Hat Enterprise Linux 8
[root@mon ~]# subscription-manager repos --enable=rhceph-4-mon-for-rhel-8-x86_64-rpms
새 Ceph Monitor 노드에
ceph-mon
패키지를 설치합니다.Red Hat Enterprise Linux 7
[root@mon ~]# yum install ceph-mon
Red Hat Enterprise Linux 8
[root@mon ~]# dnf install ceph-mon
스토리지 클러스터에서 실행 중인 노드에서 Ceph 구성 파일의
[mon]
섹션에서mon_host
설정 목록을 편집합니다.새 Ceph Monitor 노드의 IP 주소를
mon_host
설정 목록에 추가합니다.구문
[mon] mon_host = MONITOR_IP : PORT MONITOR_IP : PORT ... NEW_MONITOR_IP : PORT
새 Ceph 모니터의 IP 주소를 Ceph 구성 파일의 [mon] 섹션에 추가하는 대신 새 모니터 노드에 대해 파일에 특정 섹션을 생성할 수 있습니다.
구문
[mon.MONITOR_ID] host = MONITOR_ID mon_addr = MONITOR_IP
참고mon_host
설정 목록은 DNS에서 확인할 수 있는 호스트 이름 또는 IP 주소 목록입니다. "" 또는 ";" 또는 "". 이 목록을 사용하면 스토리지 클러스터가 시작 또는 재시작 중에 새 Monitor 노드를 확인할 수 있습니다.중요mon_initial_members
설정은 Ceph Monitor 노드의 초기 쿼럼 그룹을 나열합니다. 해당 그룹의 한 멤버가 실패하면 해당 그룹의 다른 노드가 초기 모니터 노드가 됩니다. 프로덕션 스토리지 클러스터의 고가용성을 보장하기 위해 Ceph 구성 파일의mon_initial_members 및
섹션에 3개 이상의 모니터 노드를 나열합니다. 이렇게 하면 초기 모니터 노드가 실패하면 스토리지 클러스터가 잠기지 않습니다. 추가하는 모니터 노드는mon_
hostmon_initial_members 및
의 일부인 모니터를 대체하는 경우 두 섹션에 새 모니터를 추가합니다.mon_
host
모니터가 초기 쿼럼 그룹의 일부를 만들려면 Ceph 구성 파일의
[global]
섹션에 있는mon_initial_members
매개 변수에 호스트 이름을 추가합니다.예제
[global] mon_initial_members = node1 node2 node3 node4 node5 ... [mon] mon_host = 192.168.0.1:6789 192.168.0.2:6789 192.168.0.3:6789 192.168.0.4:6789 192.168.0.5:6789 ... [mon.node4] host = node4 mon_addr = 192.168.0.4 [mon.node5] host = node5 mon_addr = 192.168.0.5
업데이트된 Ceph 구성 파일을 모든 Ceph 노드 및 Ceph 클라이언트에 복사합니다.
구문
scp /etc/ceph/CLUSTER_NAME.conf TARGET_NODE_NAME:/etc/ceph
예제
[root@mon ~]# scp /etc/ceph/ceph.conf node4:/etc/ceph
새 모니터 노드에 모니터의 데이터 디렉터리를 생성합니다.
구문
mkdir /var/lib/ceph/mon/CLUSTER_NAME - MONITOR_ID
예제
[root@mon ~]# mkdir /var/lib/ceph/mon/ceph-node4
실행 중인 Ceph Monitor 노드와 새 모니터 노드에 임시 디렉터리를 생성하고 해당 디렉터리에서 이 프로세스에 필요한 파일을 유지합니다. 각 노드의 임시 디렉터리는 노드의 기본 디렉터리와 달라야 합니다. 모든 단계가 완료된 후 제거할 수 있습니다.
구문
mkdir TEMP_DIRECTORY_PATH_NAME
예제
[root@mon ~]# mkdir /tmp/ceph
ceph
명령을 실행할 수 있도록 실행 중인 Ceph Monitor 노드에서 새 Ceph Monitor 노드로 관리 키를 복사합니다.구문
scp /etc/ceph/CLUSTER_NAME.client.admin.keyring TARGET_NODE_NAME:/etc/ceph
예제
[root@mon ~]# scp /etc/ceph/ceph.client.admin.keyring node4:/etc/ceph
실행 중인 Ceph Monitor 노드에서 monitor 인증 키를 검색합니다.
구문
ceph auth get mon. -o TEMP_DIRECTORY_PATH_NAME/KEY_FILE_NAME
예제
[root@mon ~]# ceph auth get mon. -o /tmp/ceph/ceph_keyring.out
실행 중인 Ceph Monitor 노드에서 모니터 맵을 검색합니다.
구문
ceph mon getmap -o TEMP_DIRECTORY_PATH_NAME/MONITOR_MAP_FILE
예제
[root@mon ~]# ceph mon getmap -o /tmp/ceph/ceph_mon_map.out
수집된 Ceph Monitor 데이터를 새 Ceph Monitor 노드에 복사합니다.
구문
scp /tmp/ceph TARGET_NODE_NAME:/tmp/ceph
예제
[root@mon ~]# scp /tmp/ceph node4:/tmp/ceph
이전에 수집한 데이터에서 새 모니터를 위해 데이터 디렉터리를 준비합니다. 모니터에서 쿼럼 정보를 검색하는 모니터의 경로를 'fsid's와 함께 지정합니다. 모니터 인증 키의 경로를 지정합니다.
구문
ceph-mon -i MONITOR_ID --mkfs --monmap TEMP_DIRECTORY_PATH_NAME/MONITOR_MAP_FILE --keyring TEMP_DIRECTORY_PATH_NAME/KEY_FILE_NAME
예제
[root@mon ~]# ceph-mon -i node4 --mkfs --monmap /tmp/ceph/ceph_mon_map.out --keyring /tmp/ceph/ceph_keyring.out
사용자 지정 이름이 있는 스토리지 클러스터의 경우
/etc/sysconfig/ceph
파일에 다음 행을 추가합니다.구문
echo "CLUSTER=CUSTOM_CLUSTER_NAME" >> /etc/sysconfig/ceph
예제
[root@mon ~]# echo "CLUSTER=example" >> /etc/sysconfig/ceph
새 모니터 노드에서 소유자 및 그룹 권한을 업데이트합니다.
구문
chown -R OWNER : GROUP DIRECTORY_PATH
예제
[root@mon ~]# chown -R ceph:ceph /var/lib/ceph/mon [root@mon ~]# chown -R ceph:ceph /var/log/ceph [root@mon ~]# chown -R ceph:ceph /var/run/ceph [root@mon ~]# chown -R ceph:ceph /etc/ceph
새 모니터 노드에서
ceph-mon
프로세스를 활성화하고 시작합니다.구문
systemctl enable ceph-mon.target systemctl enable ceph-mon@MONITOR_ID systemctl start ceph-mon@MONITOR_ID
예제
[root@mon ~]# systemctl enable ceph-mon.target [root@mon ~]# systemctl enable ceph-mon@node4 [root@mon ~]# systemctl start ceph-mon@node4
추가 리소스
- Red Hat Ceph Storage 설치 가이드 의 Red Hat Ceph Storage 리포지토리 활성화 섹션을 참조하십시오.
1.2.4. 모니터 선택 전략 구성
모니터 선택 전략은 순 분할을 식별하고 오류를 처리합니다. 선택 모니터 전략을 세 가지 모드로 구성할 수 있습니다.
-
Classic
- 가장 낮은 순위의 모니터가 두 사이트 간의 투표 모듈에 따라 투표되는 기본 모드입니다. -
Disallow - 이 모드를 사용하면 모니터를 허용하지
않은 것으로 표시할 수 있습니다. 이 경우 쿼럼에 참여하고 클라이언트에 서비스를 제공하지만 선택한 리더가 될 수는 없습니다. 이를 통해 허용하지 않은 리더 목록에 모니터를 추가할 수 있습니다. 모니터가 비활성화 목록에 있으면 항상 다른 모니터로 지연됩니다. -
연결
- 이 모드는 주로 네트워크 불일치를 해결하는 데 사용됩니다. 각 모니터에서 피어에 대해 제공되는 연결 점수를 평가하고 가장 연결되고 신뢰할 수 있는 모니터를 리더로 선택합니다. 이 모드는 순 분할을 처리하도록 설계되었으므로 클러스터가 여러 데이터 센터로 확장되거나 취약성이 발생할 수 있습니다. 이 모드에서는 연결 점수 등급을 통합하고 가장 좋은 점수로 모니터를 선택합니다.
다른 모드의 기능이 필요하지 않은 한, 기존의 모드를
유지할 것을 권장합니다.
클러스터를 구성하기 전에 다음 명령에서 election_strategy
를 classic
,
disallow 또는 connectivity
로 변경합니다.
구문
ceph mon set election_strategy {classic|disallow|connectivity}
1.2.5. Ansible을 사용하여 Ceph 모니터 제거
Ansible을 사용하여 Ceph 모니터를 제거하려면 shrink-mon.yml
플레이북을 사용합니다.
사전 요구 사항
- Ansible 관리 노드.
- Ansible에서 배포한 실행 중인 Red Hat Ceph Storage 클러스터.
절차
모니터가
ok-to-stop
인지 확인합니다.구문
ceph mon ok-to-stop MONITOR_ID
예제
[root@mon ~]# ceph mon ok-to-stop node03
/usr/share/ceph-ansible/
디렉토리로 변경합니다.[user@admin ~]$ cd /usr/share/ceph-ansible
베어 메탈 및 컨테이너 배포의 경우
shrink-mon.yml
Ansible 플레이북을 실행합니다.구문
ansible-playbook infrastructure-playbooks/shrink-mon.yml -e mon_to_kill=NODE_NAME -u ANSIBLE_USER_NAME -i hosts
교체:
-
Ceph Monitor 노드의 짧은 호스트 이름이 있는
NODE_NAME
. 플레이북이 실행될 때마다 하나의 Ceph 모니터만 제거할 수 있습니다. -
Ansible 사용자의 이름이 있는
ANSIBLE_USER_NAME
예제
[user@admin ceph-ansible]$ ansible-playbook infrastructure-playbooks/shrink-mon.yml -e mon_to_kill=node03 -u user -i hosts
-
Ceph Monitor 노드의 짧은 호스트 이름이 있는
-
ansible 인벤토리 호스트
/etc/ansible/hosts
에서 해당 항목을 수동으로 제거합니다. ceph-ansible
플레이북을 실행합니다.베어 메탈 배포:
예제
[user@admin ceph-ansible]$ ansible-playbook site.yml --tags ceph_update_config -i hosts
컨테이너 배포:
예제
[user@admin ceph-ansible]$ ansible-playbook site-container.yml --tags ceph_update_config -i hosts
Ceph 모니터가 성공적으로 제거되었는지 확인합니다.
[root@mon ~]# ceph -s
추가 리소스
- Red Hat Ceph Storage 설치에 대한 자세한 내용은 Red Hat Ceph Storage 설치 가이드를 참조하십시오.
- Ansible 인벤토리 구성에 대한 자세한 내용은 {storage_product} 설치 가이드 의 Ansible 인벤토리 위치 구성 섹션을 참조하십시오.
1.2.6. 명령줄 인터페이스를 사용하여 Ceph Monitor 제거
Ceph 모니터를 제거하려면 스토리지 클러스터에서 ceph-mon
데몬을 제거하고 스토리지 클러스터 맵을 업데이트해야 합니다.
사전 요구 사항
- 실행 중인 Red Hat Ceph Storage 클러스터.
- 모니터 노드에 대한 루트 수준 액세스.
절차
모니터가
ok-to-stop
인지 확인합니다.구문
ceph mon ok-to-stop HOSTNAME
예제
[root@mon ~]# ceph mon ok-to-stop node03
Ceph Monitor 서비스를 중지합니다.
구문
systemctl stop ceph-mon@MONITOR_ID
예제
[root@mon ~]# systemctl stop ceph-mon@node3
스토리지 클러스터에서 Ceph Monitor를 제거합니다.
구문
ceph mon remove MONITOR_ID
예제
[root@mon ~]# ceph mon remove node3
-
Ceph 구성 파일에서 Ceph Monitor 항목을 제거합니다. 구성 파일의 기본 위치는
/etc/ceph/ceph.conf
입니다. 스토리지 클러스터의 나머지 모든 Ceph 노드에 Ceph 구성 파일을 재배포합니다.
구문
scp /etc/ceph/CLUSTER_NAME.conf USER_NAME @ TARGET_NODE_NAME :/etc/ceph/
예제
[root@mon ~]# scp /etc/ceph/ceph.conf root@node3:/etc/ceph/
컨테이너 배포의 경우 Ceph Monitor 서비스를 비활성화하고 제거합니다.
Ceph Monitor 서비스를 비활성화합니다.
구문
systemctl disable ceph-mon@MONITOR_ID
예제
[root@mon ~]# systemctl disable ceph-mon@node3
systemd
에서 서비스 제거:[root@mon ~]# rm /etc/systemd/system/ceph-mon@.service
systemd
관리자 구성을 다시 로드합니다.[root@mon ~]# systemctl daemon-reload
실패한 Ceph 모니터 노드의 상태를 재설정합니다.
[root@mon ~]# systemctl reset-failed
선택 사항: Ceph Monitor 데이터를 아카이브합니다.
구문
mv /var/lib/ceph/mon/CLUSTER_NAME - MONITOR_ID /var/lib/ceph/mon/removed- CLUSTER_NAME - MONITOR_ID
예제
[root@mon ~]# mv /var/lib/ceph/mon/ceph-node3 /var/lib/ceph/mon/removed-ceph-node3
선택 사항: Ceph Monitor 데이터를 삭제합니다.
구문
rm -r /var/lib/ceph/mon/CLUSTER_NAME - MONITOR_ID
예제
[root@mon ~]# rm -r /var/lib/ceph/mon/ceph-node3
1.2.7. 비정상적인 스토리지 클러스터에서 Ceph 모니터 제거
배치 그룹이 활성 + clean
상태가 아닌 비정상 스토리지 클러스터에서 ceph-mon
데몬을 제거할 수 있습니다.
사전 요구 사항
- 실행 중인 Red Hat Ceph Storage 클러스터.
- Ceph 모니터 노드에 대한 루트 수준의 액세스.
- 실행 중인 하나 이상의 Ceph Monitor 노드.
절차
남아 있는 Ceph Monitor 노드에 로그인합니다.
구문
ssh root@MONITOR_NODE_NAME
예제
[root@admin ~]# ssh root@mon2
ceph-mon
데몬을 중지하고monmap
파일의 사본을 추출합니다. :구문
systemctl stop ceph-mon@MONITOR_ID ceph-mon -i SHORT_HOSTNAME --extract-monmap TEMP_PATH
예제
[root@mon2 ~]# systemctl stop ceph-mon@mon1 [root@mon2 ~]# ceph-mon -i mon1 --extract-monmap /tmp/monmap
남아 있지 않은 Ceph 모니터 제거:
구문
monmaptool TEMPORARY_PATH --rm _MONITOR_ID
예제
[root@mon2 ~]# monmaptool /tmp/monmap --rm mon1
제거된 모니터가 있는 급증 모니터 맵을 Ceph 모니터에 삽입합니다.
구문
ceph-mon -i SHORT_HOSTNAME --inject-monmap TEMP_PATH
예제
[root@mon2 ~]# ceph-mon -i mon2 --inject-monmap /tmp/monmap
생존 모니터만 시작하고, 모니터가 쿼럼을 형성하는지 확인합니다.
예제
[root@mon2 ~]# ceph -s
-
선택 사항: 삭제된 Ceph Monitor의 데이터 디렉터리를
/var/lib/ceph/mon
디렉터리에 보관합니다.