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 리포지토리 활성화 장을 참조하십시오.
절차
-
Ansible 관리 노드에
root사용자 계정으로 로그인합니다. 모든 배포가 베어 메탈 또는 컨테이너 의 경우
ceph-ansible패키지를 설치합니다.Red Hat Enterprise Linux 7
[root@admin ~]# yum install ceph-ansibleRed Hat Enterprise Linux 8
[root@admin ~]# dnf install ceph-ansible/usr/share/ceph-ansible/디렉토리로 이동합니다.[root@admin ~]# cd /usr/share/ceph-ansible새
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베어 메탈 배포:
[root@admin ceph-ansible]# cp site.yml.sample site.yml컨테이너 배포:
[root@admin ceph-ansible]# cp site-container.yml.sample site-container.yml
새 파일을 편집합니다.
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_username및ceph_docker_registry_password매개변수를 포함해야 ceph-ansible이 대시보드에 필요한 컨테이너 이미지를 가져올 수 있습니다.참고Red Hat Registry Service 계정이 없는 경우 레지스트리 서비스 계정 웹 페이지를 사용하여 생성합니다. 토큰을 만들고 관리하는 방법에 대한 자세한 내용은 Red Hat Container Registry Authentication Knowledgebase 문서를 참조하십시오.
참고ceph_docker_registry_username및ceph_docker_registry_password매개변수에 서비스 계정을 사용하는 것 외에도 고객 포털 자격 증명을 사용하지만 보안을 보장하기 위해ceph_docker_registry_password매개변수를 암호화할 수 있습니다. 자세한 내용은 ansible-vault를 사용하여 Ansible 암호 변수 암호화 를 참조하십시오.CDN 설치를 위한
all.yml파일의 베어 메탈 예:fetch_directory: ~/ceph-ansible-keys ceph_origin: repository ceph_repository: rhcs ceph_repository_type: cdn ceph_rhcs_version: 4 monitor_interface: eth01 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_password및grafana_admin_password의 주석 처리를 해제하거나 설정해야 합니다. 각각에 대해 보안 암호를 설정합니다.dashboard_admin_user및grafana_admin_user의 사용자 지정 사용자 이름도 설정합니다.참고Red Hat Ceph Storage 4.2의 경우 설치를 위해 로컬 레지스트리를 사용한 경우 Prometheus 이미지 태그에 4.6을 사용합니다.
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: eth01 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
- 공용 네트워크의 인터페이스입니다.
all.yml파일의 컨테이너 예:fetch_directory: ~/ceph-ansible-keys monitor_interface: eth01 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 에서 최신 컨테이너 이미지 태그를 조회하여 모든 최신 패치가 적용된 최신 컨테이너 이미지를 설치합니다.
all.yml파일의 컨테이너 예: Red Hat Ceph Storage 노드가 배포 중에 인터넷에 액세스할 수 없는 경우:fetch_directory: ~/ceph-ansible-keys monitor_interface: eth01 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.
Red Hat Ceph Storage 4.2에서
dashboard_protocol은https로 설정되고 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'
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"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와 같은 컨테이너화된 서비스를 시작하고 필요한 이미지를 다운로드합니다.
모든 배포의 경우 베어 메탈 또는 컨테이너에 대해
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 를 참조하십시오.
자동 검색
osd_auto_discovery: true위 예제에서는 시스템의 빈 스토리지 장치를 모두 사용하여 OSD를 생성하므로 명시적으로 지정할 필요가 없습니다.
ceph-volume툴에서는 빈 장치를 확인하므로 비어 있지 않은 장치는 사용되지 않습니다.참고나중에
purge-docker-cluster.yml또는purge-cluster.yml을 사용하여 클러스터를 제거하도록 결정하는 경우osd_auto_discovery를 주석 처리하고osds.yml파일에 OSD 장치를 선언해야 합니다. 자세한 내용은 Ansible에서 배포한 스토리지 클러스터 삭제를 참조하십시오.간단한 설정
첫 번째 시나리오
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/nvme0n1devices옵션을 단독으로 사용하는 경우ceph-volume lvm 배치모드에서 OSD 구성을 자동으로 최적화합니다.첫 번째 시나리오에서는
장치가기존 하드 드라이브 또는 SSD인 경우 장치당 하나의 OSD가 생성됩니다.두 번째 시나리오에서는 기존 하드 드라이브와 SSD가 혼합된 경우 데이터는 기존 하드 드라이브(
sda,sdb)에 배치되고 BlueStore 데이터베이스는 SSD(nvme0n1)에서 최대한 크게 생성됩니다. 마찬가지로 데이터는 기존의 하드 드라이브(sdc,sdd)에 배치되고, BlueStore 데이터베이스는 언급된 장치 순서에 관계없이 SSDnvme1n1에 생성됩니다.참고기본적으로
ceph-ansible은bluestore_block_db_size및bluestore_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 구성을 생성합니다. 사용할 논리 볼륨 및 볼륨 그룹을 지정하려면 아래 고급 구성 시나리오를 따라 직접 생성할 수 있습니다.고급 설정
첫 번째 시나리오
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가 있습니다.
sda및sdb장치에는 각각 자체 데이터 세그먼트와 write-ahead 로그가 있습니다. 추가 사전dedicated_devices는 각각sdx및sdy에서block.db라고도 하는 데이터베이스를 격리하는 데 사용됩니다.두 번째 시나리오에서 다른 추가 사전
bluestore_wal_devices는 NVMe 장치nvme0n1및nvme0n2에서 write-ahead 로그를 격리하는 데 사용됩니다.장치,dedicated_devices및bluestore_wal_devices를 함께 사용하면 OSD의 모든 구성 요소를 별도의 장치에 분리할 수 있습니다. 이와 같이 OSD를 배치하면 전반적인 성능이 향상될 수 있습니다.미리 생성된 논리 볼륨
첫 번째 시나리오
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 노드를 재부팅한 후에는 블록 장치 할당이 변경될 수 있습니다. 예를 들어
sdc는sdd가 될 수 있습니다. 기존 블록 장치 이름 대신/dev/disk/by-path/장치 경로와 같은 영구적인 이름 지정 장치를 사용할 수 있습니다.
베어 메탈 또는 컨테이너에 있는 모든 배포의 경우 Ansible 인벤토리 파일을 생성한 다음 편집을 위해 엽니다.
[root@admin ~]# cd /usr/share/ceph-ansible/ [root@admin ceph-ansible]# touch hosts그에 따라
hosts파일을 편집합니다.참고Ansible 인벤토리 위치 편집에 대한 자세한 내용은 Ansible 인벤토리 위치 구성을 참조하십시오.
[grafana-server]아래에 노드를 추가합니다. 이 역할은 Grafana 및 Prometheus를 설치하여 Ceph 클러스터의 성능에 대한 실시간 정보를 제공합니다. 이러한 지표는 Ceph 대시보드에 제공되어 클러스터를 모니터링하고 관리할 수 있습니다. 대시보드, Grafana 및 Prometheus를 설치해야 합니다. Ansible 관리 노드에서 지표 기능을 배치할 수 있습니다. 이 경우 노드의 시스템 리소스가 독립형 메트릭 노드에 필요한 것보다 큰지 확인하십시오.[grafana-server] GRAFANA-SERVER_NODE_NAME[mons]섹션 아래에 모니터 노드를 추가합니다.[mons] MONITOR_NODE_NAME_1 MONITOR_NODE_NAME_2 MONITOR_NODE_NAME_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입니다.
-
선택적으로, 컨테이너 배포에서
[mon]및[osd]섹션에서 동일한 노드를 추가하여 Ceph OSD 데몬을 하나의 노드의 Ceph OSD 데몬과 함께 연결합니다. 아래 추가 리소스 섹션에서 자세한 내용은 Ceph 데몬 일치 링크를 참조하십시오. [mgrs]섹션에 Ceph Manager(ceph-mgr) 노드를 추가합니다. Ceph Monitor 데몬을 사용하여 Ceph Manager 데몬을 배치합니다.[mgrs] MONITOR_NODE_NAME_1 MONITOR_NODE_NAME_2 MONITOR_NODE_NAME_3
선택적으로 모든 배포, 베어 메탈 또는 컨테이너에 대해 호스트 특정 매개 변수를 사용하려면 호스트 파일과 함께
host_vars디렉터리를 생성하여 호스트와 관련된 모든 매개변수를 포함합니다.host_vars디렉터리를 생성합니다.[ansible@admin ~]$ mkdir /usr/share/ceph-ansible/host_varshost_vars디렉터리로 변경합니다.[ansible@admin ~]$ cd /usr/share/ceph-ansible/host_vars호스트 파일을 생성합니다. 파일 이름에 host-name-short-name 형식을 사용합니다. 예를 들면 다음과 같습니다.
[ansible@admin host_vars]$ touch tower-osd6호스트별 매개변수를 사용하여 파일을 업데이트합니다. 예를 들면 다음과 같습니다.
베어 메탈 배포에서는
devices매개 변수를 사용하여 OSD 노드에서 사용할 장치를 지정합니다. OSD에서장치를사용하면 OSD에서 이름이 다른 장치를 사용하거나 장치 중 하나가 OSD에서 실패한 경우 유용합니다.devices: DEVICE_1 DEVICE_2예제
devices: /dev/sdb /dev/sdc참고장치를 지정하지 않는 경우
group_vars/osds.yml파일에서osd_auto_discovery매개변수를true로 설정합니다.
필요한 경우 모든 배포, 베어 메탈 또는 컨테이너 의 경우 Ceph Ansible을 사용하여 사용자 지정 NetNamespace 계층 구조를 만들 수 있습니다.
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' }"group_vars/osds.yml파일을 편집하고crush_rule_config및create_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매개 변수가 포함되어 있으므로ssd및hddOSD가 모두 배포되지 않으면 기본 nmap 규칙이 실패합니다.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 }}"트리 보기:
[root@mon ~]# ceph osd tree풀을 검증합니다.
[root@mon ~]# for i in $(rados lspools); do echo "pool: $i"; ceph osd pool get $i crush_rule; done pool: pool1 crush_rule: HDD
모든 배포의 경우 베어 메탈 또는 컨테이너에 대해 로그인하거나
ansible사용자로 전환합니다.Ansible이
ceph-ansible플레이북에서 생성한 임시 값을 저장하는ceph-ansible-keys디렉터리를 생성합니다.[ansible@admin ~]$ mkdir ~/ceph-ansible-keys/usr/share/ceph-ansible/디렉토리로 변경합니다.[ansible@admin ~]$ cd /usr/share/ceph-ansible/Ansible이 Ceph 노드에 연결할 수 있는지 확인합니다.
[ansible@admin ceph-ansible]$ ansible all -m ping -i hosts
ceph-ansible플레이북을 실행합니다.베어 메탈 배포:
[ansible@admin ceph-ansible]$ ansible-playbook site.yml -i hosts컨테이너 배포:
[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에 전달되는 수를 줄입니다.
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)Ceph 스토리지 클러스터의 상태를 확인합니다.
베어 메탈 배포:
[root@mon ~]# ceph health HEALTH_OK컨테이너 배포:
Red Hat Enterprise Linux 7
[root@mon ~]# docker exec ceph-mon-ID ceph healthRed 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
모든 배포에서는 베어 메탈 또는 컨테이너에 대해
rados를 사용하여 스토리지 클러스터가 작동하는지 확인합니다.Ceph Monitor 노드에서 8개의 배치 그룹(PG)이 있는 테스트 풀을 생성합니다.
구문
[root@mon ~]# ceph osd pool create POOL_NAME PG_NUMBER예제
[root@mon ~]# ceph osd pool create test 8hello-world.txt라는 파일을 생성합니다.구문
[root@mon ~]# vim FILE_NAME예제
[root@mon ~]# vim hello-world.txthello-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테스트 풀에서
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.txtfetch.txt내용을 확인합니다.[root@mon ~]# cat fetch.txt "Hello World!"참고스토리지 클러스터 상태를 확인하는 것 외에도
ceph-medic유틸리티를 사용하여 Ceph Storage 클러스터를 전반적으로 진단할 수 있습니다. Red Hat Ceph Storage 4 문제 해결 가이드의 Ceph Storage 클러스터 진단을 위한ceph-medic설치 및 사용 장을 참조하십시오.
추가 리소스
- 공통 Ansible 설정 목록입니다.
- 일반 OSD 설정 목록입니다.
- 자세한 내용은 컨테이너화된 Ceph 데몬 공동 배치를 참조하십시오.