Ceph è gratuito e open source spazio di archiviazione distribuito soluzione attraverso la quale possiamo fornire e gestire facilmente l'archiviazione a blocchi, l'archiviazione di oggetti e l'archiviazione di file. La soluzione di archiviazione Ceph può essere utilizzata nell'infrastruttura IT tradizionale per fornire lo storage centralizzato, oltre a ciò è stata utilizzata anche nel cloud privato (OpenStack &Cloudstack ). In Red Hat OpenStack Ceph è usato come backend di cenere.
In questo articolo, dimostreremo come installare e configurare Ceph Cluster(Mimic) sui server CentOS 7.
In Ceph Cluster i seguenti sono i componenti principali:
- Monitor (ceph-mon) :come suggerisce il nome, i nodi di monitoraggio ceph tengono d'occhio lo stato del cluster, la mappa OSD e la mappa Crush
- OSD ( Ceph-osd) :Questi sono i nodi che fanno parte del cluster e forniscono funzionalità di archiviazione dati, replica dei dati e ripristino. L'OSD fornisce anche informazioni per monitorare i nodi.
- MDS (Ceph-mds) :È un server di metadati ceph e memorizza i metadati dei file system ceph come l'archiviazione a blocchi.
- Nodo di distribuzione Ceph :Viene utilizzato per distribuire il cluster Ceph, viene anche chiamato Ceph-admin o Ceph-utility node.
Dettagli sulla configurazione del mio laboratorio :
- Nodo di distribuzione Ceph :(Minimo CentOS 7, RAM:4 GB, vCPU:2, IP:192.168.1.30, Nome host:ceph-controller)
- OSD o calcolo Ceph 1 :(Minimo CentOS 7, RAM:10 GB, vCPU:4, IP:192.168.1.31, Nome host:ceph-compute01)
- OSD o Ceph Compute 2 :(Minimo CentOS 7, RAM:10 GB, vCPU:4, IP:192.168.1.32, Nome host:ceph-compute02)
- Monitoraggio Ceph :(Minimo CentOS 7, RAM:10 GB, vCPU:4, IP:192.168.1.33, Nome host:ceph-monitor)
Nota: In tutti i nodi abbiamo collegato due nic (eth0 ð1), su eth0 IP dalla VLAN è assegnato 192.168.1.0/24. Su eth1 viene assegnato l'IP dalla VLAN 192.168.122.0/24 che fornirà l'accesso a Internet.
Passiamo ai passaggi di installazione e configurazione:
Passaggio:1) Aggiorna il file /etc/hosts, NTP, Crea utente e disabilita SELinux su tutti i nodi
Aggiungi le seguenti righe nel file /etc/hosts di tutti i nodi in modo da poter accedere a questi nodi anche tramite il loro nome host.
192.168.1.30 ceph-controller 192.168.1.31 ceph-compute01 192.168.1.32 ceph-compute02 192.168.1.33 ceph-monitor
Configura tutti i nodi Ceph con NTP Server in modo che tutti i nodi abbiano lo stesso tempo e non ci siano derive temporali,
~]# yum install ntp ntpdate ntp-doc -y ~]# ntpdate europe.pool.ntp.org ~]# systemctl start ntpd ~]# systemctl enable ntpd
Crea un utente con il nome "cepham ” su tutti i nodi e useremo questo utente per la distribuzione e la configurazione ceph
~]# useradd cephadm && echo "[email protected]#" | passwd --stdin cephadm
Ora assegna i diritti di amministratore all'utente cephadm tramite sudo, esegui i seguenti comandi,
~]# echo "cephadm ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/cephadm ~]# chmod 0440 /etc/sudoers.d/cephadm
Disabilita SELinux su tutti i nodi usando il comando sed, anche il sito ufficiale ceph consiglia di disabilitare SELinux ,
~]# sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
Riavvia ora tutti i nodi usando il comando sotto,
~]# reboot
Fase:2 Configura l'autenticazione senza password dall'amministratore Ceph a tutti i nodi OSD e monitor
Dal nodo Ceph-admin utilizzeremo l'utilità nota come "ceph-deploy “, accederà a ciascun nodo ceph e installerà il pacchetto ceph ed eseguirà tutte le configurazioni richieste. Durante l'accesso al nodo Ceph non ci verrà chiesto di inserire le credenziali dei nodi ceph, ecco perché abbiamo richiesto di configurare l'autenticazione senza password o basata su chiavi dal nodo ceph-admin a tutti i nodi ceph.
Esegui i seguenti comandi come utente cephadm dal nodo Ceph-admin (ceph-controller). Lascia la passphrase vuota.
[[email protected] ~]$ ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/home/cephadm/.ssh/id_rsa): Created directory '/home/cephadm/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/cephadm/.ssh/id_rsa. Your public key has been saved in /home/cephadm/.ssh/id_rsa.pub. The key fingerprint is: 93:01:16:8a:67:34:2d:04:17:20:94:ad:0a:58:4f:8a [email protected] The key's randomart image is: +--[ RSA 2048]----+ |o.=+*o+. | | o.=o+.. | |.oo++. . | |E..o. o | |o S | |. . | | | | | | | +-----------------+ [[email protected] ~]$
Ora copia le chiavi su tutti i nodi ceph usando il comando ssh-copy-id
[[email protected] ~]$ ssh-copy-id [email protected] [[email protected] ~]$ ssh-copy-id [email protected] [[email protected] ~]$ ssh-copy-id [email protected]
Si consiglia di aggiungere quanto segue nel file “~/.ssh/config”
[[email protected] ~]$ vi ~/.ssh/config Host ceph-compute01 Hostname ceph-compute01 User cephadm Host ceph-compute02 Hostname ceph-compute02 User cephadm Host ceph-monitor Hostname ceph-monitor User cephadm
Salva ed esci dal file.
[email protected] ~]$ chmod 644 ~/.ssh/config [[email protected] ~]$
Nota: Nel comando precedente sostituisci il nome utente e il nome host adatti alla tua configurazione.
Passaggio:3) Configura le regole del firewall per OSD e monitora i nodi
Nel caso in cui il firewall del sistema operativo sia abilitato e in esecuzione su tutti i nodi ceph, è necessario configurare le seguenti regole del firewall, altrimenti puoi saltare questo passaggio.
Sul nodo Ceph-admin, configura le seguenti regole del firewall usando i comandi sotto,
[[email protected] ~]$ sudo firewall-cmd --zone=public --add-port=80/tcp --permanent success [[email protected] ~]$ sudo firewall-cmd --zone=public --add-port=2003/tcp --permanent success [[email protected] ~]$ sudo firewall-cmd --zone=public --add-port=4505-4506/tcp --permanent success [[email protected] ~]$ sudo firewall-cmd --reload success [[email protected] ~]$
Accedere ai nodi di elaborazione OSD o Ceph e configurare le regole del firewall utilizzando il comando firewall-cmd,
[[email protected] ~]$ sudo firewall-cmd --zone=public --add-port=6800-7300/tcp --permanent success [[email protected] ~]$ sudo firewall-cmd --reload success [[email protected] ~]$ [[email protected] ~]$ sudo firewall-cmd --zone=public --add-port=6800-7300/tcp --permanent success [[email protected] ~]$ sudo firewall-cmd --reload success [[email protected] ~]$
Accedi al nodo Ceph Monitor ed esegui il comando firewalld per configurare le regole del firewall,
[[email protected] ~]$ sudo firewall-cmd --zone=public --add-port=6789/tcp --permanent success [[email protected] ~]$ sudo firewall-cmd --reload success [[email protected] ~]$
Fase:4) Installa e configura Ceph Cluster dal nodo Ceph Admin
Accedi al tuo nodo Ceph-admin come utente "cephadm" e abilita l'ultima versione del repository Ceph yum. Al momento della stesura di questo articolo, Mimic è l'ultima versione di Ceph,
[[email protected] ~]$ sudo rpm -Uvh https://download.ceph.com/rpm-mimic/el7/noarch/ceph-release-1-1.el7.noarch.rpm
Abilita anche il repository EPEL,
[[email protected] ~]$ sudo yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
Installa l'utilità Ceph-deploy utilizzando il seguente comando yum,
[[email protected] ~]$ sudo yum update -y && sudo yum install ceph-deploy python2-pip -y
Crea una directory con il nome "ceph_cluster ", questa directory avrà tutte le configurazioni del cluster
[[email protected] ~]$ mkdir ceph_cluster [[email protected] ~]$ cd ceph_cluster/ [[email protected] ceph_cluster]$
Ora genera la configurazione del cluster eseguendo l'utilità ceph-deploy sul nodo ceph-admin, stiamo registrando il nodo ceph-monitor come nodo monitor nel cluster ceph. L'utilità Ceph-deploy genererà anche "ceph.conf ” nella directory di lavoro corrente.
[[email protected] ceph_cluster]$ ceph-deploy new ceph-monitor
L'output del comando precedente sarebbe qualcosa di simile al seguente:
Aggiorna l'indirizzo di rete (rete pubblica) ai sensi della direttiva globale inceph.conf file, Qui Rete pubblica è la rete su cui i nodi Ceph comunicheranno tra loro e anche il client esterno utilizzerà questa rete per accedere allo storage ceph,
[[email protected] ceph_cluster]$ vi ceph.conf [global] fsid = b1e269f0-03ea-4545-8ffd-4e0f79350900 mon_initial_members = ceph-monitor mon_host = 192.168.1.33 auth_cluster_required = cephx auth_service_required = cephx auth_client_required = cephx public network = 192.168.1.0/24
Salva ed esci dal file.
Ora installa ceph su tutti i nodi dal nodo ceph-admin, esegui "ceph-deploy install comando ”
[[email protected] ~]$ ceph-deploy install ceph-controller ceph-compute01 ceph-compute02 ceph-monitor
Il comando sopra installerà ceph insieme ad altre dipendenze automaticamente su tutti i nodi, potrebbe volerci del tempo a seconda della velocità di Internet sui nodi ceph.
Output di "ceph-deploy install ” l'output del comando sarebbe simile al seguente:
Esegui "ceph-deploy mon create-initial ” comando dal nodo ceph-admin, distribuirà i monitor iniziali e raccoglierà le chiavi.
[[email protected] ~]$ cd ceph_cluster/ [[email protected] ceph_cluster]$ ceph-deploy mon create-initial
Esegui "ceph-deploy admin ” comando per copiare il file di configurazione dal nodo ceph-admin a tutti i nodi ceph in modo da poter utilizzare il comando ceph cli senza specificare l'indirizzo del monitor.
[[email protected] ceph_cluster]$ ceph-deploy admin ceph-controller ceph-compute01 ceph-compute02 ceph-monitor
Installa il demone Manager dal nodo Ceph-admin su Ceph Compute Nodes (OSD) utilizzando il comando seguente
[[email protected] ceph_cluster]$ ceph-deploy mgr create ceph-compute01 ceph-compute02
Passaggio:5) Aggiungi i dischi OSD al cluster
Nella mia configurazione ho collegato due dischi /dev/vdb &/dev/vdc su entrambi i nodi di calcolo, userò questi quattro dischi dai nodi di calcolo come disco OSD.
Verifichiamo se l'utilità ceph-deploy può vedere questi dischi o meno. Esegui l'"elenco di dischi ceph-deploy ” comando dal nodo ceph-admin,
[[email protected] ceph_cluster]$ ceph-deploy disk list ceph-compute01 ceph-compute02
Output del comando precedente:
Nota: Assicurati che questi dischi non vengano utilizzati da nessuna parte e non contengano dati
Per pulire ed eliminare i dati dai dischi, utilizzare i seguenti comandi,
[[email protected] ceph_cluster]$ ceph-deploy disk zap ceph-compute01 /dev/vdb [[email protected] ceph_cluster]$ ceph-deploy disk zap ceph-compute01 /dev/vdc [[email protected] ceph_cluster]$ ceph-deploy disk zap ceph-compute02 /dev/vdb [[email protected] ceph_cluster]$ ceph-deploy disk zap ceph-compute02 /dev/vdc
Ora contrassegna questi dischi come OSD usando i seguenti comandi
[[email protected] ceph_cluster]$ ceph-deploy osd create --data /dev/vdb ceph-compute01 [[email protected] ceph_cluster]$ ceph-deploy osd create --data /dev/vdc ceph-compute01 [[email protected] ceph_cluster]$ ceph-deploy osd create --data /dev/vdb ceph-compute02 [[email protected] ceph_cluster]$ ceph-deploy osd create --data /dev/vdc ceph-compute02
Fase:6) Verifica lo stato del cluster Ceph
Verifica lo stato del tuo cluster Ceph utilizzando "stato ceph ” &“ceph -s ", esegui questi comandi dal nodo monitor
[[email protected] ~]# ceph health HEALTH_OK [[email protected] ~]# [[email protected] ~]# ceph -s cluster: id: 4f41600b-1c5a-4628-a0fc-2d8e7c091aa7 health: HEALTH_OK services: mon: 1 daemons, quorum ceph-monitor mgr: ceph-compute01(active), standbys: ceph-compute02 osd: 4 osds: 4 up, 4 in data: pools: 0 pools, 0 pgs objects: 0 objects, 0 B usage: 4.0 GiB used, 76 GiB / 80 GiB avail pgs: [[email protected] ~]#
Come possiamo vedere nell'output sopra, lo stato del cluster ceph è OK e abbiamo 4 OSD, tutti questi OSD sono attivi e attivi, a parte questo possiamo vedere che hanno 80 GB di spazio su disco disponibile nel nostro cluster.
Questo conferma che abbiamo installato e configurato correttamente Ceph Cluster sul sistema CentOS 7, se questi passaggi ti aiutano a installare ceph nel tuo ambiente, condividi il tuo feedback e commenti.
Nel prossimo articolo discuteremo come assegnare lo storage a blocchi dal cluster Ceph ai client e vedremo come il client può accedere allo storage a blocchi.