CephFS Monitors

参照 https://ceph.readthedocs.io/en/latest/start/intro/
「A Ceph Monitor (ceph-mon) maintains maps of the cluster state, including the monitor map, manager map, the OSD map, the MDS map, and the CRUSH map. These maps are critical cluster state required for Ceph daemons to coordinate with each other. Monitors are also responsible for managing authentication between daemons and clients.」とある.
各ノードの状態を監視しているノードっていう感じかな.

また「At least three monitors are normally required for redundancy and high availability.」とあるので運用時には最低3台必要みたい.

っでその構築. 参考先https://access.redhat.com/documentation/ja-jp/red_hat_ceph_storage/4/html/installation_guide/using-the-command-line-interface-to-install-the-ceph-software

まずceph構成ファイル(/etc/ceph/ceph.conf)を作成します. これは初めからは存在していないファイルです
ただ、その前にクラスターの一意のID(fsid)が必要なので、それを uuidgen コマンドで用意します

[root@mgr ~]# uuidgen
95f5eb4a-2ea2-4539-b0a3-bda3b6358ba5
[root@mgr ~]#

っと得られたので、この「95f5eb4a-2ea2-4539-b0a3-bda3b6358ba5」をここでのcephクラスターのIDとします.
っで下記のようにceph構成ファイル(/etc/ceph/ceph.conf)を作る
マニュアル https://ceph.readthedocs.io/en/latest/rados/configuration/mon-config-ref/

[root@mgr ~]# vi /etc/ceph/ceph.conf                           */var/ceph/{クラスター名.conf}
[global]
fsid = 95f5eb4a-2ea2-4539-b0a3-bda3b6358ba5
mon initial members = mgr
mon host = 192.168.0.47
 
[root@mgr ~]#

クラスターの「キーリング」を作る. まず枠を.

[root@mgr ~]# ceph-authtool --create-keyring /tmp/ceph.mon.keyring --gen-key -n mon. --cap mon 'allow *'
[root@mgr ~]# cat /tmp/ceph.mon.keyring
[mon.]
        key = AQCNluNea/3/MBAAj+UhaoGnDZWTm9f8qWgnvQ==
        caps mon = "allow *"
[root@mgr ~]#

次にclient.adminユーザ名目で管理者権限を持つ「管理者キーリング」を作る

[root@mgr ~]# ceph-authtool --create-keyring /etc/ceph/ceph.client.admin.keyring --gen-key -n client.admin --cap mon 'allow *' --cap osd 'allow *' --cap mds 'allow *' --cap mgr 'allow *'
[root@mgr ~]# cat /etc/ceph/ceph.client.admin.keyring
[client.admin]
        key = AQAfl+Nely/9KBAAtAXOhK0O5JfL7+yA13EpCg==
        caps mds = "allow *"
        caps mgr = "allow *"
        caps mon = "allow *"
        caps osd = "allow *"
[root@mgr ~]#

っで作ったこの「管理者キーリング」をクラスターの「キーリング」に加える

[root@mgr ~]# ceph-authtool /tmp/ceph.mon.keyring --import-keyring /etc/ceph/ceph.client.admin.keyring
[root@mgr ~]# cat /tmp/ceph.mon.keyring
[mon.]
        key = AQCNluNea/3/MBAAj+UhaoGnDZWTm9f8qWgnvQ==
        caps mon = "allow *"
[client.admin]
        key = AQAfl+Nely/9KBAAtAXOhK0O5JfL7+yA13EpCg==
        caps mds = "allow *"
        caps mgr = "allow *"
        caps mon = "allow *"
        caps osd = "allow *"
 
[root@mgr ~]#

その後に「モニターマップ」を作る

[root@mgr ~]# monmaptool --create --add mgr 192.168.0.47 --fsid 95f5eb4a-2ea2-4539-b0a3-bda3b6358ba5 /tmp/monmap
monmaptool: monmap file /tmp/monmap
monmaptool: set fsid to 95f5eb4a-2ea2-4539-b0a3-bda3b6358ba5
monmaptool: writing epoch 0 to /tmp/monmap (1 monitors)
[root@-mgr ~]#

準備できた「キーリング」と「モニターマップ」をモニターデーモンに組み込みます

[root@mgr ~]# chown ceph:ceph /tmp/ceph.mon.keyring
[root@mgr ~]# sudo -u ceph mkdir /var/lib/ceph/mon/ceph-mgr
[root@mgr ~]# sudo -u ceph ceph-mon --cluster ceph --mkfs -i mgr --monmap /tmp/monmap --keyring /tmp/ceph.mon.keyring
[root@mgr ~]# touch /var/lib/ceph/mon/ceph-mgr/done

このceph-monの実行で下記のように新たなファイルが用意される

[root@mgr ~]# ls -lR /var/lib/ceph/mon/ceph-mgr/
/var/lib/ceph/mon/ceph-mgr/:
total 8
-rw-r--r--. 1 root root   0 Feb  6 03:01 done
-rw-------. 1 ceph ceph  77 Feb  6 02:59 keyring
-rw-------. 1 ceph ceph   8 Feb  6 02:59 kv_backend
drwxr-xr-x. 2 ceph ceph 112 Feb  6 02:59 store.db
 
/var/lib/ceph/mon/ceph-mgr/store.db:
total 24
-rw-------. 1 ceph ceph  606 Feb  6 02:59 000003.log
-rw-------. 1 ceph ceph   16 Feb  6 02:59 CURRENT
-rw-------. 1 ceph ceph   37 Feb  6 02:59 IDENTITY
-rw-r--r--. 1 ceph ceph    0 Feb  6 02:59 LOCK
-rw-------. 1 ceph ceph   13 Feb  6 02:59 MANIFEST-000001
-rw-------. 1 ceph ceph 4944 Feb  6 02:59 OPTIONS-000005
[root@mgr ~]#

これでまrootの権限で行っていたので関連ファイルの所有者をcephに戻します

[root@mgr ~]# chown -R ceph:ceph /var/lib/ceph/mon
[root@mgr ~]# chown -R ceph:ceph /var/log/ceph/
[root@mgr ~]# chown -R ceph:ceph /var/run/ceph/
[root@mgr ~]# chown -R ceph:ceph /etc/ceph/ceph.client.admin.keyring
[root@mgr ~]# chown -R ceph:ceph /etc/ceph/ceph.conf
[root@mgr ~]# chown -R ceph:ceph /etc/ceph/rbdmap

っでモニターデーモンを起動します

[root@mgr ~]# systemctl enable ceph-mon@mgr.service
[root@mgr ~]# systemctl start ceph-mon@mgr.service

もしエラーが発生したら調整後「systemctl reset-failed ceph-mon@mgr.service」を実施してから起動させます

動作確認

[root@mgr ~]# ceph -s
  cluster:
    id:     95f5eb4a-2ea2-4539-b0a3-bda3b6358ba5
    health: HEALTH_OK
 
  services:
    mon: 1 daemons, quorum mgr (age 2m)
    mgr: no daemons active
    osd: 0 osds: 0 up, 0 in
 
  data:
    pools:   0 pools, 0 pgs
    objects: 0 objects, 0 B
    usage:   0 B used, 0 B / 0 B avail
    pgs:
 
[root@mgr ~]#

もしcluster欄で「1 monitors have not enabled msgr2」と表記されていたら

[root@mgr ~]# ceph mon enable-msgr2
[root@mgr ~]# systemctl restart ceph-mon@mgr.service

とします

Monitorを追加する

初回の/etc/ceph/ceph.confに全てのMonitorを登録してもいいのですが、
後に追加の事もあり得るのでその方法を示す.

参照先https://docs.ceph.com/en/latest/rados/operations/add-or-rm-mons/
はじめに初期のMonitor(mgr)の/etc/ceph/ceph.confと/etc/ceph/ceph.client.admin.keyringを追加Monitor(mon1)にコピーします

[root@mgr ~]# scp /etc/ceph/ceph.conf                 root@mon1:/etc/ceph/ceph.conf
[root@mgr ~]# scp /etc/ceph/ceph.client.admin.keyring root@mon1:/etc/ceph/ceph.client.admin.keyring

コピー後、追加するMonitorノードにて下記を実行します

ssh -l root mon1
 
 
chown ceph:ceph /etc/ceph/*
sudo -u ceph mkdir /var/lib/ceph/mon/ceph-mon1
ceph auth get mon. -o /tmp/key-filename
ceph mon getmap -o /tmp/map-filename
 
sudo -u ceph ceph-mon -i mon1 --mkfs --monmap /tmp/map-filename --keyring /tmp/key-filename
 
sudo -u ceph ceph mon add mon1 192.168.0.112                 #runtimeとしてmon1(192.168.0.112)をMonitorとする
sudo -u ceph ceph-mon -i mon1 --public-addr 192.168.0.112    #Monitorデーモンを起動します

同じように mon2 にもMonitorを導入します

[root@mgr ~]# scp /etc/ceph/ceph.conf                 root@mon2:/etc/ceph/ceph.conf
[root@mgr ~]# scp /etc/ceph/ceph.client.admin.keyring root@mon2:/etc/ceph/ceph.client.admin.keyring

その後上記と同じように設定します

ssh -l root mon2
 
 
chown ceph:ceph /etc/ceph/*
sudo -u ceph mkdir /var/lib/ceph/mon/ceph-mon2
ceph auth get mon. -o /tmp/key-filename
ceph mon getmap -o /tmp/map-filename
 
sudo -u ceph ceph-mon -i mon2 --mkfs --monmap /tmp/map-filename --keyring /tmp/key-filename
 
sudo -u ceph ceph mon add mon2 192.168.0.113                 #runtimeとしてmon2(192.168.0.113)をMonitorとする
sudo -u ceph ceph-mon -i mon2 --public-addr 192.168.0.113    #Monitorデーモンを起動します

このあと、どのMonitorでもいいのだが、「ceph -s」とすると下記のようになる

[root@mgr ~]# ceph -s
  cluster:
    id:     95f5eb4a-2ea2-4539-b0a3-bda3b6358ba5
    health: HEALTH_OK
 
  services:
    mon: 3 daemons, quorum mgr,mon1,mon2 (age 3s)     <--- 3つ動いている
    mgr: no daemons active
    osd: 0 osds: 0 up, 0 in
 
  data:
    pools:   0 pools, 0 pgs
    objects: 0 objects, 0 B
    usage:   0 B used, 0 B / 0 B avail
    pgs:
 
[root@mgr ~]#

そして全てのMonitorノードの /etc/ceph/ceph.confを書き換える

--- /etc/ceph/ceph.conf.orig    2021-02-06 03:49:25.338101858 +0900
+++ /etc/ceph/ceph.conf 2021-02-06 03:51:04.901730031 +0900
@@ -1,4 +1,14 @@
 [global]
 fsid = 95f5eb4a-2ea2-4539-b0a3-bda3b6358ba5
-mon initial members = mgr
-mon host = 192.168.0.47
+mon initial members = mgr,mon1,mon2
+mon host = 192.168.0.47,192.168.0.112,192.168.0.113
+
+[mon.mgr]
+host = mgr
+addr = 192.168.0.47
+[mon.mon1]
+host = mon1
+addr = 192.168.0.112
+[mon.mon2]
+host = mon2
+addr = 192.168.0.113

留意
一度Monitorとして追加登録したら、そのMonitorを/etc/ceph/ceph.confに登録すること。
それをしないでMonitoを再起動するとcephにアクセスできなくなる
修正方法はこちらhttps://docs.ceph.com/en/latest/rados/operations/add-or-rm-mons/#removing-monitors-from-an-unhealthy-cluster

systemctl stop ceph-mon@mgr
sudo -u ceph ceph-mon -i mgr --extract-monmap /tmp/monmap
sudo -u ceph monmaptool /tmp/monmap --rm mon1
sudo -u ceph ceph-mon -i a --inject-monmap /tmp/monmap
systemctl start ceph-mon@mgr

トップ   編集 添付 複製 名前変更     ヘルプ   最終更新のRSS
Last-modified: 2021-03-06 (土) 16:45:44 (42d)