Ceph Storage 설치

BigData/Object Storage / /
728x90

 

1.    Architecture

1)      Ceph의 구성

A.     Ceph : Ceph Node 단위로 StorageClustering 해주는 Open Soure

B.      Ceph3가지의 방식의 Storage 방식을 제공한다.

I.       각 방식은 Object Storage, Block Device, File System 이다.


 

II.      RADOS

가)    데이터가 Clustering 되어 저장되는 Storage Daemon

나)    DataCrush하여 데이터를 저장

다)    Crush


 

Object ID Hashing을 통해 PG(Placement Group)에 할당되고 PG는 다시 PG IDCrush를 통해 OSD(Object Storage Daemon)에 할당된다.

라)    Pools : 데이터가 저장되는 논리적 파티션


 

(ㄱ)  클라이언트는 모니터가 가지고 있는 Cluster Map을 조회하고 저장할 객체를 Pool에 전달함

(ㄴ)  Pool의 크기나 Replica의 수, Crush Rule, PG(Placement Group) 수에 따라 저장방법을 결정

     Crush Rule : 데이터가 분산되는 정책, 기본적으로 Tree 형태에서 가중치를 설정하는 부분

     Placement Group (PG) : 클라이언트와 osd간 연결 역할

III.    RadosGW(Object Storage) : AWS S3 Openstack Swift와 호환되는 RESTFul API 서비스를 제공하는 라이브러리

IV.    RBD : SnapShot Clone 기능을 가지고 있는 Block Device를 제공

V.      CephFS (File System) : Posix를 제공하는 파일시스템, 마운트 가능.

C.      Ceph OSD, Monitor, Manager, MDS 4개의 데몬으로 이루어 진다.

I.       Osd : 데이터를 저장하고 Replication, Recovery, Rebalacing을 수행, 데이터 HA를 위해 3개 이상 구성을 권장

II.      Monitor : Cluster 상태 정보를 저장, HA를 위해 3개 이상 구성 권장

III.    Manager : Storage Uriliztion, Performance, System Load와 같은 Cluster 상태정보를 추적 Ha를 위해 2개이상 구성을 권장

IV.    MDS : File System 사용 시 메타 정보를 저장 (Ceph Block Devices Ceph Object Storage MDS를 사용하지 않음)

2)      Ceph 장점

A.     Scale-out 인프라에 잘 어울림

B.      IaaS PaaS 형태로 모두 사용가능

2.    설치

1)      사전 설치 패키지

apt update

apt upgrade

apt install -y --no-install-recommends vim net-tools iputils-ping gnupg dirmngr software-properties-common ntp python python-pip openssh-server udev lvm2

 

A.     ceph-deploy 버전이 2.1 부터 python3 사용 가능 (현재 stable 2.0.1)

B.      Python 버전 설정 방법

I.       Python 설치 위치 확인

which python

which python3

 

II.      Python 버전 관리 되고 있는지 여부 확인하고 버전 추가

update-alternatives --config python

update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1

 

 뒤의 번호는 기존에 사용되지 않았던 번호로 지정

다시 다른 버전을 선택하고 싶다면 

update-alternatives --config python 이후 지정번호 선택

 

III.    Python 버전에 맞는 pip도 설치

update-alternatives --config pip

update-alternatives --install /usr/bin/pip pip /usr/bin/pip 1

 

2)      Ceph 설치 (Ceph-deploy)

A.     해당 예제의 구조

Node Port Hostname Network Descriptions
OSD 6800:7300 ceph-ods1 192.168.137.80 ODS x 4ea
ceph-ods2 192.168.137.130 ODS x 4ea
ceph-ods3 192.168.137.46 ODS x 4ea
ceph-ods4 192.168.137.247 ODS x 4ea
MON1/MGR1 6789
6800:7300
ceph-mon1 192.168.137.6  
MON2/MGR2 ceph-mon2 192.168.137.208  
MON3/MDS 6800:7300 ceph-mon3 192.168.137.195  
ADMIN CLI   ceph-cli 192.168.137.167 Deploy

 

B.      Ceph Repo 등록 및 ceph-deploy 설치 (모든 노드)

wget -q -O- 'https://download.ceph.com/keys/release.asc' | apt-key add -

echo deb https://download.ceph.com/debian-octopus/ $(lsb_release -sc) main | sudo tee /etc/apt/sources.list.d/ceph.list 

apt update

apt install -y ceph-deploy

 

C.      각 노드가 네트워크가 유기적으로 연결되어 있어야 하기 때문에 key로 연결 (모든 노드)

가)    Host명 설정

sudo vi /etc/hostname

 

ceph-mon1

위와 같은 방식으로  host명을 지정한 

수정  /etc/hosts host명과 동일하지 않을  osd 설치  문제 발생

 

sudo reboot

 

나)    openssh-server 구동 여부 확인

sudo systemctl status ssh

 

다)    ssh 연결을 위한 hosts 파일 수정하여 host

sudo vi /etc/hosts

 

#아래 내역 추가

192.168.137.167 ceph-cli

192.168.137.6   ceph-mon1

192.168.137.208 ceph-mon2

192.168.137.195 ceph-mon3

192.168.137.80  ceph-osd1

192.168.137.130 ceph-osd2

192.168.137.46  ceph-osd3

192.168.137.247 ceph-ods4

 

라)    ceph에서 사용할 계정을 생성하고 비밀번호 생성하고 sudo 권한 추가

useradd -d /home/cephuser -m cephuser

passwd cephuser

 

echo "cephuser ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/cephuser

chmod 0440 /etc/sudoers.d/cephuser

 

파일 열어서 확인 vi /etc/sudoers.d/cephuser

 

마)    ssh 연결

비밀번호 입력하지 않고 key 파일로 연결하기 위해 nologin 옵션 제거

ls -l /run/nologin

rm /run/nologin

 

#새로 생성된 아이디로 ssh 접근 가능하도록 key 생성

sudo su - cephuser

ssh-keygen

 

# ssh config 파일 수정

cat << EOM > ~/.ssh/config

Host ceph-cli

   Hostname ceph-cli

   User cephuser

Host ceph-mon1

   Hostname ceph-mon1

   User cephuser

Host ceph-mon2

   Hostname ceph-mon2

   User cephuser

Host ceph-mon3

   Hostname ceph-mon3

   User cephuser

Host ceph-osd1

   Hostname ceph-osd1

   User cephuser

Host ceph-osd2

   Hostname ceph-osd2

   User cephuser

Host ceph-osd3

   Hostname ceph-osd3

   User cephuser

Host ceph-osd4

   Hostname ceph-osd4

   User cephuser   

EOM

 

# vi ~/.ssh/config  확인

 

# ssh key 파일 복사

for node in ceph-cli ceph-mon1 ceph-mon2 ceph-mon3 ceph-osd1 ceph-osd2 ceph-osd3 ceph-osd4; do ssh-copy-id cephuser@$node; done

 

D.     기존 데이터가 있다면 삭제 처리 (ceph-cli 노드에서만 실행)

ceph-deploy purge ceph-cli ceph-mon1 ceph-mon2 ceph-mon3 ceph-osd1 ceph-osd2 ceph-osd3 ceph-osd4

ceph-deploy purgedata ceph-cli ceph-mon1 ceph-mon2 ceph-mon3 ceph-osd1 ceph-osd2 ceph-osd3 ceph-osd4

ceph-deploy forgetkeys

rm ceph.*

 

E.      초기 MON 지정 (ceph-cli 노드에서만 실행)

ceph-deploy new ceph-mon1 ceph-mon2 ceph-mon3

 

F.      nodeceph을 설치한다. (ceph-cli 노드에서만 실행)

ceph-deploy install --release octopus ceph-cli ceph-mon1 ceph-mon2 ceph-mon3 ceph-osd1 ceph-osd2 ceph-osd3 ceph-osd4

 

G.     모니터 노드 초기화 [노드 배치와 키 복사 등] (ceph-cli 노드에서만 실행)

ceph-deploy mon create-initial

 

H.     클라이언트 어드민 키링 배포 (ceph-cli 노드에서만 실행)

ceph-deploy admin ceph-cli ceph-mon1 ceph-mon2 ceph-mon3 ceph-osd1 ceph-osd2 ceph-osd3 ceph-osd4

 

I.       MGR 노드 생성 (ceph-cli 노드에서만 실행)

ceph-deploy mgr create ceph-mon1 ceph-mon2

 

J.       파일이 저장될 osd 생성 (ceph-cli 노드에서만 실행)

for node in ceph-osd1 ceph-osd2 ceph-osd3 ceph-osd4; do 

ceph-deploy osd create --data /dev/sdb $node;

ceph-deploy osd create --data /dev/sdc $node;

ceph-deploy osd create --data /dev/sdd $node;

ceph-deploy osd create --data /dev/sde $node;

ceph-deploy osd create --data /dev/sdf $node;

done

 

K.      cephFS를 사용하기 위한 MDS설치
[Object Storage, Block Device
만 사용한다면 설치할 필요 없음]
(ceph-cli
노드에서만 실행)

ceph-deploy mds create ceph-mon3

 

L.      설치 조회 및 완료 (ceph-cli 노드에서만 실행)

sudo ceph –s

 

M.    Dashboard 설치 (ceph-mon1 노드에서만 실행)

가)    Mgr이 설치된 node에 설치

나)    Dashboard 설정 가능 변경

sudo ceph mgr module enable dashboard

 

다)    Error ENOENT: all mgr daemons do not support module ‘dashboard’, pass –force to force enablement 가 발생 시 MGR NodeDashboard 설치

sudo apt install ceph-mgr-dashboard

 

sudo ceph mgr module enable dashboard

 

라)    해당 페이지 인증 생성

sudo ceph dashboard create-self-signed-cert

 

마)    Dashboard에 사용할 계정 생성

# ceph dashboard ac-user-create <ID> <PASSWORD> administrator

sudo ceph dashboard ac-user-create team epdlxjxla administrator

 

바)    Dashboard 서비스 정보 조회 및 해당 url 접속

sudo ceph mgr services

 

3.    출처

1)      Architecure

A.     https://ssup2.github.io/theory_analysis/Ceph_CRUSH_Map_Bucket_Algorithm/

B.      https://yeti.tistory.com/240

C.      https://sungup.github.io/2020/02/02/Ceph-Self-Study-01.html

2)      설치

A.     https://yumserv.tistory.com/273

B.      https://bobocomi.tistory.com/2?category=755670

C.      https://www.server-world.info/en/note?os=CentOS_7&p=ceph14&f=4

D.     https://idchowto.com/?p=49258

728x90
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기