3.4. 노드 사전 배포 요구 사항
Red Hat Ceph Storage 클러스터를 설치하기 전에 다음 단계를 수행하여 필요한 모든 요구 사항을 충족합니다.
모든 노드를 Red Hat Network 또는 Red Hat Satellite에 등록하고 유효한 풀에 등록합니다.
subscription-manager register subscription-manager subscribe --pool=8a8XXXXXX9e0
다음 리포지토리에 대해 Ceph 클러스터의 모든 노드에 대한 액세스를 활성화합니다.
-
rhel-8-for-x86_64-baseos-rpms
rhel-8-for-x86_64-appstream-rpms
subscription-manager repos --disable="*" --enable="rhel-8-for-x86_64-baseos-rpms" --enable="rhel-8-for-x86_64-appstream-rpms"
-
운영 체제 RPM을 최신 버전으로 업데이트하고 필요한 경우 재부팅합니다.
dnf update -y reboot
부트스트랩 노드가 될 클러스터에서 노드를 선택합니다. 이 예에서
ceph1
은 부트스트랩 노드입니다.부트스트랩 노드
ceph1
에서만ansible-2.9-for-rhel-8-x86_64-rpms
및rhceph-5-tools-for-rhel-8-x86_64-rpms
리포지토리를 활성화합니다.subscription-manager repos --enable="ansible-2.9-for-rhel-8-x86_64-rpms" --enable="rhceph-5-tools-for-rhel-8-x86_64-rpms"
모든 호스트의 베어/short 호스트 이름을 사용하여 호스트 이름을 구성합니다.
hostnamectl set-hostname <short_name>
cephadm을 사용하여 Red Hat Ceph Storage를 배포하기 위한 호스트 이름 구성을 확인합니다.
$ hostname
출력 예:
ceph1
/etc/hosts 파일을 수정하고 DNS 도메인 이름으로 DOMAIN 변수를 설정하여 fqdn 항목을 127.0.0.1 IP에 추가합니다.
DOMAIN="example.domain.com" cat <<EOF >/etc/hosts 127.0.0.1 $(hostname).${DOMAIN} $(hostname) localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 $(hostname).${DOMAIN} $(hostname) localhost6 localhost6.localdomain6 EOF
hostname -f
옵션을 사용하여fqdn
이 있는 긴 호스트 이름을 확인합니다.$ hostname -f
출력 예:
ceph1.example.domain.com
참고: 이러한 변경이 필요한 이유에 대해 자세 히 알아보려면 정규화된 도메인 이름과 베어 호스트 이름을 참조하십시오.
부트스트랩 노드에서 다음 단계를 실행합니다. 이 예제에서 부트스트랩 노드는
ceph1
입니다.cephadm-ansible
RPM 패키지를 설치합니다.$ sudo dnf install -y cephadm-ansible
중요Ansible 플레이북을 실행하려면 Red Hat Ceph Storage 클러스터에 구성된 모든 노드에
ssh
암호 없이 액세스할 수 있어야 합니다. 구성된 사용자(예:deployment-user
)에 암호 없이sudo
명령을 호출할 수 있는 루트 권한이 있는지 확인합니다.사용자 지정 키를 사용하려면 선택한 사용자(예:
deployment-user
) ssh 구성 파일을 구성하여 ssh를 통해 노드 연결에 사용할 id/key를 지정합니다.cat <<EOF > ~/.ssh/config Host ceph* User deployment-user IdentityFile ~/.ssh/ceph.pem EOF
ansible 인벤토리 빌드
cat <<EOF > /usr/share/cephadm-ansible/inventory ceph1 ceph2 ceph3 ceph4 ceph5 ceph6 ceph7 [admin] ceph1 EOF
참고인벤토리 파일의 [admin] 그룹의 일부로 구성된 호스트는
cephadm
에서_admin
으로 태그가 지정되어 부트스트랩 프로세스 중에 관리자 ceph 인증 키를 수신합니다.ansible
이 pre-flight 플레이북을 실행하기 전에 ping 모듈을 사용하여 모든 노드에 액세스할 수 있는지 확인합니다.$ ansible -i /usr/share/cephadm-ansible/inventory -m ping all -b
출력 예:
ceph6 | SUCCESS => { "ansible_facts": { "discovered_interpreter_python": "/usr/libexec/platform-python" }, "changed": false, "ping": "pong" } ceph4 | SUCCESS => { "ansible_facts": { "discovered_interpreter_python": "/usr/libexec/platform-python" }, "changed": false, "ping": "pong" } ceph3 | SUCCESS => { "ansible_facts": { "discovered_interpreter_python": "/usr/libexec/platform-python" }, "changed": false, "ping": "pong" } ceph2 | SUCCESS => { "ansible_facts": { "discovered_interpreter_python": "/usr/libexec/platform-python" }, "changed": false, "ping": "pong" } ceph5 | SUCCESS => { "ansible_facts": { "discovered_interpreter_python": "/usr/libexec/platform-python" }, "changed": false, "ping": "pong" } ceph1 | SUCCESS => { "ansible_facts": { "discovered_interpreter_python": "/usr/libexec/platform-python" }, "changed": false, "ping": "pong" } ceph7 | SUCCESS => { "ansible_facts": { "discovered_interpreter_python": "/usr/libexec/platform-python" }, "changed": false, "ping": "pong" }
다음 ansible 플레이북을 실행합니다.
$ ansible-playbook -i /usr/share/cephadm-ansible/inventory /usr/share/cephadm-ansible/cephadm-preflight.yml --extra-vars "ceph_origin=rhcs"
preflight Playbook Ansible Playbook은 Red Hat Ceph Storage
dnf
리포지토리를 구성하고 부트스트랩을 위해 스토리지 클러스터를 준비합니다. podman, lvm2, chronyd, cephadm도 설치합니다.cephadm-ansible
및cephadm-preflight.yml
의 기본 위치는/usr/share/cephadm-ansible
입니다.