B.2. Red Hat Ceph Storage 수동 설치

중요

Red Hat은 수동으로 배포된 클러스터를 지원하거나 테스트하지 않습니다. 따라서 Red Hat은 Red Hat Ceph Storage 4를 사용하여 새 클러스터를 배포하는 데 Ansible을 사용하는 것이 좋습니다. 자세한 내용은 5장. Ansible을 사용하여 Red Hat Ceph Storage 설치 을 참조하십시오.

YUM과 같은 명령줄 유틸리티를 사용하여 수동으로 배포된 클러스터를 업그레이드할 수 있지만 Red Hat은 이 방법을 지원하거나 테스트하지 않습니다.

모든 Ceph 클러스터에는 모니터가 한 개 이상 필요하며 클러스터에 저장된 오브젝트의 복사본만큼 적어도 많은 OSD가 필요합니다. Red Hat은 프로덕션 환경에 세 개의 모니터를 사용하고 최소 3개의 OSD(오브젝트 스토리지 장치)를 사용하는 것이 좋습니다.

초기 모니터를 부트 스트랩하는 것은 Ceph 스토리지 클러스터를 배포의 첫 번째 단계입니다. Ceph 모니터 배포는 다음과 같은 전체 클러스터에 대한 중요한 기준도 설정합니다.

  • 풀의 복제본 수
  • OSD당 배치 그룹 수
  • 하트비트 간격
  • 모든 인증 요구 사항

이러한 값은 기본적으로 설정되므로 프로덕션에 맞게 클러스터를 설정할 때 이를 아는 것이 유용합니다.

명령줄 인터페이스를 사용하여 Ceph 스토리지 클러스터를 설치하려면 다음 단계를 수행해야 합니다.

Bootstrapping 모니터링

모니터를 부트 스트랩하려면 Ceph 스토리지 클러스터를 확장하여 다음과 같은 데이터가 필요합니다.

고유 식별자
파일 시스템 식별자(fsid)는 클러스터의 고유 식별자입니다. fsid 는 Ceph 스토리지 클러스터가 Ceph 파일 시스템에 기본적으로 사용될 때 원래 사용되었습니다. 이제 Ceph에서 기본 인터페이스, 블록 장치 및 오브젝트 스토리지 게이트웨이 인터페이스도 지원하므로 fsid 는 약간의 잘못된 사용자입니다.
모니터 이름
클러스터 내의 각 모니터 인스턴스에는 고유한 이름이 있습니다. 일반적으로 Ceph Monitor 이름은 노드 이름입니다. Red Hat은 노드당 하나의 Ceph Monitor를 권장하며 Ceph Monitor 데몬을 사용하여 Ceph OSD 데몬을 함께 배치하지 않습니다. 짧은 노드 이름을 검색하려면 hostname -s 명령을 사용합니다.
모니터 맵

초기 모니터를 부트 스트랩하려면 모니터 맵을 생성해야 합니다. 모니터 맵에는 다음이 필요합니다.

  • 파일 시스템 식별자(fsid)
  • 클러스터 이름 또는 ceph 의 기본 클러스터 이름이 사용됩니다.
  • 호스트 이름과 해당 IP 주소가 한 개 이상 있어야 합니다.
키 삭제 모니터링
모니터는 시크릿 키를 사용하여 서로 통신합니다. 모니터 보안 키를 사용하여 인증 키를 생성하고 초기 모니터를 부트스트래핑할 때 제공해야 합니다.
관리자 키링
ceph 명령줄 인터페이스 유틸리티를 사용하려면 client.admin 사용자를 생성하고 해당 인증 키를 생성합니다. 또한 Monitor 인증 키에 client.admin 사용자를 추가해야 합니다.

관련 요구 사항은 Ceph 구성 파일을 생성하는 것을 의미하지 않습니다. 그러나 Red Hat은 Ceph 구성 파일을 생성하고 fsid, mon initial membersmon 호스트 설정으로 채우는 것이 좋습니다.

런타임 시 모든 모니터 설정을 가져오고 설정할 수 있습니다. 그러나 Ceph 구성 파일에는 기본값을 재정의하는 설정만 포함될 수 있습니다. Ceph 구성 파일에 설정을 추가하면 이러한 설정이 기본 설정을 덮어씁니다. Ceph 구성 파일에서 이러한 설정을 유지 관리하면 클러스터를 보다 쉽게 유지 관리할 수 있습니다.

초기 모니터를 부트스트랩하려면 다음 단계를 수행합니다.

  1. Red Hat Ceph Storage 4 Monitor 리포지토리를 활성화합니다.

    [root@monitor ~]# subscription-manager repos --enable=rhceph-4-mon-for-rhel-8-x86_64-rpms
  2. 초기 모니터 노드에서 ceph-mon 패키지를 root 로 설치합니다.

    # yum install ceph-mon
  3. 루트 로서 /etc/ceph/ 디렉터리에 Ceph 구성 파일을 만듭니다.

    # touch /etc/ceph/ceph.conf
  4. 루트 로서 클러스터의 고유 식별자를 생성하고 Ceph 구성 파일의 [global] 섹션에 고유 식별자를 추가합니다.

    # echo "[global]" > /etc/ceph/ceph.conf
    # echo "fsid = `uuidgen`" >> /etc/ceph/ceph.conf
  5. 현재 Ceph 구성 파일을 확인합니다.

    $ cat /etc/ceph/ceph.conf
    [global]
    fsid = a7f64266-0894-4f1e-a635-d0aeaca0e993
  6. 루트 로서 초기 모니터를 Ceph 구성 파일에 추가합니다.

    구문

    # echo "mon initial members = <monitor_host_name>[,<monitor_host_name>]" >> /etc/ceph/ceph.conf

    예제

    # echo "mon initial members = node1" >> /etc/ceph/ceph.conf

  7. root 로 초기 모니터의 IP 주소를 Ceph 구성 파일에 추가합니다.

    구문

    # echo "mon host = <ip-address>[,<ip-address>]" >> /etc/ceph/ceph.conf

    예제

    # echo "mon host = 192.168.0.120" >> /etc/ceph/ceph.conf

    참고

    IPv6 주소를 사용하려면 ms bind ipv6 옵션을 true 로 설정합니다. 자세한 내용은 Red Hat Ceph Storage 4의 구성 가이드의 바인딩 섹션을 참조하십시오.

  8. root 로 클러스터의 인증 키를 생성하고 Monitor 시크릿 키를 생성합니다.

    # ceph-authtool --create-keyring /tmp/ceph.mon.keyring --gen-key -n mon. --cap mon 'allow *'
    creating /tmp/ceph.mon.keyring
  9. root 사용자로 관리자 인증 키를 생성하고 ceph.client.admin.keyring 사용자를 생성하고 사용자를 인증 키에 추가합니다.

    구문

    # ceph-authtool --create-keyring /etc/ceph/ceph.client.admin.keyring --gen-key -n client.admin --set-uid=0 --cap mon '<capabilites>' --cap osd '<capabilites>' --cap mds '<capabilites>'

    예제

    # ceph-authtool --create-keyring /etc/ceph/ceph.client.admin.keyring --gen-key -n client.admin --set-uid=0 --cap mon 'allow *' --cap osd 'allow *' --cap mds 'allow'
    creating /etc/ceph/ceph.client.admin.keyring

  10. rootceph.client.admin.keyring 키를 ceph.mon.keyring 에 추가합니다.

    # ceph-authtool /tmp/ceph.mon.keyring --import-keyring /etc/ceph/ceph.client.admin.keyring
    importing contents of /etc/ceph/ceph.client.admin.keyring into /tmp/ceph.mon.keyring
  11. 모니터 맵을 생성합니다. 초기 모니터의 노드 이름, IP 주소, fsid 를 사용하여 지정하고 이를 /tmp/monmap 으로 저장합니다.

    구문

    $ monmaptool --create --add <monitor_host_name> <ip-address> --fsid <uuid> /tmp/monmap

    예제

    $ monmaptool --create --add node1 192.168.0.120 --fsid a7f64266-0894-4f1e-a635-d0aeaca0e993 /tmp/monmap
    monmaptool: monmap file /tmp/monmap
    monmaptool: set fsid to a7f64266-0894-4f1e-a635-d0aeaca0e993
    monmaptool: writing epoch 0 to /tmp/monmap (1 monitors)

  12. 초기 모니터 노드에서 root 로 기본 데이터 디렉토리를 생성합니다.

    구문

    # mkdir /var/lib/ceph/mon/ceph-<monitor_host_name>

    예제

    # mkdir /var/lib/ceph/mon/ceph-node1

  13. root 로 초기 모니터 데몬을 Monitor 맵 및 인증 키로 채웁니다.

    구문

    # ceph-mon --mkfs -i <monitor_host_name> --monmap /tmp/monmap --keyring /tmp/ceph.mon.keyring

    예제

    # ceph-mon --mkfs -i node1 --monmap /tmp/monmap --keyring /tmp/ceph.mon.keyring
    ceph-mon: set fsid to a7f64266-0894-4f1e-a635-d0aeaca0e993
    ceph-mon: created monfs at /var/lib/ceph/mon/ceph-node1 for mon.node1

  14. 현재 Ceph 구성 파일을 확인합니다.

    # cat /etc/ceph/ceph.conf
    [global]
    fsid = a7f64266-0894-4f1e-a635-d0aeaca0e993
    mon_initial_members = node1
    mon_host = 192.168.0.120

    다양한 Ceph 구성 설정에 대한 자세한 내용은 Red Hat Ceph Storage 4의 구성 가이드를 참조하십시오. 다음 Ceph 구성 파일의 예는 가장 일반적인 구성 설정 중 일부를 나열합니다.

    예제

    [global]
    fsid = <cluster-id>
    mon initial members = <monitor_host_name>[, <monitor_host_name>]
    mon host = <ip-address>[, <ip-address>]
    public network = <network>[, <network>]
    cluster network = <network>[, <network>]
    auth cluster required = cephx
    auth service required = cephx
    auth client required = cephx
    osd journal size = <n>
    osd pool default size = <n>  # Write an object n times.
    osd pool default min size = <n> # Allow writing n copy in a degraded state.
    osd pool default pg num = <n>
    osd pool default pgp num = <n>
    osd crush chooseleaf type = <n>

  15. root완료된 파일을 생성합니다.

    구문

    # touch /var/lib/ceph/mon/ceph-<monitor_host_name>/done

    예제

    # touch /var/lib/ceph/mon/ceph-node1/done

  16. 루트 로서 새로 생성된 디렉토리 및 파일에 대한 소유자 및 그룹 권한을 업데이트합니다.

    구문

    # chown -R <owner>:<group> <path_to_directory>

    예제

    # chown -R ceph:ceph /var/lib/ceph/mon
    # chown -R ceph:ceph /var/log/ceph
    # chown -R ceph:ceph /var/run/ceph
    # chown ceph:ceph /etc/ceph/ceph.client.admin.keyring
    # chown ceph:ceph /etc/ceph/ceph.conf
    # chown ceph:ceph /etc/ceph/rbdmap

    참고

    Ceph Monitor 노드가 OpenStack 컨트롤러 노드와 함께 배치되는 경우 Glance 및 Cinder 키링 파일은 각각 glancecinder 가 소유해야 합니다. 예를 들어 다음과 같습니다.

    # ls -l /etc/ceph/
    ...
    -rw-------.  1 glance glance      64 <date> ceph.client.glance.keyring
    -rw-------.  1 cinder cinder      64 <date> ceph.client.cinder.keyring
    ...
  17. root 로 초기 모니터 노드에서 ceph-mon 프로세스를 시작하고 활성화합니다.

    구문

    # systemctl enable ceph-mon.target
    # systemctl enable ceph-mon@<monitor_host_name>
    # systemctl start ceph-mon@<monitor_host_name>

    예제

    # systemctl enable ceph-mon.target
    # systemctl enable ceph-mon@node1
    # systemctl start ceph-mon@node1

  18. root 로 모니터 데몬이 실행 중인지 확인합니다.

    구문

    # systemctl status ceph-mon@<monitor_host_name>

    예제

    # systemctl status ceph-mon@node1
    ● ceph-mon@node1.service - Ceph cluster monitor daemon
       Loaded: loaded (/usr/lib/systemd/system/ceph-mon@.service; enabled; vendor preset: disabled)
       Active: active (running) since Wed 2018-06-27 11:31:30 PDT; 5min ago
     Main PID: 1017 (ceph-mon)
       CGroup: /system.slice/system-ceph\x2dmon.slice/ceph-mon@node1.service
               └─1017 /usr/bin/ceph-mon -f --cluster ceph --id node1 --setuser ceph --setgroup ceph
    
    Jun 27 11:31:30 node1 systemd[1]: Started Ceph cluster monitor daemon.
    Jun 27 11:31:30 node1 systemd[1]: Starting Ceph cluster monitor daemon...

스토리지 클러스터에 Red Hat Ceph Storage Monitors를 추가하려면 Red Hat Ceph Storage 4 관리 가이드의 모니터 추가 섹션을 참조하십시오.

OSD Bootstrapping

초기 모니터가 실행되면 OSD(오브젝트 스토리지 장치)를 추가할 수 있습니다. OSD가 충분한 OSD가 개체 복사본 수를 처리할 때까지 클러스터는 활성 + 클린 상태에 도달할 수 없습니다.

개체의 기본 복사본 수는 3입니다. 최소 3개의 OSD 노드가 필요합니다. 그러나 오브젝트 사본을 두 개만 사용하므로 OSD 노드를 두 개 추가하면 Ceph 구성 파일에서 osd 풀 기본 크기osd 풀 기본 크기 설정을 업데이트합니다.

자세한 내용은 Red Hat Ceph Storage 4용 구성 가이드의 OSD 구성 참조 섹션을 참조하십시오.

초기 모니터를 부트 스트랩하면 클러스터에 기본 ArgoCD 맵이 있습니다. 그러나 nmap 맵에는 Ceph 노드에 매핑된 Ceph OSD 데몬이 없습니다.

클러스터에 OSD를 추가하고 기본 NetNamespace 맵을 업데이트하려면 각 OSD 노드에서 다음을 실행합니다.

  1. Red Hat Ceph Storage 4 OSD 리포지토리를 활성화합니다.

    [root@osd ~]# subscription-manager repos --enable=rhceph-4-osd-for-rhel-8-x86_64-rpms
  2. 루트 로서 Ceph OSD 노드에 ceph-osd 패키지를 설치합니다.

    # yum install ceph-osd
  3. Ceph 구성 파일 및 관리 인증 키 파일을 초기 모니터 노드에서 OSD 노드로 복사합니다.

    구문

    # scp <user_name>@<monitor_host_name>:<path_on_remote_system> <path_to_local_file>

    예제

    # scp root@node1:/etc/ceph/ceph.conf /etc/ceph
    # scp root@node1:/etc/ceph/ceph.client.admin.keyring /etc/ceph

  4. OSD에 대한 UUID(Universally Unique Identifier)를 생성합니다.

    $ uuidgen
    b367c360-b364-4b1d-8fc6-09408a9cda7a
  5. root 로 OSD 인스턴스를 생성합니다.

    구문

    # ceph osd create <uuid> [<osd_id>]

    예제

    # ceph osd create b367c360-b364-4b1d-8fc6-09408a9cda7a
    0

    참고

    이 명령은 후속 단계에 필요한 OSD 번호 식별자를 출력합니다.

  6. 루트 로서 새 OSD의 기본 디렉터리를 생성합니다.

    구문

    # mkdir /var/lib/ceph/osd/ceph-<osd_id>

    예제

    # mkdir /var/lib/ceph/osd/ceph-0

  7. 루트 로서 OSD로 사용할 드라이브를 준비하여 방금 만든 디렉터리에 마운트합니다. Ceph 데이터 및 저널용 파티션을 생성합니다. 저널 및 데이터 파티션은 동일한 디스크에 있을 수 있습니다. 이 예에서는 15GB 디스크를 사용합니다.

    구문

    # parted <path_to_disk> mklabel gpt
    # parted <path_to_disk> mkpart primary 1 10000
    # mkfs -t <fstype> <path_to_partition>
    # mount -o noatime <path_to_partition> /var/lib/ceph/osd/ceph-<osd_id>
    # echo "<path_to_partition>  /var/lib/ceph/osd/ceph-<osd_id>   xfs defaults,noatime 1 2" >> /etc/fstab

    예제

    # parted /dev/sdb mklabel gpt
    # parted /dev/sdb mkpart primary 1 10000
    # parted /dev/sdb mkpart primary 10001 15000
    # mkfs -t xfs /dev/sdb1
    # mount -o noatime /dev/sdb1 /var/lib/ceph/osd/ceph-0
    # echo "/dev/sdb1 /var/lib/ceph/osd/ceph-0  xfs defaults,noatime 1 2" >> /etc/fstab

  8. 루트 로서 OSD 데이터 디렉토리를 초기화합니다.

    구문

    # ceph-osd -i <osd_id> --mkfs --mkkey --osd-uuid <uuid>

    예제

    # ceph-osd -i 0 --mkfs --mkkey --osd-uuid b367c360-b364-4b1d-8fc6-09408a9cda7a
    ... auth: error reading file: /var/lib/ceph/osd/ceph-0/keyring: can't open /var/lib/ceph/osd/ceph-0/keyring: (2) No such file or directory
    ... created new key in keyring /var/lib/ceph/osd/ceph-0/keyring

  9. 루트로 OSD 인증 키를 등록합니다.

    구문

    # ceph auth add osd.<osd_id> osd 'allow *' mon 'allow profile osd' -i /var/lib/ceph/osd/ceph-<osd_id>/keyring

    예제

    # ceph auth add osd.0 osd 'allow *' mon 'allow profile osd' -i /var/lib/ceph/osd/ceph-0/keyring
    added key for osd.0

  10. root 로 OSD 노드를 ArgoCD 맵에 추가합니다.

    구문

    # ceph osd crush add-bucket <host_name> host

    예제

    # ceph osd crush add-bucket node2 host

  11. root 로 OSD 노드를 기본 ArgoCD 트리 아래에 배치합니다.

    구문

    # ceph osd crush move <host_name> root=default

    예제

    # ceph osd crush move node2 root=default

  12. root 로 OSD 디스크를 ArgoCD 맵에 추가합니다.

    구문

    # ceph osd crush add osd.<osd_id> <weight> [<bucket_type>=<bucket-name> ...]

    예제

    # ceph osd crush add osd.0 1.0 host=node2
    add item id 0 name 'osd.0' weight 1 at location {host=node2} to crush map

    참고

    DASD 맵을 분리하고 장치 목록에 OSD를 추가할 수도 있습니다. OSD 노드를 버킷으로 추가한 다음, 장치를 OSD 노드에서 항목으로 추가하고, OSD를 가중치를 할당하고, ArgoCD 맵을 다시 컴파일하고, NetNamespace 맵을 설정합니다. 자세한 내용은 Red Hat Ceph Storage 4용 스토리지 전략 가이드 의 ArgoCD 맵 편집 섹션을 참조하십시오.

  13. 루트 로서 새로 생성된 디렉토리 및 파일에 대한 소유자 및 그룹 권한을 업데이트합니다.

    구문

    # chown -R <owner>:<group> <path_to_directory>

    예제

    # chown -R ceph:ceph /var/lib/ceph/osd
    # chown -R ceph:ceph /var/log/ceph
    # chown -R ceph:ceph /var/run/ceph
    # chown -R ceph:ceph /etc/ceph

  14. OSD 노드는 Ceph 스토리지 클러스터 구성에 있습니다. 그러나 OSD 데몬은 downin 입니다. 데이터 수신을 시작하기 전에 새 OSD가 가동 중이어야 합니다. root 로 OSD 프로세스를 활성화하고 시작합니다.

    구문

    # systemctl enable ceph-osd.target
    # systemctl enable ceph-osd@<osd_id>
    # systemctl start ceph-osd@<osd_id>

    예제

    # systemctl enable ceph-osd.target
    # systemctl enable ceph-osd@0
    # systemctl start ceph-osd@0

    OSD 데몬을 시작하면 이 데몬이 시작되어 입니다.

이제 모니터와 일부 OSD가 실행 중입니다. 다음 명령을 실행하여 배치 그룹 피어를 확인할 수 있습니다.

$ ceph -w

OSD 트리를 보려면 다음 명령을 실행합니다.

$ ceph osd tree

예제

ID  WEIGHT    TYPE NAME        UP/DOWN  REWEIGHT  PRIMARY-AFFINITY
-1       2    root default
-2       2        host node2
 0       1            osd.0         up         1                 1
-3       1        host node3
 1       1            osd.1         up         1                 1

스토리지 클러스터에 새 OSD를 추가하여 스토리지 용량을 확장하려면 Red Hat Ceph Storage 4의 관리 가이드에 있는 OSD 추가 섹션을 참조하십시오.