Ceph 10.2.0 설치 on Ubuntu (jewel 버전)

리눅스/Ceph|2016. 7. 19. 11:31
반응형

구축 환경


- Ceph node : 1대 (VM / RAM 2G / OS HDD 10G)

- OSD node : 2대 (VM / RAM 2G / OS HDD 10G, 데이타 저장용 10G)

   > 데이타 저장용 HDD는 스토리지의 경우 RAID로 묶어 사용해야 합니다. 절대로 LVM으로 묶으면 안됩니다.

- OS 는 모두 Ubuntu 16.04 LTS (64bit / Server) 버전으로 설치하였습니다.

- Ceph 의 버전은 10.2.0 (jewel) 입니다.

- Openstack과 연동 되는 부분은 제외하였으며, Ceph 스토리지를 구축하는 방법만 기술하였습니다.




1. OS 설치


(모든 node 동일)


1) 파티션


    - 자동 파티션으로 설치

    - LVM 사용안함 (중요)


2) 호스트 이름


    ceph node의 호스트네임은 ceph로 합니다. (정해진 규칙은 아님)

    첫번째 osd node의 호스트네임은 osd-1,

    두번째 OSD node의 호스트네임은 osd-2 으로 합니다.


3) 패키지 설치


    기본 선택된 'standard system utilities' 외에 'OpenSSH server' 를 추가하고 설치를 진행합니다.




2. OS 환경 설정


(모든 node 동일)


1) root의 ssh 원격접속 허용


# sudo passwd root    // sudo su - 전 후 상관없이 패스워드 설정 반드시 해주어야 원격접속이 가능함 / passwd 아니고 passwd root

> 현재 사용자 및 root 패스워드 입력


# sudo su -


# vi /etc/ssh/sshd_config

기존 : PermitRootLogin prohibit-password

변경 : PermitRootLogin yes


그리고 ssh 데몬을 재시작하여 설정값을 적용해줍니다.


# /etc/init.d/ssh restart


2) 네트워크  설정


테스트 VM을 서로 묶기 위해서 서버마다 두 개의 네트워크를 설정 설정합니다.


# vi /etc/network/interfaces


eth0 (dhcp)

eth1 (static)

- ceph node의 경우 : 192.168.56.11

- osd-1 node의 경우 : 192.168.56.12

- osd-2 node의 경우 : 192.168.56.13


(ceph node 예)

--------------------------

source /etc/network/interfaces.d/*


auto lo

iface lo inet loopback


auto eth0

iface eth0 inet dhcp


auto eth1

iface eth1 inet static

address 192.168.56.11

netmask 255.255.255.0

gateway 192.168.56.1


dns-nameservers 164.124.101.2

--------------------------


네트워크 설정 값 적용을 위해 networking 을 재시작 합니다.


# /etc/init.d/networking restart


재시작중 failed 메세지가 보여도 ssh 접속과, 외부로 ping 8.8.8.8 이 되면 문제 없다고 봐도 됩니다.

앞으로 수월한 작업을 위해 VM콘솔창이 아닌 ssh client 프로그램으로 ssh 접속하여 작업을 진행하도록 합니다.


* 참고

VM 환경 서버는 추후 리부팅 작업을 할때 networking 이 되지 않는 경우가 발생하면

/etc/init.d/networking restart 를 해주어 해결이 가능합니다.


3) hosts 설정


# vi /etc/hosts

--------------------------

192.168.56.11 ceph

192.168.56.12 osd-1

192.168.56.13 osd-2

--------------------------


4) OS 패키지 업데이트


# apt-get update

# apt-get -y dist-upgrade


* 참고

업데이트가 되지 않을 경우 확인사항

- /etc/init.d/networking 재시작 해보기

- rm -rf /var/lib/apt/lists/* 이후 다시 해보기


5) ceph 설치


# apt-get -y install ceph-common ceph-deploy ceph-mds


버전 확인

# ceph -v

ceph version 10.2.0 (3a9fba20ec743699b69bd0181dd6c54dc01c64b9)


6) 방화벽 설정


ceph node : TCP 6789 Open

osd-1, osd-2 node : TCP 6800:7100 Open


7) ceph 계정 생성


# 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


8) 인증키 생성 및 복사


(ceph node)

인증키 생성은 ceph 마스터 서버에서만 합니다.

앞으로의 작업은 cephuser 로 계정을 전환하여 진행합니다.


사용자 전환

# su - cephuser


키 생성

$ ssh-keygen


각 노드로 ssh key 전송

$ ssh-copy-id cephuser@osd-1

$ ssh-copy-id cephuser@osd-2




3. 설정


(ceph node 에서만 실행)


1) 기본 설정


ceph 관리 서버에서만 진행합니다.


$ mkdir ceph

$ cd ceph

$ ceph-deploy new ceph    // ceph 호스트 서버를 모니터 서버로 활용하겠다는 뜻

$ vi ceph.conf


마지막줄에 추가

osd pool default size = 2    // raid 5 의 형태. osd 서버가 두개 깨지면 문제가 됌. 값을 3으로 주면 3개 깨질때 문제가 됌.

[client]

rbd_cache = false    // 마스터에서 동일 image 를 map, mount 하고 해제할때 캐시를 저장하지 않음으로써

                                  추후 해당 image 를 map, mount 했을때 그동안 client 가 변경한 데이타가 보이게 됩니다.

                                  아직 현 버전에서는 journaling 외에 실제 사용량을 확일할 방법이 없으므로 이렇게 봐야합니다.

                                   (주의 : 마스터에서 client 이미지를 마운트하고 보게되면 그 안에 데이타를 쓰지 말것.

                                             쓰게되는경우 별도의 이미지로 분리되어 client 데이타가 변경되어도 못 봄)

                                  나중에 추가했다면, 아래 '설정 파일 배포' 처럼 --overwrite-conf 옵션과 함께 ceph 및 각 osd 로 

                                  배포하도록 합니다.


각 osd 노드에 ceph 설치

$ ceph-deploy install ceph osd-1 osd-2


모니터링 및 공유키 초기 설정

$ ceph-deploy mon create-initial    // 실행시 모니터 서버의 포트가 열리고, (tcp 6789)


위와 같이 실행하면 모니터 노드 (ceph node) 에서 netstat -nltp 했을때 :6789 포트 열린것이 확인됩니다.

그리고 아래와 같은 파일이 생성됩니다.


ceph.bootstrap-mds.keyring

ceph.bootstrap-osd.keyring

ceph.bootstrap-rgw.keyring

ceph.client.admin.keyring


그리고 최신버전에서는 아래 두 줄 추가해주세요. (어디에 사용되는지 나중에 알아볼것)


$ ceph-deploy mon create ceph

$ ceph-deploy gatherkeys ceph


2) 스토리지 클러스터 설정


선택 디스크 파티션 삭제, xfs 포맷 (데이타가 삭제되니 주의하세요.)

$ ceph-deploy disk zap osd-1:sdb osd-2:sdb    // 호스트:장치명

$ ceph-deploy osd prepare osd-1:sdb osd-2:sdb       // 호스트:장치명

$ ceph-deploy osd activate osd-1:sdb1 osd-2:sdb1    // 호스트:파티션명    // 실행시 osd 서버의 포트가 열림


설정 파일 배포

$ ceph-deploy admin ceph osd-1 osd-2

$ sudo chmod 644 /etc/ceph/ceph.client.admin.keyring


3) 상태 확인


모니터 노드(ceph node)에서 상태 확인이 가능합니다.


$ ceph health

결과는 HEALTH_OK 라고 떠야합니다.

만약 Warning이 뜨면 몇 분정도 기다렸다가 다시 명령어를 내려보거나 그래도 안되면 서비스 데몬을 재시작 해봅니다.

Warning 메세지는 디스크 남은양이 적을 때에도 뜰 수 있으므로, /etc/ceph/ceph.log 파일을 확인하여 어떤 문제인지 확실히 알아봐야 합니다.


$ ceph pg stat

v22: 64 pgs: 64 active+clean; 0 bytes data, 68864 kB used, 10150 MB / 10217 MB avail


$ ceph osd tree

ID WEIGHT  TYPE NAME      UP/DOWN REWEIGHT PRIMARY-AFFINITY 

-1 0.00980 root default                                     

-2 0.00490     host osd-1                                   

 0 0.00490         osd.0       up  1.00000          1.00000 

-3 0.00490     host osd-2                                   

 1 0.00490         osd.1       up  1.00000          1.00000


* 참고

로그 파일 : /var/log/ceph/ceph.log


ceph node 를 메타데이타서버로 지정합니다.

(디렉토리를 다수 생성하여 사용자에게 하나씩 마운트 할 수 있게 할때 필수. 그 외 없어도 됨)


$ ceph-deploy mds create ceph    // 실행을 해야 client 에서 mount 가 가능해지며, 포트가 열립니다. (tcp 6800)




4. 삭제


설정을 하지 않은 최초의 상태로 돌아가는 방법 입니다. (초기화)


처음부터 다시 구성을 하려면 아래와 같이 명령을 내립니다.


(ceph node 에서만)


1) 패키지 삭제


$ ceph-deploy purge ceph osd-1 osd-2


2) 설정 정보 삭제


$ ceph-deploy purgedata ceph osd-1 osd-2

$ ceph-deploy forgetkeys

$ rm -f ~/.cephdeploy.conf

$ rm -f ~/ceph/*


3) 각 osd 데이타 삭제


(osd-1)

# rm -rf /var/lib/ceph/osd/ceph-1/*

(osd-2)

# rm -rf /var/lib/ceph/osd/ceph-2/*


4) 데몬 강제 종료


모니터 노드 데몬을 강제 종료합니다.

# ps -ef |grep ceph  (pid값 확인후)

# kill -9 [pid]



반응형

댓글()