저희 회사에서는 Ceph-ansible을 배포자(업그레이드, 확장 작업 등)로 사용하면서 수년간 Ceph를 사용해 왔습니다. 최근에는 설치 및 2일차 작업을 위해 "cephadm"으로 마이그레이션하라는 임무를 받았습니다.
POC를 수행하는 동안 두 가지 문제에 직면했는데 그 중 하나가 다른 것보다 더 정확했습니다.
- ceph-ansible과 관련된 다양한 독립 네트워크가 있습니다.
ㅏ. SSH 관련 네트워크를 구성하고 Ceph 관련 호스트(mons/osds/clients가 있는 노드)에서 원격으로 작업을 실행합니다.
b. 공용 네트워크 - mons, mgrs, mdss를 호스팅하는 데 사용되는 노드입니다. 이 주소는SSH는 지원되지 않습니다. Ceph 클러스터는 이러한 방식으로 완벽하게 작동합니다.
씨. 클러스터 네트워크 - 하트비트, 복제 등 내부 ceph 트래픽에 사용됩니다. SSH도 사용할 수 없습니다.
따라서 cephadm의 경우 부팅 시 공용 네트워크와 구성을 "결합"해야 합니다. 즉, 이 네트워크가 ssh를 지원하도록 허용하지 않는 한(보안상의 이유로 이를 원하지 않음) bootstrap 명령은 다음 메시지와 함께 실패합니다. SSH 및 ceph 목적을 위한 별도의 네트워크(모니터용 공용 네트워크)를 사용하여 ceph 클러스터를 설치하는 방법을 찾을 수 없습니다.
/usr/bin/ceph: stderr File "/usr/share/ceph/mgr/orchestrator/_interface.py", line 225, in raise_if_exception
/usr/bin/ceph: stderr e = pickle.loads(c.serialized_exception)
/usr/bin/ceph: stderr TypeError: __init__() missing 2 required positional arguments: 'hostname' and 'addr'
/usr/bin/ceph: stderr
ERROR: Failed to add host <HOSTNAME>: Failed command: /usr/bin/podman run --rm --ipc=host --stop-signal=SIGTERM --net=host --entrypoint /usr/bin/ceph --init -e CONTAINER_IMAGE=<registry:port>/ceph/daemon:quincy-rockylinux-8-x86_64 -e NODE_NAME=<hostname> -e CEPH_USE_RANDOM_NONCE=1 -v /var/log/ceph/a0a19cd2-44ec-11ee-a922-ec0d9a94e986:/var/log/ceph:z -v /tmp/ceph-tmpb0u6hlv7:/etc/ceph/ceph.client.admin.keyring:z -v /tmp/ceph-tmpooy56ocy:/etc/ceph/ceph.conf:z <registry:port>/ceph/daemon:quincy-rockylinux-8-x86_64 orch host add <HOSTNAME> <IP>
- 우리는 "와 같은 이름의 원래 ceph 서비스를 사용했습니다.[이메일 보호됨]'. cephadm을 사용하면 모든 서비스와 모든 컨테이너 이름에는 이름의 일부로 fsid가 있어야 합니다. 어디에서 변경할 수 있는지 검색해 보았지만 아무것도 찾지 못했습니다.
답변1
- 이것이 cephadm의 작동 방식입니다. 모든 검사와 원격 명령을 실행하려면 모든 노드에 대한 SSH 액세스가 필요합니다. 클러스터를 원격으로 관리하기 위한 코디네이터를 제공하므로 이를 해결할 방법이 없습니다.
- 서비스 이름과 관련하여 cephadm을 사용하면 컨테이너에서 Ceph 클러스터를 실행할 수 있으므로 동일한 하드웨어 서버에서 여러 클러스터를 실행할 수 있습니다. 서비스에 fsid가 없으면 클러스터를 구별할 수 없습니다. 서비스 이름에 fsid를 포함하지 않으려는 특별한 이유가 있나요? 실제로는 아프지 않습니다.기존 클러스터 변환cephadm이 자동으로 서비스를 구성합니다.