前回、CephクラスタにOSDを追加していたが、今回はそのうちの1台をクラスタから切り離してみる。
1.ceph-monの設定から除外する
まず、ceph-monの監視対象から対象ノードを除外し、接続がされないようにする。
Ceph管理ノードで設定ファイルを開き、以下の項目から対象のノードを除外(削除)する。
- mon_initial_members
- mon_host
削除後、Ceph管理ノードから以下のコマンドで各ノードに設定ファイルを配布する。
ceph-deploy --overwrite config push Ceph管理ノード データノード1 ... データノードN
設定ファイル配布後、以下のコマンドを実行し対象ノードでのceph-monを停止する。
ceph-deploy mon destroy 除外対象ノード
[ceph@BS-PUB-CEPHADM ~]$ ceph-deploy mon destroy BS-PUB-CEPHNODE-04
[ceph_deploy.conf][DEBUG ] found configuration file at: /home/ceph/.cephdeploy.conf
[ceph_deploy.cli][INFO ] Invoked (1.5.31): /bin/ceph-deploy mon destroy BS-PUB-CEPHNODE-04
[ceph_deploy.cli][INFO ] ceph-deploy options:
[ceph_deploy.cli][INFO ] username : None
[ceph_deploy.cli][INFO ] verbose : False
[ceph_deploy.cli][INFO ] overwrite_conf : False
[ceph_deploy.cli][INFO ] subcommand : destroy
[ceph_deploy.cli][INFO ] quiet : False
[ceph_deploy.cli][INFO ] cd_conf :
[ceph_deploy.cli][INFO ] cluster : ceph
[ceph_deploy.cli][INFO ] mon : ['BS-PUB-CEPHNODE-04']
[ceph_deploy.cli][INFO ] func :
[ceph_deploy.cli][INFO ] ceph_conf : None
[ceph_deploy.cli][INFO ] default_release : False
[ceph_deploy.mon][DEBUG ] Removing mon from BS-PUB-CEPHNODE-04
[BS-PUB-CEPHNODE-04][DEBUG ] connection detected need for sudo
[BS-PUB-CEPHNODE-04][DEBUG ] connected to host: BS-PUB-CEPHNODE-04
[BS-PUB-CEPHNODE-04][DEBUG ] detect platform information from remote host
[BS-PUB-CEPHNODE-04][DEBUG ] detect machine type
[BS-PUB-CEPHNODE-04][DEBUG ] find the location of an executable
[BS-PUB-CEPHNODE-04][DEBUG ] get remote short hostname
[BS-PUB-CEPHNODE-04][INFO ] Running command: sudo ceph --cluster=ceph -n mon. -k /var/lib/ceph/mon/ceph-BS-PUB-CEPHNODE-04/keyring mon remove BS-PUB-CEPHNODE-04
[BS-PUB-CEPHNODE-04][WARNIN] removed mon.BS-PUB-CEPHNODE-04 at 172.20.100.149:6789/0, there are now 4 monitors
[BS-PUB-CEPHNODE-04][INFO ] polling the daemon to verify it stopped
[BS-PUB-CEPHNODE-04][INFO ] Running command: sudo systemctl stop ceph-mon@BS-PUB-CEPHNODE-04.service
[BS-PUB-CEPHNODE-04][INFO ] Running command: sudo mkdir -p /var/lib/ceph/mon-removed
[BS-PUB-CEPHNODE-04][DEBUG ] move old monitor data
2.OSDの切り離し
次に、OSDの切り離しを実施する。
まず、以下のコマンドで切り離すノードのOSDのID/Nameを取得する。
ceph-deploy osd list 除外対象ノード
[ceph@BS-PUB-CEPHADM ~]$ ceph-deploy osd list BS-PUB-CEPHNODE-04
[ceph_deploy.conf][DEBUG ] found configuration file at: /home/ceph/.cephdeploy.conf
[ceph_deploy.cli][INFO ] Invoked (1.5.31): /bin/ceph-deploy osd list BS-PUB-CEPHNODE-04
[ceph_deploy.cli][INFO ] ceph-deploy options:
[ceph_deploy.cli][INFO ] username : None
[ceph_deploy.cli][INFO ] verbose : False
[ceph_deploy.cli][INFO ] overwrite_conf : False
[ceph_deploy.cli][INFO ] subcommand : list
[ceph_deploy.cli][INFO ] quiet : False
[ceph_deploy.cli][INFO ] cd_conf :
[ceph_deploy.cli][INFO ] cluster : ceph
[ceph_deploy.cli][INFO ] func :
[ceph_deploy.cli][INFO ] ceph_conf : None
[ceph_deploy.cli][INFO ] default_release : False
[ceph_deploy.cli][INFO ] disk : [('BS-PUB-CEPHNODE-04', None, None)]
[BS-PUB-CEPHNODE-01][DEBUG ] connection detected need for sudo
[BS-PUB-CEPHNODE-01][DEBUG ] connected to host: BS-PUB-CEPHNODE-01
[BS-PUB-CEPHNODE-01][DEBUG ] detect platform information from remote host
[BS-PUB-CEPHNODE-01][DEBUG ] detect machine type
[BS-PUB-CEPHNODE-01][DEBUG ] find the location of an executable
[BS-PUB-CEPHNODE-01][DEBUG ] find the location of an executable
[BS-PUB-CEPHNODE-01][INFO ] Running command: sudo /bin/ceph --cluster=ceph osd tree --format=json
[BS-PUB-CEPHNODE-04][DEBUG ] connection detected need for sudo
[BS-PUB-CEPHNODE-04][DEBUG ] connected to host: BS-PUB-CEPHNODE-04
[BS-PUB-CEPHNODE-04][DEBUG ] detect platform information from remote host
[BS-PUB-CEPHNODE-04][DEBUG ] detect machine type
[BS-PUB-CEPHNODE-04][DEBUG ] find the location of an executable
[BS-PUB-CEPHNODE-04][INFO ] Running command: sudo /usr/sbin/ceph-disk list
[BS-PUB-CEPHNODE-04][INFO ] ----------------------------------------
[BS-PUB-CEPHNODE-04][INFO ] ceph-3
[BS-PUB-CEPHNODE-04][INFO ] ----------------------------------------
[BS-PUB-CEPHNODE-04][INFO ] Path /var/lib/ceph/osd/ceph-3
[BS-PUB-CEPHNODE-04][INFO ] ID 3
[BS-PUB-CEPHNODE-04][INFO ] Name osd.3
[BS-PUB-CEPHNODE-04][INFO ] Status up
[BS-PUB-CEPHNODE-04][INFO ] Reweight 1.0
[BS-PUB-CEPHNODE-04][INFO ] Active ok
[BS-PUB-CEPHNODE-04][INFO ] Magic ceph osd volume v026
[BS-PUB-CEPHNODE-04][INFO ] Whoami 3
[BS-PUB-CEPHNODE-04][INFO ] Journal path /dev/vda1
[BS-PUB-CEPHNODE-04][INFO ] Journal_uuid 75cac8f3-1c4d-4aff-9b15-e4b947676d48
[BS-PUB-CEPHNODE-04][INFO ] ----------------------------------------
次に、対象のOSDに保存されたデータを他のノードに保持させるよう、リバランス処理を実行する。
ceph osd out OSDのID
[ceph@BS-PUB-CEPHADM ~]$ ceph osd out 3
marked out osd.3.
この処理が無事終わったら(ceph healthで「HEALTH_OK」が返ってくるなら)、以下のコマンドで認証鍵の削除とクラスタからの切り離しを実施する。
まず、削除対象ノードで、以下のコマンドを実行しOSDのサービスを停止する。
systemctl stop ceph-osd@OSDのID
[root@BS-PUB-CEPHNODE-04 ~]# systemctl stop ceph-osd@3
OSDの停止後、以下のコマンドをCeph管理ノードから実行し、OSDの切り離しを実施する。
ceph auth del OSDName
ceph osd rm OSD ID
[ceph@BS-PUB-CEPHADM ~]$ ceph auth del osd.3
entity osd.3 does not exist
[ceph@BS-PUB-CEPHADM ~]$ ceph osd rm 3
removed osd.3
最後に、osd treeを確認しOSDが無事切り離されている事を確認する。
※osd.3がいない事が確認できる
[ceph@BS-PUB-CEPHADM ~]$ ceph osd tree
ID WEIGHT TYPE NAME UP/DOWN REWEIGHT PRIMARY-AFFINITY
-1 0.39038 root default
-2 0.09760 host BS-PUB-CEPHNODE-01
0 0.09760 osd.0 up 1.00000 1.00000
-3 0.09760 host BS-PUB-CEPHNODE-02
1 0.09760 osd.1 up 1.00000 1.00000
-4 0.09760 host BS-PUB-CEPHNODE-03
2 0.09760 osd.2 up 1.00000 1.00000
-5 0 host BS-PUB-CEPHNODE-04
-6 0.09760 host BS-PUB-CEPHNODE-05
4 0.09760 osd.4 up 1.00000 1.00000