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 모니터가 있어야 합니다.

추가 리소스

1.2.1. 새 Ceph Monitor 노드 준비

배포를 위해 새 Ceph 모니터 노드를 준비하기 전에 Red Hat Ceph Storage 설치 가이드의 Red Hat Ceph Storage 설치 요구 사항 장을 검토하십시오.

중요

각 새 Ceph Monitor를 별도의 노드에 배포하고 스토리지 클러스터의 모든 Ceph Monitor 노드는 동일한 하드웨어에서 실행해야 합니다.

사전 요구 사항

  • 네트워크 연결.
  • 새 노드에 대한 루트 수준의 액세스.

절차

  1. 새 노드를 서버 랙에 추가합니다.
  2. 새 노드를 네트워크에 연결합니다.
  3. 최신 버전의 Red Hat Enterprise Linux 7 또는 Red Hat Enterprise Linux 8을 설치합니다.

    1. Red Hat Enterprise Linux 7의 경우 ntp 를 설치하고 안정적인 시간 소스를 설정합니다.

      [root@mon ~]# yum install ntp
    2. Red Hat Enterprise Linux 8의 경우 chrony 를 설치하고 안정적인 시간 소스를 구성합니다.

      [root@mon ~]# dnf install chrony
  4. 방화벽을 사용하는 경우 TCP 포트 6789를 엽니다.

    [root@mon ~]# firewall-cmd --zone=public --add-port=6789/tcp
    [root@mon ~]# firewall-cmd --zone=public --add-port=6789/tcp --permanent

추가 리소스

1.2.2. Ansible을 사용하여 Ceph 모니터 추가

홀수의 모니터를 유지하기 위해 한 번에 두 개의 Ceph 모니터를 추가할 것을 권장합니다. 예를 들어 스토리지 클러스터에 3개의 Ceph 모니터가 있는 경우 모니터 수를 5개로 확장하는 것이 좋습니다.

사전 요구 사항

  • 새 노드에 대한 루트 수준의 액세스.
  • Ansible 관리 노드.
  • Ansible에서 배포한 실행 중인 Red Hat Ceph Storage 클러스터.

절차

  1. [mons] 섹션의 /etc/ansible/hosts Ansible 인벤토리 파일에 새 Ceph Monitor 노드를 추가합니다.

    예제

    [mons]
    monitor01
    monitor02
    monitor03
    NEW_MONITOR_NODE_NAME
    NEW_MONITOR_NODE_NAME

  2. Ansible이 Ceph 노드에 연결할 수 있는지 확인합니다.

    [root@admin ~]# ansible all -m ping
  3. 디렉터리를 Ansible 구성 디렉터리로 변경합니다.

    [root@admin ~]# cd /usr/share/ceph-ansible
  4. 다음 단계 중 하나를 사용하여 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 노드가 스토리지 클러스터에 표시됩니다.

  5. 구성 파일을 업데이트합니다.

    1. 베어 메탈 배포:

      예제

      [user@admin ceph-ansible]$ ansible-playbook -vvvv -i hosts site.yml --tags ceph_update_config

    2. 컨테이너 배포:

      예제

      [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 노드와 새 모니터 노드에 대한 루트 수준의 액세스.

절차

  1. 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

  2. 새 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

  3. 스토리지 클러스터에서 실행 중인 노드에서 Ceph 구성 파일의 [mon] 섹션에서 mon_host 설정 목록을 편집합니다.

    1. 새 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 및 mon_ host 섹션에 3개 이상의 모니터 노드를 나열합니다. 이렇게 하면 초기 모니터 노드가 실패하면 스토리지 클러스터가 잠기지 않습니다. 추가하는 모니터 노드는 mon_initial_members 및 mon_ host 의 일부인 모니터를 대체하는 경우 두 섹션에 새 모니터를 추가합니다.

  4. 모니터가 초기 쿼럼 그룹의 일부를 만들려면 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

  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

  6. 새 모니터 노드에 모니터의 데이터 디렉터리를 생성합니다.

    구문

    mkdir /var/lib/ceph/mon/CLUSTER_NAME - MONITOR_ID

    예제

    [root@mon ~]# mkdir /var/lib/ceph/mon/ceph-node4

  7. 실행 중인 Ceph Monitor 노드와 새 모니터 노드에 임시 디렉터리를 생성하고 해당 디렉터리에서 이 프로세스에 필요한 파일을 유지합니다. 각 노드의 임시 디렉터리는 노드의 기본 디렉터리와 달라야 합니다. 모든 단계가 완료된 후 제거할 수 있습니다.

    구문

    mkdir TEMP_DIRECTORY_PATH_NAME

    예제

    [root@mon ~]# mkdir /tmp/ceph

  8. 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

  9. 실행 중인 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

  10. 실행 중인 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

  11. 수집된 Ceph Monitor 데이터를 새 Ceph Monitor 노드에 복사합니다.

    구문

    scp /tmp/ceph TARGET_NODE_NAME:/tmp/ceph

    예제

    [root@mon ~]# scp /tmp/ceph node4:/tmp/ceph

  12. 이전에 수집한 데이터에서 새 모니터를 위해 데이터 디렉터리를 준비합니다. 모니터에서 쿼럼 정보를 검색하는 모니터의 경로를 '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

  13. 사용자 지정 이름이 있는 스토리지 클러스터의 경우 /etc/sysconfig/ceph 파일에 다음 행을 추가합니다.

    구문

    echo "CLUSTER=CUSTOM_CLUSTER_NAME" >> /etc/sysconfig/ceph

    예제

    [root@mon ~]# echo "CLUSTER=example" >> /etc/sysconfig/ceph

  14. 새 모니터 노드에서 소유자 및 그룹 권한을 업데이트합니다.

    구문

    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

  15. 새 모니터 노드에서 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

1.2.4. 모니터 선택 전략 구성

모니터 선택 전략은 순 분할을 식별하고 오류를 처리합니다. 선택 모니터 전략을 세 가지 모드로 구성할 수 있습니다.

  1. Classic - 가장 낮은 순위의 모니터가 두 사이트 간의 투표 모듈에 따라 투표되는 기본 모드입니다.
  2. Disallow - 이 모드를 사용하면 모니터를 허용하지 않은 것으로 표시할 수 있습니다. 이 경우 쿼럼에 참여하고 클라이언트에 서비스를 제공하지만 선택한 리더가 될 수는 없습니다. 이를 통해 허용하지 않은 리더 목록에 모니터를 추가할 수 있습니다. 모니터가 비활성화 목록에 있으면 항상 다른 모니터로 지연됩니다.
  3. 연결 - 이 모드는 주로 네트워크 불일치를 해결하는 데 사용됩니다. 각 모니터에서 피어에 대해 제공되는 연결 점수를 평가하고 가장 연결되고 신뢰할 수 있는 모니터를 리더로 선택합니다. 이 모드는 순 분할을 처리하도록 설계되었으므로 클러스터가 여러 데이터 센터로 확장되거나 취약성이 발생할 수 있습니다. 이 모드에서는 연결 점수 등급을 통합하고 가장 좋은 점수로 모니터를 선택합니다.

다른 모드의 기능이 필요하지 않은 한, 기존의 모드를 유지할 것을 권장합니다.

클러스터를 구성하기 전에 다음 명령에서 election_strategyclassic , 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 클러스터.

절차

  1. 모니터가 ok-to-stop 인지 확인합니다.

    구문

    ceph mon ok-to-stop MONITOR_ID

    예제

    [root@mon ~]# ceph mon ok-to-stop node03

  2. /usr/share/ceph-ansible/ 디렉토리로 변경합니다.

    [user@admin ~]$ cd /usr/share/ceph-ansible
  3. 베어 메탈컨테이너 배포의 경우 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

  4. ansible 인벤토리 호스트 /etc/ansible/hosts 에서 해당 항목을 수동으로 제거합니다.
  5. ceph-ansible 플레이북을 실행합니다.

    1. 베어 메탈 배포:

      예제

      [user@admin ceph-ansible]$ ansible-playbook site.yml --tags ceph_update_config -i hosts

    2. 컨테이너 배포:

      예제

      [user@admin ceph-ansible]$ ansible-playbook site-container.yml --tags ceph_update_config -i hosts

  6. Ceph 모니터가 성공적으로 제거되었는지 확인합니다.

    [root@mon ~]# ceph -s

1.2.6. 명령줄 인터페이스를 사용하여 Ceph Monitor 제거

Ceph 모니터를 제거하려면 스토리지 클러스터에서 ceph-mon 데몬을 제거하고 스토리지 클러스터 맵을 업데이트해야 합니다.

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터.
  • 모니터 노드에 대한 루트 수준 액세스.

절차

  1. 모니터가 ok-to-stop 인지 확인합니다.

    구문

    ceph mon ok-to-stop HOSTNAME

    예제

    [root@mon ~]# ceph mon ok-to-stop node03

  2. Ceph Monitor 서비스를 중지합니다.

    구문

    systemctl stop ceph-mon@MONITOR_ID

    예제

    [root@mon ~]# systemctl stop ceph-mon@node3

  3. 스토리지 클러스터에서 Ceph Monitor를 제거합니다.

    구문

    ceph mon remove MONITOR_ID

    예제

    [root@mon ~]# ceph mon remove node3

  4. Ceph 구성 파일에서 Ceph Monitor 항목을 제거합니다. 구성 파일의 기본 위치는 /etc/ceph/ceph.conf 입니다.
  5. 스토리지 클러스터의 나머지 모든 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/

  6. 컨테이너 배포의 경우 Ceph Monitor 서비스를 비활성화하고 제거합니다.

    1. Ceph Monitor 서비스를 비활성화합니다.

      구문

      systemctl disable ceph-mon@MONITOR_ID

      예제

      [root@mon ~]# systemctl disable ceph-mon@node3

    2. systemd 에서 서비스 제거:

      [root@mon ~]# rm /etc/systemd/system/ceph-mon@.service
    3. systemd 관리자 구성을 다시 로드합니다.

      [root@mon ~]# systemctl daemon-reload
    4. 실패한 Ceph 모니터 노드의 상태를 재설정합니다.

      [root@mon ~]# systemctl reset-failed
  7. 선택 사항: 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

  8. 선택 사항: 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 노드.

절차

  1. 남아 있는 Ceph Monitor 노드에 로그인합니다.

    구문

    ssh root@MONITOR_NODE_NAME

    예제

    [root@admin ~]# ssh root@mon2

  2. 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

  3. 남아 있지 않은 Ceph 모니터 제거:

    구문

    monmaptool TEMPORARY_PATH --rm _MONITOR_ID

    예제

    [root@mon2 ~]# monmaptool /tmp/monmap --rm mon1

  4. 제거된 모니터가 있는 급증 모니터 맵을 Ceph 모니터에 삽입합니다.

    구문

    ceph-mon -i SHORT_HOSTNAME --inject-monmap TEMP_PATH

    예제

    [root@mon2 ~]# ceph-mon -i mon2 --inject-monmap /tmp/monmap

  5. 생존 모니터만 시작하고, 모니터가 쿼럼을 형성하는지 확인합니다.

    예제

    [root@mon2 ~]# ceph -s

  6. 선택 사항: 삭제된 Ceph Monitor의 데이터 디렉터리를 /var/lib/ceph/mon 디렉터리에 보관합니다.
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.