Ceph와 OpenStack을 함께 연습할 수 있는 HCI Lab을 만들고 있습니다. 그 첫 단계로 그림과 같은 형태의 환경에 Ceph를 설치해보고자 합니다.
Intro to Ceph는 읽고 시작하기
Ceph 관련 문서들을 보다보면, Ceph만의 기술 용어들이 등장합니다. 시작하기 전에 Intro to Ceph 설명서는 보는게 좋습니다.
기본 용어는 제가 Glossary를 기계번역해 놓았습니다.
cephadm으로 설치
Ceph 클러스터를 구성하는 방법은 크게 보면
- cephadm을 이용하는 방법: https://docs.ceph.com/en/latest/install/
- ceph-ansible을 이용하는 방법: https://docs.ceph.com/projects/ceph-ansible/en/latest/
- 수동으로 설치하는 방법: https://docs.ceph.com/en/latest/install/index_manual/#install-manual
- 쿠버네티스 환경의 경우 Rook를 이용하는 방법: https://rook.io/
등이 있는 것 같습니다.
참고: 언급된 것 이외에도 Salt와 cephadm, Juju, Puppet 등을 이용한 방법등도 있습니다.
저는 그 중에 cephadm을 이용한 방법으로 구성해보고자 합니다.
cephadm과 ceph-ansible을 이용한 설치 방법 간의 차이점은 다음 설명서를 참고하세요.
- Red Hat 설명서: https://docs.redhat.com/ko/documentation/red_hat_ceph_storage/7/html/installation_guide/comparison-between-ceph-ansible-and-cephadm_install
- IBM 설명서: https://www.ibm.com/docs/ko/storage-ceph/7.1?topic=installing-comparison-between-ceph-ansible-cephadm
HCI Lab 구조
연습용으로 만들어볼 HCI Lab의 구조는 위의 그림과 같습니다. 입문용이라 간단하게 구성해 봤습니다.
- 컴퓨팅 자원은 8 vCPU, RAM 32GB로 시작해서 실 사용량에 따라 조정해나갈 생각입니다. Ceph 구성 끝난 후에는 OpenStack을 구성해서 HCI 형태로 구성할 것입니다.
- 스토리지 디바이스는 1개로도 가능하나, 2개로 시작해 봤습니다.
- Ceph를 배우는 과정에서는 네트워크 구조를 이해하는 것도 중요해 보입니다. 그래서 3개의 네트워크로 가시적으로 구분했습니다. Ceph용으로 사용하는 부분만 정리했습니다.
- Linux 배포판은 Rocky Linux 9.4를 사용했습니다.
설치전 준비사항들 확인
우선 기본적인 네트워킹 요소들을 준비하고 확인합니다.
- 연결 가능한 NTP 서버 주소
- DNS에 호스트 이름 등록하고, 노드에서 조회 잘 되는지 확인
다음 URL에서 사전 요구사항들을 확인하고 구성합니다.
3개의 노드 준비
제 경우는 vSphere 환경에 가상머신으로 만들었습니다.
사양은 앞서 설명 처럼 구성했고, OS는 Rocky Linux 9.4의 minimal 을 선택해서 설치했습니다.
root 아이디로 접속 환경 설정
첫번째 노드에 root로 접속합니다. Ceph 구성 작업은 모든 노드에서 root 로 로그인해서 구성하게 됩니다. 각 호스트에 root 아이디를 이용해서 ssh 접속을 가능하도록 해줍니다.
vi /etc/ssh/sshd_config PermitRootLogin yes
sshd_config 파일을 수정한 다음 적용되도록, sshd 를 재시작해줍니다.
systemctl reload sshd
클러스터 구성하는 모든 노드에서 해주어야 합니다.
설치할 버전 확인
다음 URL에서 Ceph의 릴리즈 정보를 확인하고 설치할 버전을 확인합니다.
현재 기준으로 새로 클러스터를 구성한다면 Reef 또는 Quincy 정도가 대상일겁니다. 좀 더 많이 굴러본 버전을 선호하면 Quincy, 새버전을 선호하면 Reef가 될 것 같습니다.
제 경우는 새로 배우는 입장이라 최신 버전인 Reef 18.2.4로 가고자 합니다.
cephadm 유틸리티 설치
앞에서 확인한 버전을 환경 변수 CEPH_RELEASE에 지정해 줍니다.
[root@OpenHCI-01 ~]# CEPH_RELEASE=18.2.4
cephadm 실행 파일을 다운로드 받습니다.
[root@OpenHCI-01 ~]# curl -sLO https://download.ceph.com/rpm-${CEPH_RELEASE}/el9/noarch/cephadm
다운로드 받은 cephadm 실행 파일에 실행 권한을 줍니다.
[root@OpenHCI-01 ~]# chmod +x ./cephadm
cephadm 명령으로 reef 릴리즈 저장소를 추가해 줍니다.
[root@OpenHCI-01 ~]# ./cephadm add-repo --release reef Writing repo to /etc/yum.repos.d/ceph.repo... Enabling EPEL... Completed adding repo. [root@OpenHCI-01 ~]#
cephadm 실행 파일을 설치합니다.
[root@OpenHCI-01 ~]# ./cephadm install Installing packages ['cephadm']... [root@OpenHCI-01 ~]#
cephadm이 설치된 경로를 확인합니다.
[root@OpenHCI-01 ~]# which cephadm /sbin/cephadm
Ceph Admin 노드에 Ceph Cluster Monitor 초기화
이제 Admin 노드(첫번째 노드)에 ceph-mon을 초기화해 주어야 합니다. 이 때 어떤 네트워크를 사용할지 결정해야 합니다. 자세한 내용은 다음 설명서를 참고하시면 됩니다.
설명서에 있는 것 처럼 Ceph Mon은 Public Network에 연결되어 있습니다. --mon-ip
에 첫번째 노드의 Public Network 주소를 지정해서 실행하면 됩니다.
제 환경은 cluster 네트워크를 분리해서 사용할 것이라 –cluster-network 옵션도 지정했습니다.
[student@OpenHCI-01 ~]$ sudo -i [root@OpenHCI-01 ~]# cephadm bootstrap --mon-ip 172.16.2.11 --cluster-network 172.16.3.0/24 Creating directory /etc/ceph for ceph.conf Verifying podman|docker is present... Verifying lvm2 is present... Verifying time synchronization is in place... Unit chronyd.service is enabled and running Repeating the final host check... podman (/bin/podman) version 4.9.4 is present systemctl is present lvcreate is present Unit chronyd.service is enabled and running Host looks OK Cluster fsid: 17593d3e-4e4d-11ef-90ca-005056b09910 Verifying IP 172.16.2.11 port 3300 ... Verifying IP 172.16.2.11 port 6789 ... Mon IP `172.16.2.11` is in CIDR network `172.16.2.0/24` Mon IP `172.16.2.11` is in CIDR network `172.16.2.0/24` Pulling container image quay.io/ceph/ceph:v18... Ceph version: ceph version 18.2.4 (e7ad5345525c7aa95470c26863873b581076945d) reef (stable) Extracting ceph user uid/gid from container image... Creating initial keys... Creating initial monmap... Creating mon... Waiting for mon to start... Waiting for mon... mon is available Assimilating anything we can from ceph.conf... Generating new minimal ceph.conf... Restarting the monitor... Setting public_network to 172.16.2.0/24 in mon config section Setting cluster_network to 172.16.3.0/24 Wrote config to /etc/ceph/ceph.conf Wrote keyring to /etc/ceph/ceph.client.admin.keyring Creating mgr... Verifying port 0.0.0.0:9283 ... Verifying port 0.0.0.0:8765 ... Verifying port 0.0.0.0:8443 ... Waiting for mgr to start... Waiting for mgr... mgr not available, waiting (1/15)... mgr not available, waiting (2/15)... mgr not available, waiting (3/15)... mgr not available, waiting (4/15)... mgr is available Enabling cephadm module... Waiting for the mgr to restart... Waiting for mgr epoch 5... mgr epoch 5 is available Setting orchestrator backend to cephadm... Generating ssh key... Wrote public SSH key to /etc/ceph/ceph.pub Adding key to root@localhost authorized_keys... Adding host OpenHCI-01... Deploying mon service with default placement... Deploying mgr service with default placement... Deploying crash service with default placement... Deploying ceph-exporter service with default placement... Deploying prometheus service with default placement... Deploying grafana service with default placement... Deploying node-exporter service with default placement... Deploying alertmanager service with default placement... Enabling the dashboard module... Waiting for the mgr to restart... Waiting for mgr epoch 9... mgr epoch 9 is available Generating a dashboard self-signed certificate... Creating initial admin user... Fetching dashboard port number... Ceph Dashboard is now available at: URL: https://OpenHCI-01.098.co.kr:8443/ User: admin Password: 378dvus5ub Enabling client.admin keyring and conf on hosts with "admin" label Saving cluster configuration to /var/lib/ceph/17593d3e-4e4d-11ef-90ca-005056b09910/config directory Enabling autotune for osd_memory_target You can access the Ceph CLI as following in case of multi-cluster or non-default config: sudo /sbin/cephadm shell --fsid 17593d3e-4e4d-11ef-90ca-005056b09910 -c /etc/ceph/ceph.conf -k /etc/ceph/ceph.client.admin.keyring Or, if you are only running a single cluster on this host: sudo /sbin/cephadm shell Please consider enabling telemetry to help improve Ceph: ceph telemetry on For more information see: https://docs.ceph.com/en/latest/mgr/telemetry/ Bootstrap complete. [root@OpenHCI-01 ~]#
제 경우 2분 정도 걸린 것 같습니다.
( 시스템 환경 따라 차이는 있을 겁니다. 제 연습 장비가 워낙 구형이라서요. ^^ )
표시된 내용보면 여러가지 작업이 이루어졌고, 몇가지 기본적인 정보들 알려주고 있습니다. 표시된 웹페이지 정보로 접속해보니, 관리자 암호 변경하고 나서, 이렇게 생긴 화면이 나옵니다.
부트스트랩 과정에서 다음과 같은 작업이 이루어진다고 합니다.
- 로컬 호스트에서 새 클러스터에 대한 모니터 및 관리자 데몬을 만듭니다.
- Ceph 클러스터에 대한 새 SSH 키를 생성하여 루트 사용자의 /root/.ssh/authorized_keys 파일에 추가합니다.
- 공개 키의 사본을 /etc/ceph/ceph.pub에 작성합니다.
- 최소한의 구성 파일을 /etc/ceph/ceph.conf에 작성합니다. 이 파일은 새 클러스터와 통신하는 데 필요합니다.
- client.admin 관리자(권한이 있는!) 비밀 키의 사본을 /etc/ceph/ceph.client.admin.keyring에 작성합니다.
- 부트스트랩 호스트에 _admin 레이블을 추가합니다. 기본적으로 이 레이블이 있는 모든 호스트는 /etc/ceph/ceph.conf 및 /etc/ceph/ceph.client.admin.keyring의 사본을 얻게 됩니다.
podman ps 명령을 이용하면 다음과 같은 컨테이너 목록을 볼 수 있습니다. 설치환경 준비할 때 docker로 했으면 docker 명령 이용하면 됩니다.
( 특별한 이유는 없고, podman 사용기회가 종종 있다보니 podman을 쓴 것 뿐입니다 )
[root@OpenHCI-01 ~]# podman ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES de468e10d5a2 quay.io/ceph/ceph:v18 -n mon.OpenHCI-01... 11 minutes ago Up 11 minutes ceph-17593d3e-4e4d-11ef-90ca-005056b09910-mon-OpenHCI-01 d17ca38c9a32 quay.io/ceph/ceph:v18 -n mgr.OpenHCI-01... 11 minutes ago Up 11 minutes ceph-17593d3e-4e4d-11ef-90ca-005056b09910-mgr-OpenHCI-01-pfaufc 77ff3f2617f4 quay.io/ceph/ceph@sha256:6ac7f923aa1d23b43248ce0ddec7e1388855ee3d00813b52c3172b0b23b37906 -n client.ceph-ex... 10 minutes ago Up 10 minutes ceph-17593d3e-4e4d-11ef-90ca-005056b09910-ceph-exporter-OpenHCI-01 17b3d100460c quay.io/ceph/ceph@sha256:6ac7f923aa1d23b43248ce0ddec7e1388855ee3d00813b52c3172b0b23b37906 -n client.crash.O... 10 minutes ago Up 10 minutes ceph-17593d3e-4e4d-11ef-90ca-005056b09910-crash-OpenHCI-01 b8a7c66d4212 quay.io/prometheus/node-exporter:v1.5.0 --no-collector.ti... 10 minutes ago Up 10 minutes ceph-17593d3e-4e4d-11ef-90ca-005056b09910-node-exporter-OpenHCI-01 f78abd1155b5 quay.io/prometheus/prometheus:v2.43.0 --config.file=/et... 9 minutes ago Up 9 minutes ceph-17593d3e-4e4d-11ef-90ca-005056b09910-prometheus-OpenHCI-01 5840bee1ba84 quay.io/prometheus/alertmanager:v0.25.0 --cluster.listen-... 9 minutes ago Up 9 minutes ceph-17593d3e-4e4d-11ef-90ca-005056b09910-alertmanager-OpenHCI-01 99370bb4c910 quay.io/ceph/ceph-grafana:9.4.7 /bin/bash 9 minutes ago Up 9 minutes ceph-17593d3e-4e4d-11ef-90ca-005056b09910-grafana-OpenHCI-01
이들 컨테이너를 위한 systemd unit 파일 또한 생성됐습니다.
[root@OpenHCI-01 ~]# systemctl list-units 'ceph*' UNIT LOAD ACTIVE SUB DESCRIPTION > ceph-17593d3e-4e4d-11ef-90ca-005056b09910@alertmanager.OpenHCI-01.service loaded active running Ceph alertmanager.OpenHCI-01 fo> ceph-17593d3e-4e4d-11ef-90ca-005056b09910@ceph-exporter.OpenHCI-01.service loaded active running Ceph ceph-exporter.OpenHCI-01 f> ceph-17593d3e-4e4d-11ef-90ca-005056b09910@crash.OpenHCI-01.service loaded active running Ceph crash.OpenHCI-01 for 17593> ceph-17593d3e-4e4d-11ef-90ca-005056b09910@grafana.OpenHCI-01.service loaded active running Ceph grafana.OpenHCI-01 for 175> ceph-17593d3e-4e4d-11ef-90ca-005056b09910@mgr.OpenHCI-01.pfaufc.service loaded active running Ceph mgr.OpenHCI-01.pfaufc for > ceph-17593d3e-4e4d-11ef-90ca-005056b09910@mon.OpenHCI-01.service loaded active running Ceph mon.OpenHCI-01 for 17593d3> ceph-17593d3e-4e4d-11ef-90ca-005056b09910@node-exporter.OpenHCI-01.service loaded active running Ceph node-exporter.OpenHCI-01 f> ceph-17593d3e-4e4d-11ef-90ca-005056b09910@prometheus.OpenHCI-01.service loaded active running Ceph prometheus.OpenHCI-01 for > ceph-17593d3e-4e4d-11ef-90ca-005056b09910.target loaded active active Ceph cluster 17593d3e-4e4d-11ef> ceph.target loaded active active All Ceph clusters and services LOAD = Reflects whether the unit definition was properly loaded. ACTIVE = The high-level unit activation state, i.e. generalization of SUB. SUB = The low-level unit activation state, values depend on unit type. 10 loaded units listed. Pass --all to see loaded but inactive units, too. To show all installed unit files use 'systemctl list-unit-files'. [root@OpenHCI-01 ~]#
Ceph CLI 명령
앞서 부트스트랩 과정에서 출력된 내용 중에 cephadm 명령이 있습니다. 이 명령을 이용하면 Ceph 컨테이너 CLI로 들어갑니다.
프롬프트 앞에 표시된 “ceph: “으로 현재 Ceph 컨테이너 안이라는 것을 알 수 있습니다.
[root@OpenHCI-01 ~]# sudo /sbin/cephadm shell --fsid 17593d3e-4e4d-11ef-90ca-005056b09910 -c /etc/ceph/ceph.conf -k /etc/ceph/ceph.client.admin.keyring Inferring config /var/lib/ceph/17593d3e-4e4d-11ef-90ca-005056b09910/mon.OpenHCI-01/config Using ceph image with id '2bc0b0f4375d' and tag 'v18' created on 2024-07-23 22:19:35 +0000 UTC quay.io/ceph/ceph@sha256:6ac7f923aa1d23b43248ce0ddec7e1388855ee3d00813b52c3172b0b23b37906 [ceph: root@OpenHCI-01 /]#
여기서 ceph -s 명령을 이용하면 현재 Ceph 클러스터의 상태 정보를 얻을 수 있습니다. 지금은 OSD도 없고, 노드도 추가 안해서 깡통 상태입니다 ^^
[ceph: root@OpenHCI-01 /]# ceph -s cluster: id: 3450919e-4d8f-11ef-9cf8-005056b001bd health: HEALTH_WARN OSD count 0 < osd_pool_default_size 3 services: mon: 1 daemons, quorum OpenHCI-01 (age 3m) mgr: OpenHCI-01.xtdjar(active, since 78s) osd: 0 osds: 0 up, 0 in data: pools: 0 pools, 0 pgs objects: 0 objects, 0 B usage: 0 B used, 0 B / 0 B avail pgs: [ceph: root@OpenHCI-01 /]#
Ctrl-D 키 또는 exit 명령으로 ceph CLI에서 빠져나옵니다.
[ceph: root@OpenHCI-01 /]# exit [root@OpenHCI-01 ~]#
cephadm shell 명령을 이용하면 쉘 환경으로 들어가지 않고도 ceph CLI 명령을 사용할 수 있습니다. 예를 들어 cephadm shell -- ceph -s
와 같이 사용하면, ceph CLI 명령을 바로 실행시킬 수 있습니다.
[root@OpenHCI-01 ~]# cephadm shell -- ceph -s Inferring fsid 17593d3e-4e4d-11ef-90ca-005056b09910 Inferring config /var/lib/ceph/17593d3e-4e4d-11ef-90ca-005056b09910/mon.OpenHCI-01/config Using ceph image with id '2bc0b0f4375d' and tag 'v18' created on 2024-07-23 22:19:35 +0000 UTC quay.io/ceph/ceph@sha256:6ac7f923aa1d23b43248ce0ddec7e1388855ee3d00813b52c3172b0b23b37906 cluster: id: 17593d3e-4e4d-11ef-90ca-005056b09910 health: HEALTH_WARN OSD count 0 < osd_pool_default_size 3 services: mon: 1 daemons, quorum OpenHCI-01 (age 38m) mgr: OpenHCI-01.pfaufc(active, since 36m) osd: 0 osds: 0 up, 0 in data: pools: 0 pools, 0 pgs objects: 0 objects, 0 B usage: 0 B used, 0 B / 0 B avail pgs: [root@OpenHCI-01 ~]#
아래와 같이 ceph-common 패키지를 설치해서 ceph 명령을 바로 사용할 수도 있습니다.
[root@OpenHCI-01 ~]# cephadm add-repo --release reef Writing repo to /etc/yum.repos.d/ceph.repo... Enabling EPEL... Completed adding repo. [root@OpenHCI-01 ~]# cephadm install ceph-common Installing packages ['ceph-common']... [root@OpenHCI-01 ~]# ceph -s cluster: id: 17593d3e-4e4d-11ef-90ca-005056b09910 health: HEALTH_WARN OSD count 0 < osd_pool_default_size 3 services: mon: 1 daemons, quorum OpenHCI-01 (age 39m) mgr: OpenHCI-01.pfaufc(active, since 37m) osd: 0 osds: 0 up, 0 in data: pools: 0 pools, 0 pgs objects: 0 objects, 0 B usage: 0 B used, 0 B / 0 B avail pgs: [root@OpenHCI-01 ~]#
Ceph 노드에 SSH 키 복사
부트스트랩 과정에서 생성된 SSH 키를 다른 노드들에 복사해줍니다.
이 랩은 3노드 구성이라 OpenHCI-02와 OpenHCI-03에 복사했습니다.
[root@OpenHCI-01 ~]# sudo ssh-copy-id -f -i /etc/ceph/ceph.pub root@OpenHCI-02 /bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/etc/ceph/ceph.pub" root@openhci-02's password: Number of key(s) added: 1 Now try logging into the machine, with: "ssh 'root@OpenHCI-02'" and check to make sure that only the key(s) you wanted were added. [root@OpenHCI-01 ~]# sudo ssh-copy-id -f -i /etc/ceph/ceph.pub root@OpenHCI-03 /bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/etc/ceph/ceph.pub" root@openhci-03's password: Number of key(s) added: 1 Now try logging into the machine, with: "ssh 'root@OpenHCI-03'" and check to make sure that only the key(s) you wanted were added. [root@OpenHCI-01 ~]#
Ceph CLI 환경으로 들어가기
클러스터에 노드를 추가하는 작업을 하기 위해서 Ceph CLI 환경으로 들어갑니다.
[root@OpenHCI-01 ~]# sudo /sbin/cephadm shell --fsid 17593d3e-4e4d-11ef-90ca-005056b09910 -c /etc/ceph/ceph.conf -k /etc/ceph/ceph.client.admin.keyring Inferring config /var/lib/ceph/17593d3e-4e4d-11ef-90ca-005056b09910/mon.OpenHCI-01/config Using ceph image with id '2bc0b0f4375d' and tag 'v18' created on 2024-07-23 22:19:35 +0000 UTC quay.io/ceph/ceph@sha256:6ac7f923aa1d23b43248ce0ddec7e1388855ee3d00813b52c3172b0b23b37906 [ceph: root@OpenHCI-01 /]#
Ceph 클러스터에 노드 추가
현재 구성되어 있는 노드 목록을 확인합니다. 첫번째 노드인 OpenHCI-01만 표시됩니다.
LABELS에 보면 첫번째 노드는 Admin 노드를 의미하는 _admin
레이블이 붙어 있는 것을 확인할 수 있습니다.
[ceph: root@OpenHCI-01 /]# ceph orch host ls HOST ADDR LABELS STATUS OpenHCI-01 172.16.2.11 _admin 1 hosts in cluster [ceph: root@OpenHCI-01 /]#
ceph orch host add 명령으로 2번째, 3번째 노드를 추가합니다. 제 경우 한노드 추가에 약 5초 정도 걸린 것 같습니다.
[ceph: root@OpenHCI-01 /]# ceph orch host add OpenHCI-02 Added host 'OpenHCI-02' with addr '172.16.1.12' [ceph: root@OpenHCI-01 /]# ceph orch host add OpenHCI-03 Added host 'OpenHCI-03' with addr '172.16.1.13' [ceph: root@OpenHCI-01 /]#
노드가 잘 추가되었는지 확인합니다.
[ceph: root@OpenHCI-01 /]# ceph orch host ls HOST ADDR LABELS STATUS OpenHCI-01 172.16.2.11 _admin OpenHCI-02 172.16.1.12 OpenHCI-03 172.16.1.13 3 hosts in cluster [ceph: root@OpenHCI-01 /]#
스토리지 디바이스에서 Ceph OSD 생성
노드들에 연결되어 있는 스토리지 디바이스 목록을 확인합니다. 노드 추가를 하고 바로 확인하면 목록에 안보일 수도 있습니다. 제 경우 약 1분 정도 지나고 다 올라온 것 같습니다.
[ceph: root@OpenHCI-01 /]# ceph orch device ls HOST PATH TYPE DEVICE ID SIZE AVAILABLE REFRESHED REJECT REASONS OpenHCI-01 /dev/sda ssd 200G Yes 8m ago OpenHCI-01 /dev/sdc ssd 200G Yes 8m ago OpenHCI-02 /dev/sdb ssd 200G Yes 62s ago OpenHCI-02 /dev/sdc ssd 200G Yes 62s ago OpenHCI-03 /dev/sdb ssd 200G Yes 4s ago OpenHCI-03 /dev/sdc ssd 200G Yes 4s ago
ceph orch apply osd
명령을 이용해서 모든 디바이스(–all-available-devices)를 raw 방식(–method)으로 OSD로 추가합니다.--all-available-devices
를 설정해 놓으면 이후에 스토리지 디바이스를 추가했을 때도 자동으로 추가 합니다.
[ceph: root@OpenHCI-01 /]# ceph orch apply osd --all-available-devices --method raw Scheduled osd.all-available-devices update...
자동으로 추가되는 것을 방지하려면 --unmanaged
를 선언해주면 됩니다.
[ceph: root@OpenHCI-01 /]# ceph orch apply osd --all-available-devices --unmanaged=true Scheduled osd.all-available-devices update... [ceph: root@OpenHCI-01 /]#
ceph -s 명령을 이용해서 클러스터 상태를 조회해보면 osd가 잘 추가됐는지 확인할 수 있습니다. osd가 up 상태가 되기 위해서는 시간이 조금 필요할 수 있으니, 조금 여유있게 기다리면 됩니다.
제 실습환경의 경우는 20여초 걸린 것 같습니다.
[ceph: root@OpenHCI-01 /]# ceph -s cluster: id: 17593d3e-4e4d-11ef-90ca-005056b09910 health: HEALTH_OK services: mon: 3 daemons, quorum OpenHCI-01,OpenHCI-02,OpenHCI-03 (age 100s) mgr: OpenHCI-01.pfaufc(active, since 42m), standbys: OpenHCI-02.gyhmdu osd: 6 osds: 0 up, 6 in (since 4s) data: pools: 0 pools, 0 pgs objects: 0 objects, 0 B usage: 0 B used, 0 B / 0 B avail pgs: [ceph: root@OpenHCI-01 /]# ceph -s cluster: id: 17593d3e-4e4d-11ef-90ca-005056b09910 health: HEALTH_OK services: mon: 3 daemons, quorum OpenHCI-01,OpenHCI-02,OpenHCI-03 (age 2m) mgr: OpenHCI-01.pfaufc(active, since 43m), standbys: OpenHCI-02.gyhmdu osd: 6 osds: 6 up (since 8s), 6 in (since 31s) data: pools: 1 pools, 1 pgs objects: 2 objects, 449 KiB usage: 161 MiB used, 600 GiB / 600 GiB avail pgs: 1 active+clean io: client: 1.5 KiB/s rd, 44 KiB/s wr, 1 op/s rd, 2 op/s wr recovery: 75 KiB/s, 0 objects/s [ceph: root@OpenHCI-01 /]#
OSD는 ceph osd tree 명령어로 확인해볼 수 있습니다.
[ceph: root@OpenHCI-01 /]# ceph osd tree ID CLASS WEIGHT TYPE NAME STATUS REWEIGHT PRI-AFF -1 0.58612 root default -3 0.19537 host OpenHCI-01 2 ssd 0.09769 osd.2 up 1.00000 1.00000 3 ssd 0.09769 osd.3 up 1.00000 1.00000 -7 0.19537 host OpenHCI-02 0 ssd 0.09769 osd.0 up 1.00000 1.00000 5 ssd 0.09769 osd.5 up 1.00000 1.00000 -5 0.19537 host OpenHCI-03 1 ssd 0.09769 osd.1 up 1.00000 1.00000 4 ssd 0.09769 osd.4 up 1.00000 1.00000 [ceph: root@OpenHCI-01 /]#
각종 Ceph 서비스 프로세스들은 ceph orch ps 명령으로 확인해볼 수 있습니다.
[ceph: root@OpenHCI-01 /]# ceph orch ps NAME HOST PORTS STATUS REFRESHED AGE MEM USE MEM LIM VERSION IMAGE ID CONTAINER ID alertmanager.OpenHCI-01 OpenHCI-01 *:9093,9094 running (71m) 6m ago 113m 24.0M - 0.25.0 c8568f914cd2 c02e343d25f5 ceph-exporter.OpenHCI-01 OpenHCI-01 running (113m) 6m ago 113m 10.1M - 18.2.4 2bc0b0f4375d 77ff3f2617f4 ceph-exporter.OpenHCI-02 OpenHCI-02 running (72m) 5m ago 72m 9873k - 18.2.4 2bc0b0f4375d 0447555317cd ceph-exporter.OpenHCI-03 OpenHCI-03 running (71m) 5m ago 71m 9935k - 18.2.4 2bc0b0f4375d 49bed6319371 crash.OpenHCI-01 OpenHCI-01 running (113m) 6m ago 113m 6903k - 18.2.4 2bc0b0f4375d 17b3d100460c crash.OpenHCI-02 OpenHCI-02 running (72m) 5m ago 72m 6907k - 18.2.4 2bc0b0f4375d 5b147a9deb13 crash.OpenHCI-03 OpenHCI-03 running (71m) 5m ago 71m 6903k - 18.2.4 2bc0b0f4375d 03adc261023a grafana.OpenHCI-01 OpenHCI-01 *:3000 running (112m) 6m ago 112m 87.5M - 9.4.7 954c08fa6188 99370bb4c910 mgr.OpenHCI-01.pfaufc OpenHCI-01 *:9283,8765,8443 running (114m) 6m ago 114m 501M - 18.2.4 2bc0b0f4375d d17ca38c9a32 mgr.OpenHCI-02.gyhmdu OpenHCI-02 *:8443,9283,8765 running (72m) 5m ago 72m 447M - 18.2.4 2bc0b0f4375d ab13c7737bc4 mon.OpenHCI-01 OpenHCI-01 running (114m) 6m ago 114m 72.3M 2048M 18.2.4 2bc0b0f4375d de468e10d5a2 mon.OpenHCI-02 OpenHCI-02 running (72m) 5m ago 72m 55.6M 2048M 18.2.4 2bc0b0f4375d 6107c014049e mon.OpenHCI-03 OpenHCI-03 running (71m) 5m ago 71m 54.2M 2048M 18.2.4 2bc0b0f4375d 289eb72e4ff8 node-exporter.OpenHCI-01 OpenHCI-01 *:9100 running (113m) 6m ago 113m 16.2M - 1.5.0 0da6a335fe13 b8a7c66d4212 node-exporter.OpenHCI-02 OpenHCI-02 *:9100 running (72m) 5m ago 72m 16.2M - 1.5.0 0da6a335fe13 9644e9b77ded node-exporter.OpenHCI-03 OpenHCI-03 *:9100 running (71m) 5m ago 71m 16.0M - 1.5.0 0da6a335fe13 bea001d1c734 osd.0 OpenHCI-02 running (69m) 5m ago 69m 51.2M 7495M 18.2.4 2bc0b0f4375d 5e5e767fbd95 osd.1 OpenHCI-03 running (69m) 5m ago 69m 50.3M 9543M 18.2.4 2bc0b0f4375d c0584124eb29 osd.2 OpenHCI-01 running (69m) 6m ago 69m 51.7M 5959M 18.2.4 2bc0b0f4375d 1959ec2d22f0 osd.3 OpenHCI-01 running (69m) 6m ago 69m 49.6M 5959M 18.2.4 2bc0b0f4375d 48155bb826ce osd.4 OpenHCI-03 running (69m) 5m ago 69m 50.7M 9543M 18.2.4 2bc0b0f4375d 68b7b2016d45 osd.5 OpenHCI-02 running (69m) 5m ago 69m 47.0M 7495M 18.2.4 2bc0b0f4375d 61177100fc73 prometheus.OpenHCI-01 OpenHCI-01 *:9095 running (71m) 6m ago 112m 76.8M - 2.43.0 a07b618ecd1d e0f321f131cf [ceph: root@OpenHCI-01 /]#
2번째 노드에가서 podman ps 명령어로 컨테이너를 조회해 봤습니다.
[root@OpenHCI-02 ~]# podman ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 0447555317cd quay.io/ceph/ceph@sha256:6ac7f923aa1d23b43248ce0ddec7e1388855ee3d00813b52c3172b0b23b37906 -n client.ceph-ex... 2 hours ago Up 2 hours ceph-17593d3e-4e4d-11ef-90ca-005056b09910-ceph-exporter-OpenHCI-02 5b147a9deb13 quay.io/ceph/ceph@sha256:6ac7f923aa1d23b43248ce0ddec7e1388855ee3d00813b52c3172b0b23b37906 -n client.crash.O... 2 hours ago Up 2 hours ceph-17593d3e-4e4d-11ef-90ca-005056b09910-crash-OpenHCI-02 9644e9b77ded quay.io/prometheus/node-exporter:v1.5.0 --no-collector.ti... 2 hours ago Up 2 hours ceph-17593d3e-4e4d-11ef-90ca-005056b09910-node-exporter-OpenHCI-02 ab13c7737bc4 quay.io/ceph/ceph@sha256:6ac7f923aa1d23b43248ce0ddec7e1388855ee3d00813b52c3172b0b23b37906 -n mgr.OpenHCI-02... 2 hours ago Up 2 hours ceph-17593d3e-4e4d-11ef-90ca-005056b09910-mgr-OpenHCI-02-gyhmdu 6107c014049e quay.io/ceph/ceph@sha256:6ac7f923aa1d23b43248ce0ddec7e1388855ee3d00813b52c3172b0b23b37906 -n mon.OpenHCI-02... 2 hours ago Up 2 hours ceph-17593d3e-4e4d-11ef-90ca-005056b09910-mon-OpenHCI-02 61177100fc73 quay.io/ceph/ceph@sha256:6ac7f923aa1d23b43248ce0ddec7e1388855ee3d00813b52c3172b0b23b37906 -n osd.5 -f --set... 2 hours ago Up 2 hours ceph-17593d3e-4e4d-11ef-90ca-005056b09910-osd-5 5e5e767fbd95 quay.io/ceph/ceph@sha256:6ac7f923aa1d23b43248ce0ddec7e1388855ee3d00813b52c3172b0b23b37906 -n osd.0 -f --set... 2 hours ago Up 2 hours ceph-17593d3e-4e4d-11ef-90ca-005056b09910-osd-0 [root@OpenHCI-02 ~]#
웹 UI와 최초 접속
처음 클러스터를 생성하는 부트스트랩 과정에서 아래와 같이 웹 UI에 접속하기 위한 정보를 알려줍니다.
- URL : 접속 주소
- User : 관리자 id
- Password: 최초 접속시에만 사용하는 임시 암호
URL: https://OpenHCI-01.098.co.kr:8443/ User: admin Password: 378dvus5ub
웹 UI는 Ceph Manager(ceph-mgr)가 제공합니다. ceph -s
로 상태 정보를 봤을 때 mgr에 표시되는 부분이 ceph-mgr 구성 정보입니다. 제 경우 3 노드로 구성을 해서, 첫번째와 두번째 노드에 mgr이 구성되어 있는 것을 볼 수 있습니다.
Ceph Manager는 1개가 서비스를 제공하는 active 상태, 나머지는 동작 중이던 메니저가 장애 났을 경우에만 동작하는 standbys 상태로 동작합니다. 필요하다면 매니저의 standby 노드를 추가할 수도 있습니다.
mgr: OpenHCI-01.pfaufc(active, since 42m), standbys: OpenHCI-02.gyhmdu
웹 브라우저를 열고 접속하면 사설인증서가 설치된 상태이기 때문에, 보안 경고가 표시됩니다. “고급” 단추를 누릅니다.
“안전하지 않음” 링크를 누릅니다.
Ceph Dashboard 로그인 화면이 표시됩니다. Username에 admin, 암호에 부트스트랩 과정에서 만들어진 임시 암호를 입력하고, “Login in” 단추를 누릅니다.
참고: Username은 영어로, 암호는 한글로 표시됩니다. 한글화가 덜 되었나 봅니다. documentation은 3개나 표시됩니다. 링크는 각각 다릅니다.
암호 설정 화면이 나옵니다. Old password에 임시 암호를 다시 입력하고, New password와 Confirm new password에 새로 지정할 암호를 입력합니다. 암호가 일치하면 “Change Password” 활성화됩니다. “Change Password”를 누릅니다.
다시 처음 접속했을 때 화면으로 돌아옵니다. Username에 admin, 암호에 앞에서 새로 지정한 암호를 입력하고, “Login in” 단추를 누릅니다.
(뭔가 좀 썰렁하지만) 드디어 Ceph Dashboard 페이지가 열렸습니다.
화면에 제일 위에 Telemetry 모듈 관련된 내용이 표시되어 있습니다. 실습 환경은 굳이 안해도 된다 생각합니다. “X” 를 클릭해서 닫아줍니다. 필요하면 나중에 활성화 시킬 수 있습니다.
한글로 “현황판”이라 써진 메뉴를 누릅니다.
오~ 이제 뭔가 좀 있어 보이는 대시보드(현황판) 페이지가 표시됩니다.