CEPH MGMT 재설치 및 MON 추가 feat. librados: client.bootstrap-mds authentication error (1) Operation not permitted
By 때찌때찌맴매 - 8월 02, 2018
CEPH MGMT 재설치 및 MON 추가 feat. librados: client.bootstrap-mds authentication error (1) Operation not permitted
* ceph 장애 메시지를 확인 해보니 ceph컨트롤 서버인 mgmt 서버가 다운됨.
확인 결과 mgmt 서버 디스크 초기화;;; ???? 어떻게 하면 초기화가..
os 자체가 날라갔기 때문에 데이터는 복구 할 수 없고 새로운 ssd os설치 및 mgmt 서버 복구 작업 진행.
* ceph 구성은 centos7 에서 진행하고, 새로운 키값들을 이용하여 복원을 진행해도 되지만, 현재 상품 운영중인 서버들이기 때문에 함부로 변경하기 보다는 기존에 있던 셋팅 값을 유지 하기로합니다.
* 참고 사이트 : http://docs.ceph.com/docs/mimic/rados/operations/add-or-rm-mons/?highlight=removing
* 주의 : 필자는 MGMT 서버에 MGMT,MDS,MON-2 세가지 용도로 사용합니다. 서버 비용 절감으로 인함이니 서버를 각각 사용하신 분들은 잘 필터해서 작업 진행 하시길 바랍니다.
* 주의 : 필자는 MGMT 서버에 MGMT,MDS,MON-2 세가지 용도로 사용합니다. 서버 비용 절감으로 인함이니 서버를 각각 사용하신 분들은 잘 필터해서 작업 진행 하시길 바랍니다.
[ 장애발생 ] i.ceph 관련 7대의 서버중 mgmt 서버 다운. [root@mon-0 ceph]# ceph -s cluster 0651cfa0-8ce4-4fbd-b35b-966e3d262851 health HEALTH_WARN 1 mons down, quorum 1,2 mon-0,mon-1 monmap e5: 3 mons at {mgmt=192.168.1.11:6789/0,mon-0=192.168.1.12:6789/0,mon-1=192.168.1.13:6789/0} election epoch 58, quorum 1,2 mon-0,mon-1 osdmap e68: 4 osds: 4 up, 4 in flags sortbitwise,require_jewel_osds pgmap v124967: 128 pgs, 1 pools, 64 bytes data, 9 objects 149 MB used, 59556 GB / 59556 GB avail 128 active+clean
[ mgmt 서버 제거 ] i. REMOVING MONITORS ============================================================================================ # ceph mon remove {mon-id} ============================================================================================ * mon 서버에 추가된 mgmt 서버 제거 * 해당 작업은 mgmt 서버가 아닌 mon 서버에서 진행합니다. [root@mon-0 ceph]# ceph mon remove mgmt removing mon.mgmt at 192.168.1.11:6789/0, there will be 2 monitors [root@mon-0 ceph]# ceph -s cluster 0651cfa0-8ce4-4fbd-b35b-966e3d262851 health HEALTH_OK monmap e6: 2 mons at {mon-0=192.168.1.12:6789/0,mon-1=192.168.1.13:6789/0} election epoch 60, quorum 0,1 mon-0,mon-1 osdmap e68: 4 osds: 4 up, 4 in flags sortbitwise,require_jewel_osds pgmap v124974: 128 pgs, 1 pools, 64 bytes data, 9 objects 149 MB used, 59556 GB / 59556 GB avail 128 active+clean [root@mon-0 ceph]# ceph mon dump dumped monmap epoch 6 epoch 6 fsid 0651cfa0-8ce4-4fbd-b35b-966e3d262851 last_changed 2018-08-01 13:37:51.939485 created 2018-04-18 14:24:34.356583 0: 192.168.1.12:6789/0 mon.mon-0 1: 192.168.1.13:6789/0 mon.mon-1 * ceph mon dump 로 확인 하면 현재 사용중인 mon 서버들이 나오는데, 제거 명령어 후 mgmt 서버 쪽은 빠짐.
[ os 기본구성 ] i. os 설치, yum.repo 추가 국내 yum repo https://hoguinside.blogspot.com/2017/11/yum.html ii. ceph 기본구성 https://hoguinside.blogspot.com/2018/04/ceph-1.html * yum update 해주세요. ceph-deploy 설치시 낮은 버젼으로 설치 되면 ceph 사이트 못찾아서 install 부터 장애가 발생됩니다.
[ MGMT 서버 복구 ] i. MGMT 서버 복구 진행 [root@mgmt01:05:03:~]# yum install ceph-deploy [root@mgmt01:05:37:~]# rpm -qa | grep ceph-deploy ceph-deploy-1.5.39-0.noarch [root@mgmt01:06:08:~]# ceph-deploy new mgmt [ceph_deploy.conf][DEBUG ] found configuration file at: /root/.cephdeploy.conf [ceph_deploy.cli][INFO ] Invoked (1.5.39): /usr/bin/ceph-deploy new mgmt [ceph_deploy.cli][INFO ] ceph-deploy options: [ceph_deploy.cli][INFO ] username : None [ceph_deploy.cli][INFO ] func :[ceph_deploy.cli][INFO ] verbose : False [ceph_deploy.cli][INFO ] overwrite_conf : False [ceph_deploy.cli][INFO ] quiet : False [ceph_deploy.cli][INFO ] cd_conf : [ceph_deploy.cli][INFO ] cluster : ceph [ceph_deploy.cli][INFO ] ssh_copykey : True [ceph_deploy.cli][INFO ] mon : ['mgmt'] [ceph_deploy.cli][INFO ] public_network : None [ceph_deploy.cli][INFO ] ceph_conf : None [ceph_deploy.cli][INFO ] cluster_network : None [ceph_deploy.cli][INFO ] default_release : False [ceph_deploy.cli][INFO ] fsid : None [ceph_deploy.new][DEBUG ] Creating new cluster named ceph [ceph_deploy.new][INFO ] making sure passwordless SSH succeeds [root@mgmt01:11:19:~]# ceph-deploy install mgmt . . [mgmt][DEBUG ] Complete! [mgmt][INFO ] Running command: ceph --version [mgmt][DEBUG ] ceph version 10.2.11 (e4b061b47f07f583c92a050d9e84b1813a35671e) [root@mgmt01:20:00:~]# ceph-deploy mon create-initial * ceph instsall 및 mon 초기화를 진행 하면 bootstrap,admin.keyring 들이 생성이됨 [root@mgmt01:19:53:~]# ll | grep ceph 합계 128 -rw-r--r-- 1 root root 32367 8월 1 13:19 ceph-deploy-ceph.log -rw------- 1 root root 113 8월 1 13:19 ceph.bootstrap-mds.keyring -rw------- 1 root root 71 8월 1 13:19 ceph.bootstrap-mgr.keyring -rw------- 1 root root 113 8월 1 13:19 ceph.bootstrap-osd.keyring -rw------- 1 root root 113 8월 1 13:19 ceph.bootstrap-rgw.keyring -rw------- 1 root root 129 8월 1 13:19 ceph.client.admin.keyring -rw-r--r-- 1 root root 193 8월 1 13:19 ceph.conf -rw------- 1 root root 73 8월 1 13:19 ceph.mon.keyring * 해당 위치에 있는 파일들은 배포용이고, 실직적으로 import되어 있는 파일들은 /var/lib/ceph/ 위치에 있음. [root@mgmt01:23:02:~]# ll /var/lib/ceph/ 합계 4 drwxr-x--- 10 ceph ceph 120 8월 1 13:15 . drwxr-xr-x. 34 root root 4096 8월 1 13:15 .. drwxr-x--- 2 ceph ceph 25 8월 1 13:19 bootstrap-mds drwxr-x--- 2 ceph ceph 25 8월 1 13:19 bootstrap-osd drwxr-x--- 2 ceph ceph 25 8월 1 13:19 bootstrap-rgw drwxr-x--- 2 ceph ceph 6 7월 10 02:03 mds drwxr-x--- 3 ceph ceph 22 8월 1 13:19 mon drwxr-x--- 2 ceph ceph 6 7월 10 02:03 osd drwxr-xr-x 2 root root 6 7월 10 02:03 radosgw * conf 파일과 admin.keyring 들을 생성 했으면 기존의 conf 파일 내용으로 수정함 ( 기존 conf 파일들은 mon-0, mon-1 등에도 있고, 필자의 구성대로 ceph를 설치 했었다면 다른 서버에서도 "ceph auth list" 명령어를 이용하여 keyring 값 확인 가능 ) mgmt 를 mon 서버로 등록한 이유는 ceph는 안전빵으로 3대를 기본 구성으로 진행 했기 때문에 mgmt 도 mon 3번째 서버로 등록 했고, 또한 mds 도 같이 사용했음. ( 단독으로 mon, mds 를 쓰기에는 비용이...) * ceph.conf 와 ceph.client.admin.keyring 의 key 값을 변경 했으면 복사. [root@mgmt02:58:03:~]# ceph-deploy --overwrite-conf admin mgmt 또는 [root@mgmt03:18:11:~]# \cp -arp ceph.conf ceph.client.admin.keyring /etc/ceph/ [root@mgmt03:39:25:~]# ceph-deploy mon create mgmt [root@mgmt03:39:59:~]# ceph -s 2018-08-01 15:40:00.522889 7f983d142700 0 librados: client.admin authentication error (1) Operation not permitted Error connecting to cluster: PermissionError [root@mgmt03:40:00:~]# ceph -s cluster 0651cfa0-8ce4-4fbd-b35b-966e3d262851 health HEALTH_OK monmap e16: 2 mons at {mon-0=192.168.1.12:6789/0,mon-1=192.168.1.13:6789/0} election epoch 80, quorum 0,1 mon-0,mon-1 osdmap e68: 4 osds: 4 up, 4 in flags sortbitwise,require_jewel_osds pgmap v125010: 128 pgs, 1 pools, 64 bytes data, 9 objects 149 MB used, 59556 GB / 59556 GB avail 128 active+clean * 확인 시 첫 ceph -s 했을때 ERROR 가 나온 이유는 conf 파일에 mgmt 서버의 ip가 입력 되어 있어거 최초에 mgmt mon 쪽으로 접근했기 때문. 설정 값은 넣었지만 상태 값에는 해당 정보가 없고, /var/lib/ceph 디렉토리에 있는 bootstrap등 keyring 파일의 key값이 일치 하지 않아 생기는 현상. 실제로 ceph auth list 로 확인 되는 값들과 /var/lib/ceph 밑에 있는 파일들의 값이 다르기 때문임. * 아직 정상은 아니지만 기존 정보들 확인되기 때문에 일단 넘어감.
[ mgmt mon 서버 추가. ] i. ADDING MONITORS ============================================================================================ # mv /var/lib/ceph/mon/ceph-{mon-id} /var/lib/ceph/mon/ceph-{mon-id}_back # mkdir /var/lib/ceph/mon/ceph-{mon-id}_back/tmp # monmaptool --create --add {mon-id} {ip:port} --clobber tmp/monmap # ceph auth get mon. -o /var/lib/ceph/mon/ceph-{mon-id}_back/tmp/{key-filename} # ceph mon getmap -o /var/lib/ceph/mon/ceph-{mon-id}_back/tmp/{map-filename} # ceph-mon -i {mon-id} --mkfs --monmap {tmp}/{map-filename} --keyring {tmp}/{key-filename} # ceph-mon -i {mon-id} --public-addr {ip:port} ============================================================================================ [root@mgmt01:23:02:~]# mv /var/lib/ceph/mon/ceph-mgmt /var/lib/ceph/mon/ceph-mgmt_back [root@mgmt01:59:31:~]# cd /var/lib/ceph/mon/ceph-mgmt_back [root@mgmt01:59:31:/var/lib/ceph/mon/ceph-mgmt_back]# mkdir tmp [root@mgmt02:31:43:/var/lib/ceph/mon/ceph-mgmt_back]# monmaptool --create --add mgmt 192.168.1.11:6789 --clobber tmp/monmap monmaptool: monmap file tmp/monmap monmaptool: generated fsid d8f0c51c-7314-4900-8bf6-41bc750152f1 monmaptool: writing epoch 0 to tmp/monmap (1 monitors) [root@mgmt02:09:55:/var/lib/ceph/mon/ceph-mgmt_back]# ceph auth get mon. -o tmp/keyring 2018-08-01 14:10:12.096006 7f3414367700 0 -- :/363631262 >> 192.168.1.11:6789/0 pipe(0x7f34100663c0 sd=6 :0 s=1 pgs=0 cs=0 l=1 c=0x7f341005ea30).fault exported keyring for mon. [root@mgmt02:10:15:/var/lib/ceph/mon/ceph-mgmt_back]# ceph mon getmap -o tmp/monmap got monmap epoch 6 [root@mgmt02:10:46:/var/lib/ceph/mon/ceph-mgmt_back]# ceph-mon -i mgmt --mkfs --monmap tmp/monmap --keyring tmp/keyring ceph-mon: set fsid to 0651cfa0-8ce4-4fbd-b35b-966e3d262851 ceph-mon: created monfs at /var/lib/ceph/mon/ceph-mgmt for mon.mgmt [root@mgmt02:11:17:/var/lib/ceph/mon/ceph-mgmt_back]# chown -R ceph.ceph ../ceph-mgmt [root@mgmt05:00:24:/var/lib/ceph/mon/ceph-mgmt_back]# ceph-mon -i mgmt --public-addr 192.168.1.11:6789 [root@mgmt02:11:17:/var/lib/ceph/mon/ceph-mgmt_back]# ll /var/lib/ceph/mon/ 합계 0 drwxr-x--- 4 ceph ceph 43 8월 1 14:11 . drwxr-x--- 10 ceph ceph 120 8월 1 13:15 .. drwxr-xr-x 3 ceph ceph 35 8월 1 14:11 ceph-mgmt drwxr-xr-x 4 ceph ceph 70 8월 1 13:49 ceph-mgmt_back [root@mgmt03:00:47:/var/lib/ceph/mon/ceph-mgmt_back]# ceph mon add mgmt 192.168.1.11:6789 adding mon.mgmt at 192.168.1.11:3789/0 [root@mgmt12:55:45:~]# ceph mon dump dumped monmap epoch 25 epoch 25 fsid 0651cfa0-8ce4-4fbd-b35b-966e3d262851 last_changed 2018-08-01 17:26:48.158918 created 2018-04-18 14:24:34.356583 0: 192.168.1.11:6789/0 mon.mgmt 1: 192.168.1.12:6789/0 mon.mon-0 2: 192.168.1.13:6789/0 mon.mon-1 [root@mgmt05:01:07:/var/lib/ceph/mon/ceph-mgmt_back]# ceph -s cluster 0651cfa0-8ce4-4fbd-b35b-966e3d262851 health HEALTH_OK monmap e23: 3 mons at {mgmt=192.168.1.11:6789/0,mon-0=192.168.1.12:6789/0,mon-1=192.168.1.13:6789/0} election epoch 100, quorum 0,1,2 mgmt,mon-0,mon-1 osdmap e68: 4 osds: 4 up, 4 in flags sortbitwise,require_jewel_osds pgmap v125025: 128 pgs, 1 pools, 64 bytes data, 9 objects 149 MB used, 59556 GB / 59556 GB avail 128 active+clean * ceph health 와 mon dump 로 확인 하면 mgmt mon을 포함한 3개의 mon 서버가 구동중인걸 확인할 수 있음.
[ MDS 구동 ] [root@mgmt03:00:47:/var/lib/ceph/mon/ceph-mgmt_back]# cd /root [root@mgmt03:23:07:~]# ceph-deploy gatherkeys mgmt . . . [ceph_deploy.gatherkeys][INFO ] keyring 'ceph.client.admin.keyring' already exists [ceph_deploy.gatherkeys][INFO ] Replacing 'ceph.bootstrap-mds.keyring' and backing up old key as 'ceph.bootstrap-mds.keyring-20180801170437' [ceph_deploy.gatherkeys][INFO ] Replacing 'ceph.bootstrap-mgr.keyring' and backing up old key as 'ceph.bootstrap-mgr.keyring-20180801170437' [ceph_deploy.gatherkeys][INFO ] Replacing 'ceph.mon.keyring' and backing up old key as 'ceph.mon.keyring-20180801170437' [ceph_deploy.gatherkeys][INFO ] Replacing 'ceph.bootstrap-osd.keyring' and backing up old key as 'ceph.bootstrap-osd.keyring-20180801170437' [ceph_deploy.gatherkeys][INFO ] Replacing 'ceph.bootstrap-rgw.keyring' and backing up old key as 'ceph.bootstrap-rgw.keyring-20180801170437' [ceph_deploy.gatherkeys][INFO ] Destroy temp directory /tmp/tmp2dpdwU [root@mgmt05:15:26:~]# cat ceph.bootstrap-mds.keyring > /var/lib/ceph/bootstrap-mds/ceph.keyring [root@mgmt05:16:19:~]# cat ceph.bootstrap-osd.keyring > /var/lib/ceph/bootstrap-osd/ceph.keyring [root@mgmt05:16:32:~]# cat ceph.bootstrap-rgw.keyring > /var/lib/ceph/bootstrap-rgw/ceph.keyring * ceph.bootstrap-mgr 키값은 /var/lib/ceph/ 위치에 사용중이면 넣고 아니면 무시. * gatherkeys 명령어는 ceph auth list 명령어로 확인 하면 나오는 키값을 bootstrap들의 keyring 파일로 배포를 합니다. mgmt 에서는 파일이 재생성 되고, mon 서버들은 /var/lib/ceph 밑에는 있는 keyring 에 입력이 됩니다. 고로 mgmt 에서는 위 작업을 진행해야 됩니다. [root@mgmt05:29:39:~]# ceph-deploy mds create mgmt . . [mgmt][INFO ] Running command: systemctl enable ceph-mds@mgmt [mgmt][WARNIN] Created symlink from /etc/systemd/system/ceph-mds.target.wants/ceph-mds@mgmt.service to /usr/lib/systemd/system/ceph-mds@.service. [mgmt][INFO ] Running command: systemctl start ceph-mds@mgmt [mgmt][INFO ] Running command: systemctl enable ceph.target [root@mgmt05:17:31:~]# netstat -nlpt | grep ceph Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:6800 0.0.0.0:* LISTEN 10388/ceph-mds tcp 0 0 192.168.1.11:6789 0.0.0.0:* LISTEN 9619/ceph-mon
[ MDS 구동시 에러 ] [mgmt][DEBUG ] create path if it doesn't exist [mgmt][INFO ] Running command: ceph --cluster ceph --name client.bootstrap-mds --keyring /var/lib/ceph/bootstrap-mds/ceph.keyring auth get-or-create mds.mgmt osd allow rwx mds allow mon allow profile mds -o /var/lib/ceph/mds/ceph-mgmt/keyring [mgmt][ERROR ] 2018-08-01 11:13:16.378595 7fe472685700 0 librados: client.bootstrap-mds authentication error (1) Operation not permitted [mgmt][ERROR ] Error connecting to cluster: PermissionError [mgmt][ERROR ] exit code from command was: 1 [ceph_deploy.mds][ERROR ] could not create mds * 위와 같은 권한 에러는 대부분 keyring 파일의 key값이 일치 하지 않기 때문에 발생함. ceph auth list 의 키값과, /var/lib/ceph/ 아래 디렉토리들의 키값이 일치 해야됨 * 발생 이유는 전 명령어인 ceph-deploy gatherkeys mgmt 를 하지 않았기 때문.
0 개의 댓글