Proxmox를 운영하면서 로컬 LVM을 사용하다 보면, 저장소의 용량 제한과 고가용성을 확보하는 데 어려움을 겪게 됩니다. 이를 해결하기 위해 Ceph를 도입하고, VM(가상 머신)과 CT(컨테이너)를 마이그레이션 해주었습니다.
ceph는 오픈소스 분산 스토리지 시스템입니다. ceph를 구성하고 나면 다른 노드로 VM이나 CT를 마이그레이션할 때 다운타임 없이 진행할 수 있게 됩니다. 분산 구성이므로 장애 대응에도 유연하게 대처가 가능해 집니다.
처음부터 ceph를 세팅해두고 환경을 만들어 나갔으면 신경쓸 것이 별로 없었을텐데 기존의 노드 3대가 모두 local lvm으로 구성된 상태라 ceph로 마이그레이션하면서 단계적으로 작업해야 하는 불편함이 있었습니다.
Ceph 설치
저장소에서 필요한 패키지 설치
노드에 모두 설치
ceph osd 생성
노드 1번부터 Local LVM 삭제 후 Ceph OSD 생성
(노드 1번의 VM 들은 모두 다른 노드로 마이그레이션 후 진행)
# proxmox에서 기본 생성하는 lvm data 삭제
lvremove /dev/pve/data
# ceph keying
ceph auth get client.bootstrap-osd -o /var/lib/ceph/bootstrap-osd/ceph.keyring
# ceph osd 생성
lvcreate -n ceph-osd -l 100%FREE pve
ceph-volume lvm create --data /dev/pve/ceph-osd
최종적으로 각각 모든 노드에 osd를 생성
ceph pool 생성
데이터 센터 스토리지에 자동으로 추가 된 것 확인
기존 local-lvm에 구성한 vm을 ceph pool로 마이그레이션
ceph를 구성하는 과정에서 각 노드의 vm을 ceph 스토리지로 어느 시점엔 마이그레이션 할 텐데요.
이때 shutdown이 잠시 동반되는데, 중단 후 ceph-pool로 이동시키면서 볼륨 재할당이 이뤄집니다. 잘 동작하는 것을 확인 한 후 기존 VM을 삭제하는 것이 좋습니다.
리밸런싱 작업 중엔 왼쪽아래에 진도율이 표시 됩니다.
완료되면 잠잠해 집니다.
이제 노드 1대가 망가져도 다른 노드에서 바로 서비스가 가능해졌습니다.