[1] Konfiguracja klastra #1

13 lipca 2020 Wyłączono przez Adam [zicherka] Nogły

Zainstalujemy 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 Octopus na wszystkich węzłach.

[root@node1 ~]# for NODE in node1 node2 node3 do ssh $NODE "dnf -y install centos-release-ceph-octopus epel-release; dnf -y install ceph" done

[3] Skonfiguruj [Monitor Daemon], [Manager Daemon] na Admin Node.

[root@node1 ~]# uuidgen
6387fcab-70ed-43b4-9b96-8903250b420c

# stwórz nowy plik konfiguracyjny
# nazwa pliku => (NazwaKlastra).conf
# ustaw nazwę klastra [ceph] (domyślnie); w tym przykładzie [ceph.conf]
[root@node1 ~]# mcedit /etc/ceph/ceph.conf

# wpisz sieć wewnętrzną (do komunikacji między węzłami) klastra
cluster network = 192.168.1.0/24
# wpisz sieć publiczną
public network = 192.168.1.0/24
# wpisz wygenerowany wcześniej UUID
fsid = 6387fcab-70ed-43b4-9b96-8903250b420c
# wpisz adres IP Monitor Daemon'a
mon host = 192.168.1.1
# wpisz nazwę Monitor Deamon'a
mon initial members = node1
osd pool default crush rule = -1

# mon.[NodeName]
[mon.node]
# wpisz nazwę hosta, który będzie Monitor Deamon'em
host = node1
# wpisz adres IP hosta, który będzie Monitor Deamon'em
mon addr = 192.168.1.1
# zezwól na kasowanie puli
mon allow pool delete = true

# stwórz klucz prywatny do monitoringu 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

# stwórz klucz prywatny do administrowania klastrem
[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

# stwórz klucz bootstrap
[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 stworzone 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: set fsid to 6387fcab-70ed-43b4-9b96-8903250b420c
monmaptool: writing epoch 0 to /etc/ceph/monmap (1 monitors)

# stwórz katalog dla Monitor Daemon'a
# nazwa katalogu => (NazwaKlastra)-(NazwaWęzła)
[root@node1 ~]# mkdir /var/lib/ceph/mon/ceph-node1

# skojarz klucze i mapę monitorowania do Monitor Daemon'a
# --cluster (NazwaKlastra)
[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ł autoskalowania
[root@node1 ~]# ceph mgr module enable pg_autoscaler

# stwórz katalog dla Manager Deamon'a
# nazwa katalogu => (NazwaKlastra)-(NazwaWęzła)
[root@node1 ~]# mkdir /var/lib/ceph/mgr/ceph-node1

# utwórz klucz autoryzacji
[root@node1 ~]# ceph auth get-or-create mgr.$NODENAME mon 'allow profile mgr' osd 'allow *' mds 'allow *'
[mgr.node1]
key = AQCFwAxfCw65DRAA9tM4+SrOsQXo8uIHS5HPKg==

[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: 8a31deb0-114c-4639-8050-981f47e5403c
health: HEALTH_WARN
OSD count 0 < osd_pool_default_size 3

services:
mon: 1 daemons, quorum node1 (age 4m)
mgr: node1(active, since 42s)
osd: 0 osds: 0 up, 0 in

data:
pools: 1 pools, 1 pgs
objects: 0 objects, 0 B
usage: 0 B used, 0 B / 0 B avail
pgs: 100.000% pgs unknown
1 unknown