딜미의 잡다한 IT 이야기...

2025년 Ceph 구성 및 HA 테스트 과정 기록 #1 Cephadm 배포(Ubuntu 22.04) 본문

Storage/구성자료

2025년 Ceph 구성 및 HA 테스트 과정 기록 #1 Cephadm 배포(Ubuntu 22.04)

딜미 2025. 4. 8. 11:32

최근 Ceph 배포 방법은 Cephadm이라는 컨테이너 기반의 배포방식이 선호되고 있어 해당 방식의 Ceph 배포 및 구성을 진행해봄

 

물리서버로 구성하면 좋겠으나 현실적으로 물리서버 3개를 준비하는데 어려움이 있어 가상화 서버에 가상머신으로 생성하여 구성

 

아래와 같이 가상머신 생성

 

CPU * 4core

MEM 8GB

OS 50G

OSD 50G * 2EA 

NET Public 192.168.1.x/22

        Cluster 10.10.10.x/24

동일 스펙으로 3개의 노드 생성 각 노드명은 ceph-node1,ceph-node2,ceph-node3

 

1. OS 기본 설치에 Ceph 설정이 기본으로 설치되어 있어서 기존 구성 삭제 작업이 필요함(모든노드)

 

sudo apt remove --purge ceph ceph-common cephadm ceph-base -y
sudo apt autoremove -y
sudo apt autoclean

 

2. Ceph 유저 삭제(모든노드)

sudo userdel -r ceph

 

3. Ceph 관련 디렉토리 삭제(모든노드)

sudo rm -rf /var/lib/ceph /etc/ceph /var/log/ceph

 

4. 삭제 확인 메시지 출력(모든노드)

dpkg -l | grep ceph
getent passwd ceph

 

* 두 명령어 실행시 아무것도 출력되지 않아야함

 

5. Ceph 유저 생성(모든노드)

sudo useradd -m -s /bin/bash ceph
sudo passwd ceph
sudo usermod -aG sudo ceph

 

6. /etc/hosts 에 노드 정보 입력(모든노드)
sudo nano /etc/hosts

10.10.10.1 ceph-node1
10.10.10.2 ceph-node2
10.10.10.3 ceph-node3

 

7. 기존 Docker 삭제 후 재설치(모든노드)
sudo apt remove --purge -y docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc
sudo rm -rf /var/lib/docker
sudo rm -rf /etc/docker
sudo rm -rf /var/lib/containerd
sudo rm -rf /var/run/docker.sock
sudo apt autoremove -y
sudo apt autoclean
docker --version(출력 내용이 없어야함)

서버 재시작

 

Docker재설치 

sudo apt install -y ca-certificates curl gnupg
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
cat /etc/apt/sources.list.d/docker.list(APT 소스 리스트 확인)
sudo apt update(오류없이 실행되야함)
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
docker --version(버전이 출력되야함)

 

8. 시스템 업데이트 및 필수 패키지 설치(모든노드)
sudo apt update && sudo apt upgrade -y
sudo apt install -y chrony lvm2 curl software-properties-common

 

9.  SSH 설정 및 비밀번호 없는 로그인
sudo ssh-keygen -t rsa -b 4096
Enter로 끝까지 생성

 

sudo nano /etc/ssh/sshd_config
PermitRootLogin yes 로 변경(ssh root접속 가능)
systemctl restart sshd

 

노드에 ssh 정보 복사
sudo ssh-copy-id ceph-node1
        ssh-copy-id ceph-node2
        ssh-copy-id ceph-node3

 

10.  Ubuntu 22.04의 패키지 관리자(apt)를 통해 cephadm을 설치(모든노드)
sudo apt install -y cephadm

 

11. Ceph 클러스터 부트스트랩 (ceph-node1에서 실행)
sudo cephadm bootstrap --mon-ip 192.168.1.115 --cluster-network 10.10.10.0/24     --initial-dashboard-user admin --initial-dashboard-password admin

 

초기 노드 생성 시 만들어 놓은 cluster 대역 선언이 필요, ID admin, PW admin으로 배포 후 처음 접속해서 PW 변경

해당 명령어로 모니터링 사이트 선언 후 해당 모니터링 사이트 IP로 접속하면 Ceph 관리 페이지 접속됨

 

12. root 계정에서 ceph 경로 등록 필요(ceph-node1에서 실행)
echo "alias ceph='sudo cephadm shell -- ceph'" >> ~/.bashrc
source ~/.bashrc

 

경로 등록이 완료되면 ceph 명령어 실행이 가능

 

13. 네트워크 설정 확인(ceph-node1에서 실행)
ceph config get mon public_network
ceph config get osd cluster_network

 

ceph 명령어로 구성된 네트워크 정보 확인

 

출력결과

root@ceph-node1:~# ceph config get mon public_network
Inferring fsid 73dad38a-03c7-11f0-9446-dd20bf3b7dfa
Inferring config /var/lib/ceph/73dad38a-03c7-11f0-9446-dd20bf3b7dfa/mon.ceph-node1/config
Using ceph image with id '259b35566514' and tag 'v17' created on 2024-11-26 00:45:38 +0000 UTC
quay.io/ceph/ceph@sha256:a0f373aaaf5a5ca5c4379c09da24c771b8266a09dc9e2181f90eacf423d7326f
192.168.0.0/22
root@ceph-node1:~# ceph config get osd cluster_network
Inferring fsid 73dad38a-03c7-11f0-9446-dd20bf3b7dfa
Inferring config /var/lib/ceph/73dad38a-03c7-11f0-9446-dd20bf3b7dfa/mon.ceph-node1/config
Using ceph image with id '259b35566514' and tag 'v17' created on 2024-11-26 00:45:38 +0000 UTC
quay.io/ceph/ceph@sha256:a0f373aaaf5a5ca5c4379c09da24c771b8266a09dc9e2181f90eacf423d7326f
10.10.10.0/24

 

14. 노드 클러스터에 등록(ceph-node1에서 실행 및 root로 실행필요)
ceph orch host add ceph-node1
ceph orch host add ceph-node2
ceph orch host add ceph-node3

 

클러스터에 노드 등록 작업 진행 만약 노드 등록진행 중 권한 관련 에러 발생 시 아래의 방법 사용(root에서 등록)

ssh-copy-id -f -i /etc/ceph/ceph.pub <호스트 이름>

ssh-copy-id -f -i /etc/ceph/ceph.pub ceph-node1
ssh-copy-id -f -i /etc/ceph/ceph.pub ceph-node2
ssh-copy-id -f -i /etc/ceph/ceph.pub ceph-node3

 

15. 노드에 Mon, Mgr, Mds 역할 부여
Mon
ceph orch apply mon --placement="ceph-node1,ceph-node2,ceph-node3"
Mgr
ceph orch apply mgr --placement="ceph-node1,ceph-node2,ceph-node3"
Mds
ceph orch apply mds pool --placement="ceph-node1,ceph-node2,ceph-node3"

 

모든 노드에 동일 권한 부여 해당 권한은 실제 서비스 시 가감하여 사용

 

16. OSD로 사용할 디스크 등록

ceph orch daemon add osd ceph-node1:/dev/sdb
ceph orch daemon add osd ceph-node1:/dev/sdc
ceph orch daemon add osd ceph-node2:/dev/sdb
ceph orch daemon add osd ceph-node2:/dev/sdc
ceph orch daemon add osd ceph-node3:/dev/sdb
ceph orch daemon add osd ceph-node3:/dev/sdc

 

가상머신(노드)생성 시 노드당 50GB * 2EA 생성한 디스크를 OSD로 선언

실제 서비스 시에는 OS는 SSD OSD 영역은 NVMe사용이 권장

 

ceph -s 명령어 or 11번에서 선언한 모니터링 사이트에서 상태확인

 

root@ceph-node1:~# ceph -s
Inferring fsid bb0ab296-0473-11f0-bcfa-6ba4b7f85658
Inferring config /var/lib/ceph/bb0ab296-0473-11f0-bcfa-6ba4b7f85658/mon.ceph-node1/config
Using ceph image with id '259b35566514' and tag 'v17' created on 2024-11-26 00:45:38 +0000 UTC
quay.io/ceph/ceph@sha256:a0f373aaaf5a5ca5c4379c09da24c771b8266a09dc9e2181f90eacf423d7326f
  cluster:
    id:     bb0ab296-0473-11f0-bcfa-6ba4b7f85658
    health: HEALTH_OK

  services:
    mon: 3 daemons, quorum ceph-node1,ceph-node2,ceph-node3 (age 24h)
    mgr: ceph-node2.azucaz(active, since 4d), standbys: ceph-node3.lwspwv, ceph-node1.gcboqu
    osd: 6 osds: 6 up (since 4d), 6 in (since 6d)

  data:
    pools:   2 pools, 33 pgs
    objects: 687 objects, 2.6 GiB
    usage:   9.5 GiB used, 290 GiB / 300 GiB avail
    pgs:     33 active+clean

 

 

Comments