[1] Ceph Nautilus – konfiguracja klastra #1
6 lipca 2020Zainstalujemy i skonfigurujemy teraz rozproszony system plików CEPH, aby skonfigurować klaster przechowywania.
W tym przykładzie skonfigurujemy klaster Ceph z użyciem 3 węzłów, wykorzystane zostaną do przechowywania wolne urządzenia blokowe – tutaj [/dev/sdb].
Schemat sieci przedstawia się następująco.
[1] Wygeneruj klucze SSH na węźle [Monitor Deamon] (tutaj nazywanym Admin Node) i ustaw je dla pozostałych węzłów. Klucze wygeneruj bez haseł, jako [root].
Jeśli używasz innego konta, może być konieczne dodatkowe skonfigurowanie Sudo.
Jeśli ustawiłeś klucze SSH z hasłem, może być konieczne ustawienie SSH Agent’a.
[root@node1 ~]# ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): # Enter Created directory '/root/.ssh'. Enter passphrase (empty for no passphrase): # Enter Enter same passphrase again: # Enter Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The key fingerprint is: SHA256:VOt+ZipBBKJVeEhkPaG9uNUUs1ANLHt4SCsROGDDUYs root@node1.zicher.lab The key's randomart image is: ... ... [root@node1 ~]# mcedit ~/.ssh/config # stwórz nowy plik (zdefiniuj wszystkich użytkowników oraz hosty w klastrze) Host node1 Hostname node1.zicher.lab User root Host node2 Hostname node2.zicher.lab User root Host node3 Hostname node3.zicher.lab User root [root@node1 ~]# chmod 600 ~/.ssh/config [root@node1 ~]# ssh-copy-id node1 /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub" The authenticity of host 'node1.zicher.lab (192.168.1.1)' can't be established. ECDSA key fingerprint is SHA256:5I4Ah6HRJC/Hpvw9mnyqEY+8e56FT9jwR9dVLIqn9cM. Are you sure you want to continue connecting (yes/no/[fingerprint])? yes /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys root@node1.zicher.lab's password: # wpisz hasło root'a na node1 Number of key(s) added: 1 Now try logging into the machine, with: "ssh 'node1'" and check to make sure that only the key(s) you wanted were added. [root@node1 ~]# ssh-copy-id node2 /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub" The authenticity of host 'node2.zicher.lab (192.168.1.2)' can't be established. ECDSA key fingerprint is SHA256:5I4Ah6HRJC/Hpvw9mnyqEY+8e56FT9jwR9dVLIqn9cM. Are you sure you want to continue connecting (yes/no/[fingerprint])? yes /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys root@node2.zicher.lab's password: # wpisz hasło root'a na node1 Number of key(s) added: 1 Now try logging into the machine, with: "ssh 'node2'" and check to make sure that only the key(s) you wanted were added. [root@node1 ~]# ssh-copy-id node3 /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub" The authenticity of host 'node3.zicher.lab (192.168.1.3)' can't be established. ECDSA key fingerprint is SHA256:5I4Ah6HRJC/Hpvw9mnyqEY+8e56FT9jwR9dVLIqn9cM. Are you sure you want to continue connecting (yes/no/[fingerprint])? yes /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys root@node3.zicher.lab's password: # wpisz hasło root'a na node3 Number of key(s) added: 1 Now try logging into the machine, with: "ssh 'node3'" and check to make sure that only the key(s) you wanted were added.
[2] Zainstaluj Ceph na wszystkich węzłach, korzystając z [Admin Node].
[root@node1 ~]# for NODE in node1 node2 node3 do ssh $NODE "dnf -y install centos-release-ceph-nautilus; dnf -y install ceph" done
[3] Skonfiguruj [Monitor Daemon], [Manager Daemon] na [Admin Node}.
[root@node1 ~]# uuidgen f912f30f-1028-400c-8ee2-a440218b750e # stwórz nowy plik konfiguracyjny # nazwa pliku => (jakakolwiek nazwa klastra).conf # ustaw nazwę klastra [ceph] (default), w tym przykładzie => [ceph.conf] [root@node1 ~]# mcedit /etc/ceph/ceph.conf [global] # wpisz sieć klastra do monitorowania cluster network = 192.168.1.0/24 # wpisz sieć publiczną public network = 192.168.1.0/24 # wpisz UUID wygenerowany wcześniej fsid = f912f30f-1028-400c-8ee2-a440218b750e # wpisz IP od [Monitor Deamon] mon host = 192.168.1.1 # wpisz nazwę hosta [Monitor Deamon] mon initial members = node1 osd pool default crush rule = -1 # mon.(node name) [mon.node1] # wpisz hostname gdzie jest/będzie [Monitor Deamon] host = node1 # wpisz IP gdzie jest/będzie [Monitor Deamon] mon addr = 192.168.1.1 # zezwól na kasowanie puli/klastra mon allow pool delete = true # wygeneruj klucz prywatny do monitorowania klastra [root@node1 ~]# ceph-authtool --create-keyring /etc/ceph/ceph.mon.keyring --gen-key -n mon. --cap mon 'allow *' creating /etc/ceph/ceph.mon.keyring # wygeneruj klucz prywatny do administrowania klastra [root@node1 ~]# 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 *' creating /etc/ceph/ceph.client.admin.keyring # wygeneruj klucz dla bootstrap'a [root@node1 ~]# ceph-authtool --create-keyring /var/lib/ceph/bootstrap-osd/ceph.keyring --gen-key -n client.bootstrap-osd --cap mon 'profile bootstrap-osd' --cap mgr 'allow r' creating /var/lib/ceph/bootstrap-osd/ceph.keyring # zaimportuj wygenerowane klucze [root@node1 ~]# ceph-authtool /etc/ceph/ceph.mon.keyring --import-keyring /etc/ceph/ceph.client.admin.keyring importing contents of /etc/ceph/ceph.client.admin.keyring into /etc/ceph/ceph.mon.keyring [root@node1 ~]# ceph-authtool /etc/ceph/ceph.mon.keyring --import-keyring /var/lib/ceph/bootstrap-osd/ceph.keyring importing contents of /var/lib/ceph/bootstrap-osd/ceph.keyring into /etc/ceph/ceph.mon.keyring # wygeneruj mapę do monitorowania [root@node1 ~]# FSID=$(grep "^fsid" /etc/ceph/ceph.conf | awk {'print $NF'}) [root@node1 ~]# NODENAME=$(grep "^mon initial" /etc/ceph/ceph.conf | awk {'print $NF'}) [root@node1 ~]# NODEIP=$(grep "^mon host" /etc/ceph/ceph.conf | awk {'print $NF'}) [root@node1 ~]# monmaptool --create --add $NODENAME $NODEIP --fsid $FSID /etc/ceph/monmap monmaptool: monmap file /etc/ceph/monmap monmaptool: generated fsid cc4b4ee7-d5ec-4ed5-b39b-6a614b8bea0b monmaptool: writing epoch 0 to /etc/ceph/monmap (1 monitors) # stwórz katalog dla [Monitor Daemon] # nazwa katalogu => (Cluster Name)-(Node Name) [root@node1 ~]# mkdir /var/lib/ceph/mon/ceph-node1 # skojarz klucz i monmap'ę do [Monitor Deamon] # --cluster (Cluster Name) [root@node1 ~]# ceph-mon --cluster ceph --mkfs -i $NODENAME --monmap /etc/ceph/monmap --keyring /etc/ceph/ceph.mon.keyring [root@node1 ~]# chown ceph. /etc/ceph/ceph.* [root@node1 ~]# chown -R ceph. /var/lib/ceph/mon/ceph-node1 /var/lib/ceph/bootstrap-osd [root@node1 ~]# systemctl enable --now ceph-mon@$NODENAME Created symlink /etc/systemd/system/ceph-mon.target.wants/ceph-mon@node1.service → /usr/lib/systemd/system/ceph-mon@.service. # włącz protokół Messenger v2 [root@node1 ~]# ceph mon enable-msgr2 # włącz moduł automatycznego skalowania # jeśli wyskoczy błąd dodaj --force [root@node1 ~]# ceph mgr module enable pg_autoscaler # stwórz katalog dla Manager Deamon'a # nazwa katalogu => (Cluster Name)-(Node Name) [root@node1 ~]# mkdir /var/lib/ceph/mgr/ceph-node1 # stwórz klucz autoryzacji [root@node1 ~]# ceph auth get-or-create mgr.$NODENAME mon 'allow profile mgr' osd 'allow *' mds 'allow *' [mgr.node1] key = AQAIIgJfipYWFhAAidYVzByD6WCGWhXaQov9Rg== [root@node1 ~]# ceph auth get-or-create mgr.node1 > /etc/ceph/ceph.mgr.admin.keyring [root@node1 ~]# cp /etc/ceph/ceph.mgr.admin.keyring /var/lib/ceph/mgr/ceph-node1/keyring [root@node1 ~]# chown ceph. /etc/ceph/ceph.mgr.admin.keyring [root@node1 ~]# chown -R ceph. /var/lib/ceph/mgr/ceph-node1 [root@node1 ~]# systemctl enable --now ceph-mgr@$NODENAME Created symlink /etc/systemd/system/ceph-mgr.target.wants/ceph-mgr@node1.service → /usr/lib/systemd/system/ceph-mgr@.service.
[4] Na węźle Admin Node, jeśli pracuje Firewalld otwórz porty dla tej usługi.
[root@node1 ~]# firewall-cmd --add-service=ceph-mon --permanent success [root@node1 ~]# firewall-cmd --reload success
[5] Potwierdź status klastra. Jest OK jeżeli [Monitor Daemon] i [Manager Daemon] są włączone jak poniżej. Dla OSD (Object Storage Device) skonfigurujemy ustawienia w drugiej części, dlatego też nie jest problemem [HEALTH_WARN] w tym momencie.
[root@node1 ~]# ceph -s cluster: id: f912f30f-1028-400c-8ee2-a440218b750e health: HEALTH_WARN OSD count 0 < osd_pool_default_size 3 services: mon: 1 daemons, quorum node1 (age 2h) mgr: node1(active, since 3m) 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:
[…] [3] Aby skasować urządzenie blokowe lub pulę, ktore stworzyłeś/zamontowałeś – uruchom poniższą komendę. Aby móc skasować pulę, musisz ustawić [mon allow pool delete = true] na [Monitor Daemon] w czasie jego konfiguracji. […]
[…] [1] Skonfiguruj najpierw [Monitor Daemon] oraz [Manager Daemon]. […]