5.2. Red Hat Ceph Storage 클러스터 설치

ceph-ansible 플레이북과 함께 Ansible 애플리케이션을 사용하여 베어 메탈 또는 컨테이너에 Red Hat Ceph Storage를 설치합니다. 프로덕션 환경에서 Ceph 스토리지 클러스터를 사용하려면 최소 3개의 모니터 노드와 여러 OSD 데몬이 포함된 OSD 노드 3개가 있어야 합니다. 프로덕션 환경에서 실행되는 일반적인 Ceph 스토리지 클러스터는 일반적으로 10개 이상의 노드로 구성됩니다.

다음 절차에서는 달리 지침이 없는 경우 Ansible 관리 노드에서 명령을 실행합니다. 이 절차는 지정하지 않는 한 베어 메탈 및 컨테이너 배포에 모두 적용됩니다.

중요

Ceph는 하나의 모니터로 실행할 수 있지만 프로덕션 클러스터에서 고가용성을 보장하기 위해 Red Hat은 모니터 노드가 세 개 이상인 배포만 지원합니다.

중요

Red Hat Enterprise Linux 7.7의 컨테이너에 Red Hat Ceph Storage 4를 배포하면 Red Hat Enterprise Linux 8 컨테이너 이미지에 Red Hat Ceph Storage 4가 배포됩니다.

사전 요구 사항

  • 유효한 고객 서브스크립션.
  • Ansible 관리 노드에 대한 루트 수준 액세스.
  • Ansible 애플리케이션과 함께 사용할 ansible 사용자 계정입니다.
  • Red Hat Ceph Storage Tools 및 Ansible 리포지토리 활성화
  • ISO 설치의 경우 Ansible 노드에 최신 ISO 이미지를 다운로드합니다. Red Hat Ceph Storage 설치 가이드 의 Red Hat Ceph Storage 리포지토리 활성화 장을 참조하십시오.

절차

  1. Ansible 관리 노드에 root 사용자 계정으로 로그인합니다.
  2. 모든 배포가 베어 메탈 또는 컨테이너 의 경우 ceph-ansible 패키지를 설치합니다.

    Red Hat Enterprise Linux 7

    [root@admin ~]# yum install ceph-ansible

    Red Hat Enterprise Linux 8

    [root@admin ~]# dnf install ceph-ansible

  3. /usr/share/ceph-ansible/ 디렉토리로 이동합니다.

    [root@admin ~]# cd /usr/share/ceph-ansible
  4. 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
    1. 베어 메탈 배포:

      [root@admin ceph-ansible]# cp site.yml.sample site.yml
    2. 컨테이너 배포:

      [root@admin ceph-ansible]# cp site-container.yml.sample site-container.yml
  5. 새 파일을 편집합니다.

    1. group_vars/all.yml 파일을 편집하려면 을 엽니다.

      중요

      사용자 정의 스토리지 클러스터 이름 사용은 지원되지 않습니다. 클러스터 매개변수를 ceph 이외의 값으로 설정하지 마십시오. 사용자 지정 스토리지 클러스터 이름 사용은 librados, Ceph Object Gateway 및 RADOS 블록 장치 미러링과 같은 Ceph 클라이언트에서만 지원됩니다.

      주의

      기본적으로 Ansible은 설치된 firewalld 서비스를 다시 시작하려고 하지만 마스킹되어 Red Hat Ceph Storage 배포가 실패할 수 있습니다. 이 문제를 해결하려면 all.yml 파일에서 configure_firewall 옵션을 false 로 설정합니다. firewalld 서비스를 실행하는 경우 all.yml 파일에서 configure_firewall 옵션을 사용할 필요가 없습니다.

      참고

      ceph_rhcs_version 옵션을 4 로 설정하면 최신 버전의 Red Hat Ceph Storage 4가 가져옵니다.

      참고

      Red Hat은 group_vars/all.yml 파일에서 dashboard_enabled 옵션을 True 로 설정하고 False 로 변경하지 않는 것이 좋습니다. 대시보드를 비활성화하려면 Ceph 대시보드 비활성화를 참조하십시오.

      참고

      대시보드 관련 구성 요소는 컨테이너화되어 있습니다. 따라서 베어 메탈 또는 컨테이너 배포의 경우 ceph_docker_registry_usernameceph_docker_registry_password 매개변수를 포함해야 ceph-ansible이 대시보드에 필요한 컨테이너 이미지를 가져올 수 있습니다.

      참고

      Red Hat Registry Service 계정이 없는 경우 레지스트리 서비스 계정 웹 페이지를 사용하여 생성합니다. 토큰을 만들고 관리하는 방법에 대한 자세한 내용은 Red Hat Container Registry Authentication Knowledgebase 문서를 참조하십시오.

      참고

      ceph_docker_registry_usernameceph_docker_registry_password 매개변수에 서비스 계정을 사용하는 것 외에도 고객 포털 자격 증명을 사용하지만 보안을 보장하기 위해 ceph_docker_registry_password 매개변수를 암호화할 수 있습니다. 자세한 내용은 ansible-vault를 사용하여 Ansible 암호 변수 암호화 를 참조하십시오.

      1. CDN 설치를 위한 all.yml 파일의 베어 메탈 예:

        fetch_directory: ~/ceph-ansible-keys
        ceph_origin: repository
        ceph_repository: rhcs
        ceph_repository_type: cdn
        ceph_rhcs_version: 4
        monitor_interface: eth0 1
        public_network: 192.168.0.0/24
        ceph_docker_registry: registry.redhat.io
        ceph_docker_registry_auth: true
        ceph_docker_registry_username: SERVICE_ACCOUNT_USER_NAME
        ceph_docker_registry_password: TOKEN
        dashboard_admin_user:
        dashboard_admin_password:
        node_exporter_container_image: registry.redhat.io/openshift4/ose-prometheus-node-exporter:v4.6
        grafana_admin_user:
        grafana_admin_password:
        grafana_container_image: registry.redhat.io/rhceph/rhceph-4-dashboard-rhel8
        prometheus_container_image: registry.redhat.io/openshift4/ose-prometheus:v4.6
        alertmanager_container_image: registry.redhat.io/openshift4/ose-prometheus-alertmanager:v4.6
        1
        공용 네트워크의 인터페이스입니다.
        중요

        Red Hat Ceph Storage 4.1부터 /usr/share/ceph-ansible/group_vars/all.yml 에서 dashboard_admin_passwordgrafana_admin_password 의 주석 처리를 해제하거나 설정해야 합니다. 각각에 대해 보안 암호를 설정합니다. dashboard_admin_usergrafana_admin_user 의 사용자 지정 사용자 이름도 설정합니다.

        참고

        Red Hat Ceph Storage 4.2의 경우 설치를 위해 로컬 레지스트리를 사용한 경우 Prometheus 이미지 태그에 4.6을 사용합니다.

      2. ISO 설치를 위한 all.yml 파일의 베어 메탈 예:

        fetch_directory: ~/ceph-ansible-keys
        ceph_origin: repository
        ceph_repository: rhcs
        ceph_repository_type: iso
        ceph_rhcs_iso_path: /home/rhceph-4-rhel-8-x86_64.iso
        ceph_rhcs_version: 4
        monitor_interface: eth0 1
        public_network: 192.168.0.0/24
        ceph_docker_registry: registry.redhat.io
        ceph_docker_registry_auth: true
        ceph_docker_registry_username: SERVICE_ACCOUNT_USER_NAME
        ceph_docker_registry_password: TOKEN
        dashboard_admin_user:
        dashboard_admin_password:
        node_exporter_container_image: registry.redhat.io/openshift4/ose-prometheus-node-exporter:v4.6
        grafana_admin_user:
        grafana_admin_password:
        grafana_container_image: registry.redhat.io/rhceph/rhceph-4-dashboard-rhel8
        prometheus_container_image: registry.redhat.io/openshift4/ose-prometheus:v4.6
        alertmanager_container_image: registry.redhat.io/openshift4/ose-prometheus-alertmanager:v4.6
        1
        공용 네트워크의 인터페이스입니다.
      3. all.yml 파일의 컨테이너 예:

        fetch_directory: ~/ceph-ansible-keys
        monitor_interface: eth0 1
        public_network: 192.168.0.0/24
        ceph_docker_image: rhceph/rhceph-4-rhel8
        ceph_docker_image_tag: latest
        containerized_deployment: true
        ceph_docker_registry: registry.redhat.io
        ceph_docker_registry_auth: true
        ceph_docker_registry_username: SERVICE_ACCOUNT_USER_NAME
        ceph_docker_registry_password: TOKEN
        ceph_origin: repository
        ceph_repository: rhcs
        ceph_repository_type: cdn
        ceph_rhcs_version: 4
        dashboard_admin_user:
        dashboard_admin_password:
        node_exporter_container_image: registry.redhat.io/openshift4/ose-prometheus-node-exporter:v4.6
        grafana_admin_user:
        grafana_admin_password:
        grafana_container_image: registry.redhat.io/rhceph/rhceph-4-dashboard-rhel8
        prometheus_container_image: registry.redhat.io/openshift4/ose-prometheus:v4.6
        alertmanager_container_image: registry.redhat.io/openshift4/ose-prometheus-alertmanager:v4.6
        1
        공용 네트워크의 인터페이스입니다.
        중요

        Red Hat Ecosystem Catalog 에서 최신 컨테이너 이미지 태그를 조회하여 모든 최신 패치가 적용된 최신 컨테이너 이미지를 설치합니다.

      4. all.yml 파일의 컨테이너 예: Red Hat Ceph Storage 노드가 배포 중에 인터넷에 액세스할 수 없는 경우:

        fetch_directory: ~/ceph-ansible-keys
        monitor_interface: eth0 1
        public_network: 192.168.0.0/24
        ceph_docker_image: rhceph/rhceph-4-rhel8
        ceph_docker_image_tag: latest
        containerized_deployment: true
        ceph_docker_registry: LOCAL_NODE_FQDN:5000
        ceph_docker_registry_auth: false
        ceph_origin: repository
        ceph_repository: rhcs
        ceph_repository_type: cdn
        ceph_rhcs_version: 4
        dashboard_admin_user:
        dashboard_admin_password:
        node_exporter_container_image: LOCAL_NODE_FQDN:5000/openshift4/ose-prometheus-node-exporter:v4.6
        grafana_admin_user:
        grafana_admin_password:
        grafana_container_image: LOCAL_NODE_FQDN:5000/rhceph/rhceph-4-dashboard-rhel8
        prometheus_container_image: LOCAL_NODE_FQDN:5000/openshift4/ose-prometheus:4.6
        alertmanager_container_image: LOCAL_NODE_FQDN:5000/openshift4/ose-prometheus-alertmanager:4.6
        1
        공용 네트워크의 인터페이스입니다.
        대체 버전
        • 로컬 호스트 FQDN을 사용한 LOCAL_NODE_FQDN.
      5. Red Hat Ceph Storage 4.2에서 dashboard_protocolhttps 로 설정되고 Ansible은 대시보드 및 grafana 키 및 인증서를 생성합니다. 사용자 정의 인증서의 경우 all.yml 파일에서 dashboard_crt,dashboard_key, grafana_crt ,grafana_crt 에 대한 Ansible 설치 프로그램 호스트의 경로를 업데이트합니다. 베어 메탈 또는 컨테이너 배포의 경우 grafana_key 입니다.

        구문

        dashboard_protocol: https
        dashboard_port: 8443
        dashboard_crt: 'DASHBOARD_CERTIFICATE_PATH'
        dashboard_key: 'DASHBOARD_KEY_PATH'
        dashboard_tls_external: false
        dashboard_grafana_api_no_ssl_verify: "{{ True if dashboard_protocol == 'https' and not grafana_crt and not grafana_key else False }}"
        grafana_crt: 'GRAFANA_CERTIFICATE_PATH'
        grafana_key: 'GRAFANA_KEY_PATH'

    2. http 또는 https 프록시와 함께 연결할 수 있는 컨테이너 레지스트리를 사용하여 Red Hat Ceph Storage를 설치하려면 group_vars/all.yml 파일에서 ceph_docker_http_proxy 또는 ceph_docker_https_proxy 변수를 설정합니다.

      예제

      ceph_docker_http_proxy: http://192.168.42.100:8080
      ceph_docker_https_proxy: https://192.168.42.100:8080

      프록시 구성에 대해 일부 호스트를 제외해야 하는 경우 group_vars/all.yml 파일의 ceph_docker_no_proxy 변수를 사용합니다.

      예제

      ceph_docker_no_proxy: "localhost,127.0.0.1"

    3. Red Hat Ceph Storage 프록시 설치를 위해 all.yml 파일을 편집하는 것 외에도 /etc/environment 파일을 편집합니다.

      예제

      HTTP_PROXY: http://192.168.42.100:8080
      HTTPS_PROXY: https://192.168.42.100:8080
      NO_PROXY: "localhost,127.0.0.1"

      그러면 podman을 트리거하여 prometheus, grafana-server, alertmanager, node-exporter와 같은 컨테이너화된 서비스를 시작하고 필요한 이미지를 다운로드합니다.

    4. 모든 배포의 경우 베어 메탈 또는 컨테이너에 대해 group_vars/osds.yml 파일을 편집합니다.

      중요

      운영 체제가 설치된 장치에 OSD를 설치하지 마십시오. 운영 체제와 OSD 간에 동일한 장치를 공유하면 성능 문제가 발생합니다.

      Ceph-ansible은 ceph-volume 툴을 사용하여 Ceph 사용을 위해 스토리지 장치를 준비합니다. 다양한 방법으로 스토리지 장치를 사용하여 특정 워크로드에 대한 성능을 최적화하도록 osds.yml 을 구성할 수 있습니다.

      중요

      아래 모든 예제에서는 Ceph 형식에서 장치의 데이터를 저장하는 데 사용하는 BlueStore 오브젝트 저장소를 사용합니다. 이전에는 Ceph에서 FileStore를 오브젝트 저장소로 사용했습니다. BlueStore는 더 많은 기능과 향상된 성능을 제공하기 때문에 이 형식은 새로운 Red Hat Ceph Storage 4.0 설치에서 더 이상 사용되지 않습니다. FileStore를 계속 사용할 수는 있지만 이를 사용하려면 Red Hat 지원 예외가 필요합니다. BlueStore에 대한 자세한 내용은 Red Hat Ceph Storage 아키텍처 가이드의 Ceph BlueStore 를 참조하십시오.

      1. 자동 검색

        osd_auto_discovery: true

        위 예제에서는 시스템의 빈 스토리지 장치를 모두 사용하여 OSD를 생성하므로 명시적으로 지정할 필요가 없습니다. ceph-volume 툴에서는 빈 장치를 확인하므로 비어 있지 않은 장치는 사용되지 않습니다.

        참고

        나중에 purge-docker-cluster.yml 또는 purge-cluster.yml 을 사용하여 클러스터를 제거하도록 결정하는 경우 osd_auto_discovery 를 주석 처리하고 osds.yml 파일에 OSD 장치를 선언해야 합니다. 자세한 내용은 Ansible에서 배포한 스토리지 클러스터 삭제를 참조하십시오.

      2. 간단한 설정

        첫 번째 시나리오

        devices:
          - /dev/sda
          - /dev/sdb

        또는

        두 번째 시나리오

        devices:
          - /dev/sda
          - /dev/sdb
          - /dev/nvme0n1
          - /dev/sdc
          - /dev/sdd
          - /dev/nvme1n1

        또는

        세 번째 시나리오

        lvm_volumes:
           - data: /dev/sdb
           - data: /dev/sdc

        또는

        네 번째 시나리오

        lvm_volumes:
            - data: /dev/sdb
            - data:/dev/nvme0n1

        devices 옵션을 단독으로 사용하는 경우 ceph-volume lvm 배치 모드에서 OSD 구성을 자동으로 최적화합니다.

        첫 번째 시나리오에서는 장치가 기존 하드 드라이브 또는 SSD인 경우 장치당 하나의 OSD가 생성됩니다.

        두 번째 시나리오에서는 기존 하드 드라이브와 SSD가 혼합된 경우 데이터는 기존 하드 드라이브(sda,sdb)에 배치되고 BlueStore 데이터베이스는 SSD(nvme0n1)에서 최대한 크게 생성됩니다. 마찬가지로 데이터는 기존의 하드 드라이브(sdc,sdd)에 배치되고, BlueStore 데이터베이스는 언급된 장치 순서에 관계없이 SSD nvme1n1 에 생성됩니다.

        참고

        기본적으로 ceph-ansiblebluestore_block_db_sizebluestore_block_wal_size 의 기본값을 재정의하지 않습니다. group_vars/all.yml 파일에서 ceph_conf_overrides 를 사용하여 bluestore_block_db_size 를 설정할 수 있습니다. bluestore_block_db_size 값은 2GB보다 커야 합니다.

        세 번째 시나리오에서는 데이터가 기존 하드 드라이브(sdb,sdc)에 배치되고 BlueStore 데이터베이스는 동일한 장치에 배치됩니다.

        네 번째 시나리오에서는 데이터가 기존 하드 드라이브(sdb) 및 SSD(nvme1n1)에 배치되고 BlueStore 데이터베이스가 동일한 장치에 배치됩니다. 이는 BlueStore 데이터베이스가 SSD에 배치된 devices 지시문을 사용하는 것과 다릅니다.

        중요

        ceph-volume lvm 배치 모드 명령은 기존 하드 드라이브와 BlueStore 데이터베이스에 데이터를 SSD에 배치하여 최적화된 OSD 구성을 생성합니다. 사용할 논리 볼륨 및 볼륨 그룹을 지정하려면 아래 고급 구성 시나리오를 따라 직접 생성할 수 있습니다.

      3. 고급 설정

        첫 번째 시나리오

        devices:
          - /dev/sda
          - /dev/sdb
        dedicated_devices:
          - /dev/sdx
          - /dev/sdy

        또는

        두 번째 시나리오

        devices:
          - /dev/sda
          - /dev/sdb
        dedicated_devices:
          - /dev/sdx
          - /dev/sdy
        bluestore_wal_devices:
          - /dev/nvme0n1
          - /dev/nvme0n2

        첫 번째 시나리오에는 두 개의 OSD가 있습니다. sdasdb 장치에는 각각 자체 데이터 세그먼트와 write-ahead 로그가 있습니다. 추가 사전 dedicated_devices 는 각각 sdxsdy 에서 block.db 라고도 하는 데이터베이스를 격리하는 데 사용됩니다.

        두 번째 시나리오에서 다른 추가 사전 bluestore_wal_devices 는 NVMe 장치 nvme0n1nvme0n2 에서 write-ahead 로그를 격리하는 데 사용됩니다. 장치,dedicated_devicesbluestore_wal_devices 를 함께 사용하면 OSD의 모든 구성 요소를 별도의 장치에 분리할 수 있습니다. 이와 같이 OSD를 배치하면 전반적인 성능이 향상될 수 있습니다.

      4. 미리 생성된 논리 볼륨

        첫 번째 시나리오

        lvm_volumes:
          - data: data-lv1
            data_vg: data-vg1
            db: db-lv1
            db_vg: db-vg1
            wal: wal-lv1
            wal_vg: wal-vg1
          - data: data-lv2
            data_vg: data-vg2
            db: db-lv2
            db_vg: db-vg2
            wal: wal-lv2
            wal_vg: wal-vg2

        또는

        두 번째 시나리오

        lvm_volumes:
          - data: /dev/sdb
            db:    db-lv1
            db_vg: db-vg1
            wal: wal-lv1
            wal_vg: wal-vg1

        기본적으로 Ceph는 논리 볼륨 관리자를 사용하여 OSD 장치에 논리 볼륨을 생성합니다. 위의 간단한 구성고급 구성 예제에서 Ceph는 장치에 논리 볼륨을 자동으로 생성합니다. lvm_volumes 사전을 지정하여 Ceph에서 이전에 생성한 논리 볼륨을 사용할 수 있습니다.

        첫 번째 시나리오에서는 데이터가 전용 논리 볼륨, 데이터베이스 및 WAL에 배치됩니다. 데이터, 데이터 및 WAL 또는 데이터 및 데이터베이스만 지정할 수도 있습니다. data: 행은 데이터를 저장할 논리 볼륨 이름을 지정해야 하며 data_vg: 는 데이터 논리 볼륨이 포함된 볼륨 그룹의 이름을 지정해야 합니다. 마찬가지로 db: 는 데이터베이스가 저장된 논리 볼륨을 지정하는 데 사용되며, db_vg: 는 논리 볼륨이 있는 볼륨 그룹을 지정하는 데 사용됩니다. wal: 행은 WAL이 저장된 논리 볼륨을 지정하고 wal_vg: 행은 해당 볼륨이 포함된 볼륨 그룹을 지정합니다.

        두 번째 시나리오에서는 data: option에 대해 실제 장치 이름이 설정되며, 이렇게 하면 data_vg: 옵션을 지정할 필요가 없습니다. BlueStore 데이터베이스 및 WAL 장치의 논리 볼륨 이름과 볼륨 그룹 세부 정보를 지정해야 합니다.

        중요

        lvm_volumes: 를 사용하면 볼륨 그룹과 논리 볼륨을 미리 만들어야 합니다. 볼륨 그룹과 논리 볼륨은 ceph-anible에서 생성되지 않습니다.

        참고

        모든 NVMe SSD를 사용하는 경우 osds_per_device를 설정합니다. 2. 자세한 내용은 Red Hat Ceph Storage 설치 가이드의 모든 NVMe 스토리지에 대한 OSD Ansible 설정 구성을 참조하십시오.

        참고

        Ceph OSD 노드를 재부팅한 후에는 블록 장치 할당이 변경될 수 있습니다. 예를 들어 sdcsdd 가 될 수 있습니다. 기존 블록 장치 이름 대신 /dev/disk/by-path/ 장치 경로와 같은 영구적인 이름 지정 장치를 사용할 수 있습니다.

  6. 베어 메탈 또는 컨테이너에 있는 모든 배포의 경우 Ansible 인벤토리 파일을 생성한 다음 편집을 위해 엽니다.

    [root@admin ~]# cd /usr/share/ceph-ansible/
    [root@admin ceph-ansible]# touch hosts

    그에 따라 hosts 파일을 편집합니다.

    참고

    Ansible 인벤토리 위치 편집에 대한 자세한 내용은 Ansible 인벤토리 위치 구성을 참조하십시오.

    1. [grafana-server] 아래에 노드를 추가합니다. 이 역할은 Grafana 및 Prometheus를 설치하여 Ceph 클러스터의 성능에 대한 실시간 정보를 제공합니다. 이러한 지표는 Ceph 대시보드에 제공되어 클러스터를 모니터링하고 관리할 수 있습니다. 대시보드, Grafana 및 Prometheus를 설치해야 합니다. Ansible 관리 노드에서 지표 기능을 배치할 수 있습니다. 이 경우 노드의 시스템 리소스가 독립형 메트릭 노드에 필요한 것보다 큰지 확인하십시오.

      [grafana-server]
      GRAFANA-SERVER_NODE_NAME
    2. [mons] 섹션 아래에 모니터 노드를 추가합니다.

      [mons]
      MONITOR_NODE_NAME_1
      MONITOR_NODE_NAME_2
      MONITOR_NODE_NAME_3
    3. [osds] 섹션에 OSD 노드를 추가합니다.

      [osds]
      OSD_NODE_NAME_1
      OSD_NODE_NAME_2
      OSD_NODE_NAME_3
      참고

      노드 이름이 숫자 순차적이면 범위 지정자([1:10])를 노드 이름 끝에 추가할 수 있습니다. 예를 들어 다음과 같습니다.

      [osds]
      example-node[1:10]
      참고

      새 설치의 OSD의 경우 기본 오브젝트 저장소 형식은 BlueStore입니다.

    4. 선택적으로, 컨테이너 배포에서 [mon][osd] 섹션에서 동일한 노드를 추가하여 Ceph OSD 데몬을 하나의 노드의 Ceph OSD 데몬과 함께 연결합니다. 아래 추가 리소스 섹션에서 자세한 내용은 Ceph 데몬 일치 링크를 참조하십시오.
    5. [mgrs] 섹션에 Ceph Manager(ceph-mgr) 노드를 추가합니다. Ceph Monitor 데몬을 사용하여 Ceph Manager 데몬을 배치합니다.

      [mgrs]
      MONITOR_NODE_NAME_1
      MONITOR_NODE_NAME_2
      MONITOR_NODE_NAME_3
  7. 선택적으로 모든 배포, 베어 메탈 또는 컨테이너에 대해 호스트 특정 매개 변수를 사용하려면 호스트 파일과 함께 host_vars 디렉터리를 생성하여 호스트와 관련된 모든 매개변수를 포함합니다.

    1. host_vars 디렉터리를 생성합니다.

      [ansible@admin ~]$ mkdir /usr/share/ceph-ansible/host_vars
    2. host_vars 디렉터리로 변경합니다.

      [ansible@admin ~]$ cd /usr/share/ceph-ansible/host_vars
    3. 호스트 파일을 생성합니다. 파일 이름에 host-name-short-name 형식을 사용합니다. 예를 들면 다음과 같습니다.

      [ansible@admin host_vars]$ touch tower-osd6
    4. 호스트별 매개변수를 사용하여 파일을 업데이트합니다. 예를 들면 다음과 같습니다.

      1. 베어 메탈 배포에서는 devices 매개 변수를 사용하여 OSD 노드에서 사용할 장치를 지정합니다. OSD에서 장치를 사용하면 OSD에서 이름이 다른 장치를 사용하거나 장치 중 하나가 OSD에서 실패한 경우 유용합니다.

        devices:
            DEVICE_1
            DEVICE_2

        예제

        devices:
            /dev/sdb
            /dev/sdc

        참고

        장치를 지정하지 않는 경우 group_vars/osds.yml 파일에서 osd_auto_discovery 매개변수를 true 로 설정합니다.

  8. 필요한 경우 모든 배포, 베어 메탈 또는 컨테이너 의 경우 Ceph Ansible을 사용하여 사용자 지정 NetNamespace 계층 구조를 만들 수 있습니다.

    1. Ansible 인벤토리 파일을 설정합니다. osd_crush_location 매개변수를 사용하여 OSD 호스트의 계층 구조에 OSD 호스트가 될 위치를 지정합니다. OSD의 위치를 지정하려면 두 개 이상의 ArgoCD 버킷 유형을 지정해야 하며 하나의 버킷 유형이 호스트여야 합니다. 기본적으로 root,datacenter,room,row,pod,pdu,rack,섀시호스트가 포함됩니다.

      구문

      [osds]
      CEPH_OSD_NAME osd_crush_location="{ 'root': ROOT_BUCKET_', 'rack': 'RACK_BUCKET', 'pod': 'POD_BUCKET', 'host': 'CEPH_HOST_NAME' }"

      예제

      [osds]
      ceph-osd-01 osd_crush_location="{ 'root': 'default', 'rack': 'rack1', 'pod': 'monpod', 'host': 'ceph-osd-01' }"

    2. group_vars/osds.yml 파일을 편집하고 crush_rule_configcreate_crush_tree 매개 변수를 True 로 설정합니다. 기본 NetNamespace 규칙을 사용하지 않는 경우 하나 이상의 NetNamespace 규칙을 만듭니다. 예를 들면 다음과 같습니다.

      crush_rule_config: True
      crush_rule_hdd:
          name: replicated_hdd_rule
          root: root-hdd
          type: host
          class: hdd
          default: True
      crush_rules:
        - "{{ crush_rule_hdd }}"
      create_crush_tree: True

      더 빠른 SSD 장치를 사용하는 경우 다음과 같이 매개변수를 편집합니다.

      crush_rule_config: True
      crush_rule_ssd:
          name: replicated_ssd_rule
          root: root-ssd
          type: host
          class: ssd
          default: True
      crush_rules:
        - "{{ crush_rule_ssd }}"
      create_crush_tree: True
      참고

      기본 규칙에는 정의해야 하는 class 매개 변수가 포함되어 있으므로 ssdhdd OSD가 모두 배포되지 않으면 기본 nmap 규칙이 실패합니다.

    3. group_vars/clients.yml 파일에 crush_rules 를 생성한 상태에서 을 생성합니다.

      예제

      copy_admin_key: True
      user_config: True
      pool1:
        name: "pool1"
        pg_num: 128
        pgp_num: 128
        rule_name: "HDD"
        type: "replicated"
        device_class: "hdd"
      pools:
        - "{{ pool1 }}"

    4. 트리 보기:

      [root@mon ~]# ceph osd tree
    5. 풀을 검증합니다.

      [root@mon ~]# for i in $(rados lspools); do echo "pool: $i"; ceph osd pool get $i crush_rule; done
      
      pool: pool1
      crush_rule: HDD
  9. 모든 배포의 경우 베어 메탈 또는 컨테이너에 대해 로그인하거나 ansible 사용자로 전환합니다.

    1. Ansible이 ceph-ansible 플레이북에서 생성한 임시 값을 저장하는 ceph-ansible-keys 디렉터리를 생성합니다.

      [ansible@admin ~]$ mkdir ~/ceph-ansible-keys
    2. /usr/share/ceph-ansible/ 디렉토리로 변경합니다.

      [ansible@admin ~]$ cd /usr/share/ceph-ansible/
    3. Ansible이 Ceph 노드에 연결할 수 있는지 확인합니다.

      [ansible@admin ceph-ansible]$ ansible all -m ping -i hosts
  10. ceph-ansible 플레이북을 실행합니다.

    1. 베어 메탈 배포:

      [ansible@admin ceph-ansible]$ ansible-playbook site.yml -i hosts
    2. 컨테이너 배포:

      [ansible@admin ceph-ansible]$ ansible-playbook site-container.yml -i hosts
      참고

      Red Hat Ceph Storage를 Red Hat Enterprise Linux Atomic Host 호스트에 배포하는 경우 --skip-tags=with_pkg 옵션을 사용합니다.

      [user@admin ceph-ansible]$ ansible-playbook site-container.yml --skip-tags=with_pkg -i hosts
      참고

      배포 속도를 높이려면 ansible-playbook--forks 옵션을 사용합니다. 기본적으로 ceph-ansible 세트는 포크를 20 으로 설정합니다. 이 설정을 사용하면 최대 20개의 노드가 동시에 설치됩니다. 한 번에 최대 30개의 노드를 설치하려면 ansible-playbook --forks 30 PLAYBOOK Files - i 호스트를 실행합니다. 과다하게 사용되지 않도록 관리 노드의 리소스를 모니터링해야 합니다. 이러한 값이 있는 경우 --forks 에 전달되는 수를 줄입니다.

  11. Ceph 배포가 완료될 때까지 기다립니다.

    출력 예

    INSTALLER STATUS *******************************
    Install Ceph Monitor           : Complete (0:00:30)
    Install Ceph Manager           : Complete (0:00:47)
    Install Ceph OSD               : Complete (0:00:58)
    Install Ceph RGW               : Complete (0:00:34)
    Install Ceph Dashboard         : Complete (0:00:58)
    Install Ceph Grafana           : Complete (0:00:50)
    Install Ceph Node Exporter     : Complete (0:01:14)
  12. Ceph 스토리지 클러스터의 상태를 확인합니다.

    1. 베어 메탈 배포:

      [root@mon ~]# ceph health
      HEALTH_OK
    2. 컨테이너 배포:

      Red Hat Enterprise Linux 7

      [root@mon ~]# docker exec ceph-mon-ID ceph health

      Red Hat Enterprise Linux 8

      [root@mon ~]# podman exec ceph-mon-ID ceph health

      대체 버전
      • Ceph Monitor 노드의 호스트 이름이 있는 ID:

        예제

        [root@mon ~]# podman exec ceph-mon-mon0 ceph health
        HEALTH_OK

  13. 모든 배포에서는 베어 메탈 또는 컨테이너에 대해 rados 를 사용하여 스토리지 클러스터가 작동하는지 확인합니다.

    1. Ceph Monitor 노드에서 8개의 배치 그룹(PG)이 있는 테스트 풀을 생성합니다.

      구문

      [root@mon ~]# ceph osd pool create POOL_NAME PG_NUMBER

      예제

      [root@mon ~]# ceph osd pool create test 8

    2. hello-world.txt 라는 파일을 생성합니다.

      구문

      [root@mon ~]# vim FILE_NAME

      예제

      [root@mon ~]# vim hello-world.txt

    3. hello-world 라는 오브젝트를 사용하여 test 풀에 hello-world.txt 를 업로드합니다.

      구문

      [root@mon ~]# rados --pool POOL_NAME put OBJECT_NAME OBJECT_FILE_NAME

      예제

      [root@mon ~]# rados --pool test put hello-world hello-world.txt

    4. 테스트 풀에서 hello-world 를 파일 이름 fetch.txt 로 다운로드합니다.

      구문

      [root@mon ~]# rados --pool POOL_NAME get OBJECT_NAME OBJECT_FILE_NAME

      예제

      [root@mon ~]# rados --pool test get hello-world fetch.txt

    5. fetch.txt 내용을 확인합니다.

      [root@mon ~]# cat fetch.txt
      "Hello World!"
      참고

      스토리지 클러스터 상태를 확인하는 것 외에도 ceph-medic 유틸리티를 사용하여 Ceph Storage 클러스터를 전반적으로 진단할 수 있습니다. Red Hat Ceph Storage 4 문제 해결 가이드의 Ceph Storage 클러스터 진단을 위한 ceph-medic 설치 및 사용 장을 참조하십시오.

추가 리소스