IT. POST LIST

POST ALL LABEL

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  세가지 용도로 사용합니다. 서버 비용 절감으로 인함이니  서버를 각각 사용하신 분들은 잘 필터해서 작업 진행 하시길 바랍니다.

[ 장애발생 ]

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 를 하지 않았기 때문.
 
* 모든 작업이 끝나고 결국 서버를 전부 분리 할까... 하다가 비용땜에.. 그만 둡니다..

  • Share:

You Might Also Like

0 개의 댓글