이수의 삽질 기록
article thumbnail

https://ceph.io/en/logos/

배경

N 교수님 연구실 말고, Y 교수님 연구실에서는 Ceph를 가지고 뭔가를 한다. 아직 Ceph에 대해 많이 알지는 못한다. 하지만 그냥 이런게 있다 정도는 안다. 이번에 KlosedStack을 구성하며, 새로 도입해야하는 요소는 바로 Ceph이다.

https://blog.isu.kim/16

 

[KlosedStack #3] Vagrant + OVS

시리즈 - [KlosedStack #1] Intro: https://blog.isu.kim/14 - [KlosedStack #2] Vagrant + Libvirt: https://blog.isu.kim/15 배경 지난 시간에는, KlosedStack에서 사용할 VM을 Vagrant로 Libvirt를 사용해 생성했다. 이제는 각 VM끼리 연

blog.isu.kim

여기 마지막 문단에 보면, 다음에는 Ceph 블록 스토리지를 사용해서 VM을 저장하려고 한다는 야망찬 계획을 가지고 있다. 따라서, 이전의 환경에서 Ceph 클러스터를 간단하게 Proxmox 환경에서 구성해보려고 한다. 이쯤 되면 모두 알겠지만, 나는 VM, 가상화 환경을 상당히 좋아한다.

 

아무튼 진행해본다.

환경

이번에는 평소에 쓰던 ESXi가 아닌, Proxmox를 사용할 예정이다. ESXi를 못쓰는 이유가, 지금 램 할당량이 거의 다 차서, Ceph를 여기서 돌렸다가는 KlosedStack의 노드들이 뻗을 것 같다는 생각에, 다른 분리 환경을 생각했다.

보다싶이, 언제나 램과 저장공간이 문제다. 어느 평행 세계에서는, 아마 내가 램 512기가로 풀뱅을 해서 쓰는 세상이 있을 것이다. 없을 수도 있고. 그래서 Proxmox에다가 환경을 만들었다.

개인적으로 ESXi를 Proxmox보다 더 선호하는데, Proxmox는 오픈소스인게 좋지만 qemu 기반이라 VMWare의 자본이 묻은 맛이 없어서 그런 것 같다. 특히 스냅샷이 솔직히 ESXi처럼 믿음직 하지는 못하다는 이상한 편견때문에 더 그런 것 같다.

환경은 다음과 같다

  • ceph-master: 192.168.100.124 (32GB + 64GB) / 8Core + 8GB
  • ceph-osd-1: 192.168.100.133 (32GB + 64GB) / 8Core + 8GB
  • ceph-osd-2: 192.168.100.198 (32GB + 64GB) / 8Core + 8GB
  • ceph-osd-3: 192.168.100.129 (32GB + 64GB) / 8Core + 8GB

여기서 주의해야할 사항은, Ceph의 경우 OSD를 돌리는 노드는 반드시 반드시 반드시! 마운트를 하나 할 수 있어야 한다. 즉 만약 물리적인 서버를 돌린다면, 파티션을 하건 뭘 하건 해서 루트 파티션 말고 다른 파티션을 하나 놓아야한다. Proxmox 환경에서는 그냥 간단하게 가상 디스크를 추가해줬다.

설치

Ceph 설치는 엄청 간단하다. O***S****도 간단한 설치를 할 수 있는 세상이 되면 더이상 바라는게 없을지도 모를 것 같다.

sudo apt-get install cephadm
sudo apt-get install ceph-common

Ceph 관련 패키지를 설치해주면 끝이다. 이제 더이상 설정할 것 없다.

Bootstrap

이건 ceph-master에서 진행한다.

sudo cephadm bootstrap --mon-ip 192.168.100.124

마치 Kubernetes로 치면 kubeadm init과 같은 느낌이라고 생각하면 되지 않을까...?

SSH 설정

이건 모든 ceph-osd에서 진행한다.

Ceph의 경우, SSH를 사용하는 것 같아보인다. 근데 왜인지는 정말 모르겠는데, root 계정으로 SSH를 한다. 따라서, 모든 Ceph OSD에서는 root 로그인을 해주고, root 비밀번호를 변경해준다.

이를 위해서는 /etc/ssh/sshd_config 파일에

PermitRootLogin yes

를 넣어준다. 그냥 간단하게 vim /etc/ssh/sshd_config$ 그리고 o를 해서 복붙하면 편하다.

sudo systemctl restart sshd

이후 root 비밀번호를 변경해주자

sudo su
passwd

이건 ceph-master에서 진행한다.

이제 OSD 머신에 /etc/ceph/ceph.pub를 뿌려줄 차례이다.

ssh-copy-id -f -i /etc/ceph/ceph.pub root@192.168.100.133
ssh-copy-id -f -i /etc/ceph/ceph.pub root@192.168.100.129
ssh-copy-id -f -i /etc/ceph/ceph.pub root@192.168.100.198

이렇게 모든 OSD 호스트에 ceph-master의 pub 키를 넣어주면 된다.

Ceph OSD 추가

이건 ceph-master 에서 진행한다.

이제 클러스터에 호스트를 추가해준다. 솔직히 "클러스터" 라는 용어가 맞는지 아닌지도 모르겠으나 아무튼 나는 클러스터라고 부르려고 한다.

sudo ceph orch host add ceph-osd-1 192.168.100.133
sudo ceph orch host add ceph-osd-2 192.168.100.198
sudo ceph orch host add ceph-osd-3 192.168.100.129

이후 정상적으로 호스트들이 추가되었는지 확인하자.

$ sudo ceph orch host ls
HOST         ADDR             LABELS  STATUS
ceph-master  192.168.100.124  _admin
ceph-osd-1   192.168.100.133
ceph-osd-2   192.168.100.198
ceph-osd-3   192.168.100.129
4 hosts in cluster

3개의 osd를 위한 호스트와 1개의 master가 잘 들어왔음을 확인할 수 있다. 이 상황에서 클러스터 내부의 장치들을 확인하면 ceph-master/dev/sdb/를 제외해서는 아무 장치가 없다고 나올 것이다.

$ sudo ceph orch device ls
HOST         PATH      TYPE  DEVICE ID                   SIZE  AVAILABLE  REFRESHED  REJECT REASONS
ceph-master  /dev/sdb  hdd   QEMU_HARDDISK_drive-scsi1  68.7G  Yes        2m ago

이제 클러스터에 정말로 OSD를 적용해주면, 장치가 뜰 것이다.

sudo ceph orch apply osd --all-available-devices

이 명령어는 시간이 조금 걸리니, 잠시 웹툰 하나 보고 오면 될 것이다. 대학원 탈출일지를 보는 것을 추천한다!

$ sudo ceph orch apply osd --all-available-devices
HOST         PATH      TYPE  DEVICE ID                   SIZE  AVAILABLE  REFRESHED  REJECT REASONS
ceph-master  /dev/sdb  hdd   QEMU_HARDDISK_drive-scsi1  68.7G  Yes        3m ago
ceph-osd-1   /dev/sdb  hdd   QEMU_HARDDISK_drive-scsi1  68.7G  Yes        64s ago
ceph-osd-2   /dev/sdb  hdd   QEMU_HARDDISK_drive-scsi1  68.7G  Yes        26s ago
ceph-osd-3   /dev/sdb  hdd   QEMU_HARDDISK_drive-scsi1  68.7G  Yes        28s ago

탈출일지를 보고 나면, 아마 잘 장치들이 들어와있을 것이다.

다음 이야기

이제 Ceph OSD 구성이 완료되었다. 다음으로는 pool을 구성, volume을 구성 후 block storage를 사용하는 내용을 담아보려고 한다.

'Knowledge > Ceph' 카테고리의 다른 글

[Ceph] Vstart Cluster + Jager  (0) 2023.07.09
profile

이수의 삽질 기록

@IsuKim

두분의 주인님 밑에서 네트워크, 클라우드, 서버 삽질을 하는 학부생입니다