cephadm으로 Ceph 클러스터 구성

Ceph와 OpenStack을 함께 연습할 수 있는 HCI Lab을 만들고 있습니다. 그 첫 단계로 그림과 같은 형태의 환경에 Ceph를 설치해보고자 합니다.

Intro to Ceph는 읽고 시작하기

Ceph 관련 문서들을 보다보면, Ceph만의 기술 용어들이 등장합니다. 시작하기 전에 Intro to Ceph 설명서는 보는게 좋습니다.

기본 용어는 제가 Glossary를 기계번역해 놓았습니다.

cephadm으로 설치

Ceph 클러스터를 구성하는 방법은 크게 보면

  1. cephadm을 이용하는 방법: https://docs.ceph.com/en/latest/install/
  2. ceph-ansible을 이용하는 방법: https://docs.ceph.com/projects/ceph-ansible/en/latest/
  3. 수동으로 설치하는 방법: https://docs.ceph.com/en/latest/install/index_manual/#install-manual
  4. 쿠버네티스 환경의 경우 Rook를 이용하는 방법: https://rook.io/

등이 있는 것 같습니다.

참고: 언급된 것 이외에도 Salt와 cephadm, Juju, Puppet 등을 이용한 방법등도 있습니다.

저는 그 중에 cephadm을 이용한 방법으로 구성해보고자 합니다.

cephadm과 ceph-ansible을 이용한 설치 방법 간의 차이점은 다음 설명서를 참고하세요.

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 접속을 가능하도록 해줍니다.

Shell

sshd_config 파일을 수정한 다음 적용되도록, sshd 를 재시작해줍니다.

Shell

클러스터 구성하는 모든 노드에서 해주어야 합니다.

설치할 버전 확인

다음 URL에서 Ceph의 릴리즈 정보를 확인하고 설치할 버전을 확인합니다.

현재 기준으로 새로 클러스터를 구성한다면 Reef 또는 Quincy 정도가 대상일겁니다. 좀 더 많이 굴러본 버전을 선호하면 Quincy, 새버전을 선호하면 Reef가 될 것 같습니다.
제 경우는 새로 배우는 입장이라 최신 버전인 Reef 18.2.4로 가고자 합니다.

cephadm 유틸리티 설치

앞에서 확인한 버전을 환경 변수 CEPH_RELEASE에 지정해 줍니다.

Shell

cephadm 실행 파일을 다운로드 받습니다.

Shell

다운로드 받은 cephadm 실행 파일에 실행 권한을 줍니다.

Shell

cephadm 명령으로 reef 릴리즈 저장소를 추가해 줍니다.

Shell

cephadm 실행 파일을 설치합니다.

Shell

cephadm이 설치된 경로를 확인합니다.

Shell

Ceph Admin 노드에 Ceph Cluster Monitor 초기화

이제 Admin 노드(첫번째 노드)에 ceph-mon을 초기화해 주어야 합니다. 이 때 어떤 네트워크를 사용할지 결정해야 합니다. 자세한 내용은 다음 설명서를 참고하시면 됩니다.

설명서에 있는 것 처럼 Ceph Mon은 Public Network에 연결되어 있습니다. --mon-ip에 첫번째 노드의 Public Network 주소를 지정해서 실행하면 됩니다.
제 환경은 cluster 네트워크를 분리해서 사용할 것이라 –cluster-network 옵션도 지정했습니다.

Shell

제 경우 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을 쓴 것 뿐입니다 )

Shell

이들 컨테이너를 위한 systemd unit 파일 또한 생성됐습니다.

Shell

Ceph CLI 명령

앞서 부트스트랩 과정에서 출력된 내용 중에 cephadm 명령이 있습니다. 이 명령을 이용하면 Ceph 컨테이너 CLI로 들어갑니다.
프롬프트 앞에 표시된 “ceph: “으로 현재 Ceph 컨테이너 안이라는 것을 알 수 있습니다.

Shell

여기서 ceph -s 명령을 이용하면 현재 Ceph 클러스터의 상태 정보를 얻을 수 있습니다. 지금은 OSD도 없고, 노드도 추가 안해서 깡통 상태입니다 ^^

Shell

Ctrl-D 키 또는 exit 명령으로 ceph CLI에서 빠져나옵니다.

Shell

cephadm shell 명령을 이용하면 쉘 환경으로 들어가지 않고도 ceph CLI 명령을 사용할 수 있습니다. 예를 들어 cephadm shell -- ceph -s 와 같이 사용하면, ceph CLI 명령을 바로 실행시킬 수 있습니다.

Shell

아래와 같이 ceph-common 패키지를 설치해서 ceph 명령을 바로 사용할 수도 있습니다.

Shell

Ceph 노드에 SSH 키 복사

부트스트랩 과정에서 생성된 SSH 키를 다른 노드들에 복사해줍니다.
이 랩은 3노드 구성이라 OpenHCI-02와 OpenHCI-03에 복사했습니다.

Shell

Ceph CLI 환경으로 들어가기

클러스터에 노드를 추가하는 작업을 하기 위해서 Ceph CLI 환경으로 들어갑니다.

Shell

Ceph 클러스터에 노드 추가

현재 구성되어 있는 노드 목록을 확인합니다. 첫번째 노드인 OpenHCI-01만 표시됩니다.
LABELS에 보면 첫번째 노드는 Admin 노드를 의미하는 _admin 레이블이 붙어 있는 것을 확인할 수 있습니다.

Shell

ceph orch host add 명령으로 2번째, 3번째 노드를 추가합니다. 제 경우 한노드 추가에 약 5초 정도 걸린 것 같습니다.

Shell

노드가 잘 추가되었는지 확인합니다.

Shell

스토리지 디바이스에서 Ceph OSD 생성

노드들에 연결되어 있는 스토리지 디바이스 목록을 확인합니다. 노드 추가를 하고 바로 확인하면 목록에 안보일 수도 있습니다. 제 경우 약 1분 정도 지나고 다 올라온 것 같습니다.

Shell

ceph orch apply osd 명령을 이용해서 모든 디바이스(–all-available-devices)를 raw 방식(–method)으로 OSD로 추가합니다.
--all-available-devices를 설정해 놓으면 이후에 스토리지 디바이스를 추가했을 때도 자동으로 추가 합니다.

Shell

자동으로 추가되는 것을 방지하려면 --unmanaged를 선언해주면 됩니다.

Shell

ceph -s 명령을 이용해서 클러스터 상태를 조회해보면 osd가 잘 추가됐는지 확인할 수 있습니다. osd가 up 상태가 되기 위해서는 시간이 조금 필요할 수 있으니, 조금 여유있게 기다리면 됩니다.
제 실습환경의 경우는 20여초 걸린 것 같습니다.

Shell

OSD는 ceph osd tree 명령어로 확인해볼 수 있습니다.

Shell

각종 Ceph 서비스 프로세스들은 ceph orch ps 명령으로 확인해볼 수 있습니다.

Shell

2번째 노드에가서 podman ps 명령어로 컨테이너를 조회해 봤습니다.

Shell

웹 UI와 최초 접속

처음 클러스터를 생성하는 부트스트랩 과정에서 아래와 같이 웹 UI에 접속하기 위한 정보를 알려줍니다.

  • URL : 접속 주소
  • User : 관리자 id
  • Password: 최초 접속시에만 사용하는 임시 암호
Shell

웹 UI는 Ceph Manager(ceph-mgr)가 제공합니다. ceph -s로 상태 정보를 봤을 때 mgr에 표시되는 부분이 ceph-mgr 구성 정보입니다. 제 경우 3 노드로 구성을 해서, 첫번째와 두번째 노드에 mgr이 구성되어 있는 것을 볼 수 있습니다.
Ceph Manager는 1개가 서비스를 제공하는 active 상태, 나머지는 동작 중이던 메니저가 장애 났을 경우에만 동작하는 standbys 상태로 동작합니다. 필요하다면 매니저의 standby 노드를 추가할 수도 있습니다.

Shell

웹 브라우저를 열고 접속하면 사설인증서가 설치된 상태이기 때문에, 보안 경고가 표시됩니다. “고급” 단추를 누릅니다.

“안전하지 않음” 링크를 누릅니다.

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” 를 클릭해서 닫아줍니다. 필요하면 나중에 활성화 시킬 수 있습니다.
한글로 “현황판”이라 써진 메뉴를 누릅니다.

오~ 이제 뭔가 좀 있어 보이는 대시보드(현황판) 페이지가 표시됩니다.

참고 자료

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

You May Also Like