Ceph 10.2.0 설치 on Ubuntu (jewel 버전)
구축 환경
- 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]
'리눅스 > Ceph' 카테고리의 다른 글
Ceph 가상 계정 생성후 pool 할당 해주기 (0) | 2016.08.02 |
---|---|
Ceph Document URL (0) | 2016.07.26 |
[Ceph 에러] rbd: sysfs write failed rbd: map failed: (6) No such device or address (0) | 2016.07.19 |
Ceph pool 생성, client 마운트, 볼륨 크기 조절, pool 삭제, 이름변경, 복제, image 삭제 (0) | 2016.07.19 |
Ceph osd node 추가 및 제거 (0) | 2016.07.19 |