Ceph è una piattaforma di archiviazione open source, offre prestazioni elevate, affidabilità e scalabilità. È un sistema di archiviazione distribuito gratuito che fornisce un'interfaccia per l'archiviazione a livello di file, blocchi e oggetti e può funzionare senza un singolo punto di errore.
In questo tutorial, ti guiderò a installare e creare un cluster Ceph sul server Ubuntu 16.04. Un cluster Ceph è costituito da questi componenti:
- OSD Ceph (ceph-osd) - Gestisce l'archiviazione dei dati, la replica dei dati e il ripristino. Un cluster Ceph necessita di almeno due server OSD Ceph. Useremo tre server Ubuntu 16.04 in questa configurazione.
- Monitor Ceph (ceph-mon) - Monitora lo stato del cluster ed esegue la mappa OSD e la mappa CRUSH. Useremo un server qui.
- Server di metadati Ceph (ceph-mds) - questo è necessario se vuoi usare Ceph come File System.
Prerequisiti
- 6 nodi server con installato il server Ubuntu 16.04
- Privilegi di root su tutti i nodi
Userò la seguente configurazione hostname/IP:
nome host Indirizzo IP
Ceph-Admin 10.0.15.10
MON1 10.0.15.11
OSD1 10.0.15.21
OSD2 10.0.15.22
OSD3 10.0.15.23
cliente 15.10.15
Passaggio 1 - Configura tutti i nodi
In questo passaggio configureremo tutti e 6 i nodi per prepararli all'installazione del software Ceph Cluster. Quindi devi seguire ed eseguire i comandi seguenti su tutti i nodi. E assicurati che ssh-server sia installato su tutti i nodi.
Crea l'utente Ceph
Crea un nuovo utente chiamato 'cephuser ' su tutti i nodi.
useradd -m -s /bin/bash cephuser
passwd cephuser
Dopo aver creato il nuovo utente, dobbiamo configurare cephuser per privilegi sudo senza password. Ciò significa che 'cephuser' può essere eseguito e ottenere i privilegi sudo senza dover prima inserire una password.
Esegui i comandi seguenti per ottenerlo.
echo "cephuser ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/cephuser
chmod 0440 /etc/sudoers.d/cephuser
sed -i s'/Defaults requiretty/#Defaults requiretty'/g /etc/sudoers
Installa e configura NTP
Installa NTP per sincronizzare data e ora su tutti i nodi. Eseguire il comando ntpdate per impostare la data e l'ora tramite NTP. Utilizzeremo i server NTP del pool statunitense. Quindi avvia e abilita l'esecuzione del server NTP all'avvio.
sudo apt-get install -y ntp ntpdate ntp-doc
ntpdate 0.us.pool.ntp.org
hwclock --systohc
systemctl enable ntp
systemctl start ntp
Installa Open-vm-tools
Se stai eseguendo tutti i nodi all'interno di VMware, devi installare questa utilità di virtualizzazione.
sudo apt-get install -y open-vm-tools
Installa Python e parti
In questo tutorial, abbiamo bisogno di pacchetti Python per creare il ceph-cluster. Installa python e python-pip.
sudo apt-get install -y python python-pip parted
Configura il file host
Modifica il file hosts su tutti i nodi con vim editor.
vim /etc/hosts
Incolla la configurazione di seguito:
10.0.15.10 ceph-admin
10.0.15.11 mon1
10.0.15.21 ceph-osd1
10.0.15.22 ceph-osd2
10.0.15.23 ceph-osd3
10.0.15.15 ceph-client
Salva il file hosts ed esci dall'editor vim.
Ora puoi provare a eseguire il ping tra i nomi host del server per testare la connettività di rete.
ping -c 5 mon1
Passaggio 2:configurazione del server SSH
In questo passaggio, configureremo il nodo ceph-admin . Il nodo admin viene utilizzato per configurare il nodo monitor e i nodi OSD. Accedi al nodo ceph-admin e accedi a 'cephuser '.
ssh [email protected]
su - cephuser
Il nodo admin viene utilizzato per installare e configurare tutti i nodi del cluster, quindi l'utente sul nodo ceph-admin deve disporre dei privilegi per connettersi a tutti i nodi senza una password. Dobbiamo configurare l'accesso SSH senza password per 'cephuser' sul nodo 'ceph-admin'.
Genera le chiavi ssh per 'cephuser '.
ssh-keygen
Lascia la passphrase vuota/vuota.
Quindi, crea un file di configurazione per la configurazione ssh.
vim ~/.ssh/config
Incolla la configurazione di seguito:
Host ceph-admin
Hostname ceph-admin
User cephuser
Host mon1
Hostname mon1
User cephuser
Host ceph-osd1
Hostname ceph-osd1
User cephuser
Host ceph-osd2
Hostname ceph-osd2
User cephuser
Host ceph-osd3
Hostname ceph-osd3
User cephuser
Host ceph-client
Hostname ceph-client
User cephuser
Salva il file ed esci da vim.
Cambia l'autorizzazione del file di configurazione in 644.
chmod 644 ~/.ssh/config
Ora aggiungi la chiave a tutti i nodi con il comando ssh-copy-id.
ssh-keyscan ceph-osd1 ceph-osd2 ceph-osd3 ceph-client mon1 >> ~/.ssh/known_hosts
ssh-copy-id ceph-osd1
ssh-copy-id ceph-osd2
ssh-copy-id ceph-osd3
ssh-copy-id mon1
Digita la tua password cephuser quando richiesto.
Ora prova ad accedere al server osd1 dal nodo ceph-admin per verificare se l'accesso senza password funziona.
ssh ceph-osd1
Passaggio 3:configura il firewall di Ubuntu
Per motivi di sicurezza, dobbiamo attivare il firewall sui server. Preferibilmente utilizziamo Ufw (Uncomplicated Firewall), il firewall predefinito di Ubuntu, per proteggere il sistema. In questo passaggio, abiliteremo ufw su tutti i nodi, quindi apriremo le porte necessarie per ceph-admin, ceph-mon e ceph-osd.
Accedi al nodo ceph-admin e installa i pacchetti ufw.
ssh [email protected]
sudo apt-get install -y ufw
Apri la porta 80, 2003 e 4505-4506, quindi ricarica il firewalld.
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 2003/tcp
sudo ufw allow 4505:4506/tcp
Avvia e abilita ufw per l'avvio all'avvio.
sudo ufw enable
Dal nodo ceph-admin, accedi al nodo monitor 'mon1' e installa ufw.
ssh mon1
sudo apt-get install -y ufw
Apri le porte per il nodo di monitoraggio ceph e avvia ufw.
sudo ufw allow 22/tcp
sudo ufw allow 6789/tcp
sudo ufw enable
Infine, apri queste porte su ciascun nodo OSD:ceph-osd1, ceph-osd2 e ceph-osd3 - porta 6800-7300.
Accedi a ciascuno dei nodi ceph-osd da ceph-admin e installa ufw.
ssh ceph-osd1
sudo apt-get install -y ufw
Apri le porte sui nodi osd e ricarica il firewalld.
sudo ufw allow 22/tcp
sudo ufw allow 6800:7300/tcp
sudo ufw enable
La configurazione del firewall ufw è terminata.
Passaggio 4:configurazione dei nodi Ceph OSD
In questo tutorial abbiamo 3 nodi OSD, ognuno di questi nodi ha due partizioni del disco rigido.
- /dev/sda per la partizione di root
- /dev/sdb è una partizione vuota - 20 GB
Useremo /dev/sdb per il disco ceph. Dal nodo ceph-admin, accedi a tutti i nodi OSD e formatta la partizione /dev/sdb con XFS sistema di file.
ssh ceph-osd1
ssh ceph-osd2
ssh ceph-osd3
Controlla lo schema delle partizioni con il comando fdisk.
sudo fdisk -l /dev/sdb
Formatta la partizione /dev/sdb con un filesystem XFS e con una tabella delle partizioni GPT usando il comando parted.
sudo parted -s /dev/sdb mklabel gpt mkpart primary xfs 0% 100%
Quindi, formatta la partizione in formato XFS con il comando mkfs.
sudo mkfs.xfs -f /dev/sdb
Ora controlla la partizione e vedrai una partizione XFS /dev/sdb.
sudo fdisk -s /dev/sdb
sudo blkid -o value -s TYPE /dev/sdb
Fase 5:costruisci il cluster Ceph
In questo passaggio, installeremo Ceph su tutti i nodi da ceph-admin. Per iniziare, accedi al nodo ceph-admin.
ssh [email protected]
su - cephuser
Installa ceph-deploy sul nodo ceph-admin
Nel primo passaggio abbiamo già installato python e python-pip sul sistema. Ora dobbiamo installare lo strumento di distribuzione Ceph 'ceph-deploy ' dal repository Python di pypi.
Installa ceph-deploy sul nodo ceph-admin con il comando pip.
sudo pip install ceph-deploy
Nota:assicurati che tutti i nodi siano aggiornati.
Dopo aver installato lo strumento ceph-deploy, creare una nuova directory per la configurazione del cluster Ceph.
Crea un nuovo cluster
Crea una nuova directory del cluster.
mkdir cluster
cd cluster/
Quindi, crea un nuovo cluster con 'ceph-deploy ' comando definendo il nodo monitor 'mon1 '.
ceph-deploy new mon1
Il comando genererà il file di configurazione del cluster Ceph 'ceph.conf' nella directory del cluster.
Modifica il file ceph.conf con vim.
vim ceph.conf
Sotto il blocco [globale], incolla la configurazione di seguito.
# Your network address
public network = 10.0.15.0/24
osd pool default size = 2
Salva il file ed esci dall'editor.
Installa Ceph su tutti i nodi
Ora installa Ceph su tutti i nodi dal nodo ceph-admin con un solo comando.
ceph-deploy install ceph-admin ceph-osd1 ceph-osd2 ceph-osd3 mon1
Il comando installerà automaticamente Ceph su tutti i nodi:mon1, osd1-3 e ceph-admin - L'installazione richiederà del tempo.
Ora distribuisci il nodo di monitoraggio sul nodo mon1.
ceph-deploy mon create-initial
Il comando creerà una chiave monitor, controlla la chiave con questo comando ceph.
ceph-deploy gatherkeys mon1
Aggiunta di OSDS al cluster
Dopo che Ceph è stato installato su tutti i nodi, ora possiamo aggiungere i demoni OSD al cluster. I demoni OSD creeranno i dati e la partizione del journal sul disco /dev/sdb.
Controlla il disco disponibile /dev/sdb su tutti i nodi OSD.
ceph-deploy disk list ceph-osd1 ceph-osd2 ceph-osd3
Vedrai /dev/sdb con il formato XFS che abbiamo creato in precedenza.
Quindi, elimina le tabelle delle partizioni su tutti i nodi con l'opzione zap.
ceph-deploy disk zap ceph-osd1:/dev/sdb ceph-osd2:/dev/sdb ceph-osd3:/dev/sdb
Il comando cancellerà tutti i dati su /dev/sdb sui nodi Ceph OSD.
Ora prepara tutti i nodi OSD e assicurati che non ci siano errori nei risultati.
ceph-deploy osd prepare ceph-osd1:/dev/sdb ceph-osd2:/dev/sdb ceph-osd3:/dev/sdb
Quando nel risultato vedi che ceph-osd1-3 è pronto per l'uso con l'OSD, il comando ha avuto successo.
Attiva gli OSD con il comando seguente:
ceph-deploy osd activate ceph-osd1:/dev/sdb ceph-osd2:/dev/sdb ceph-osd3:/dev/sdb
Ora puoi controllare di nuovo il disco sdb sui nodi OSDS.
ceph-deploy disk list ceph-osd1 ceph-osd2 ceph-osd3
Il risultato è che /dev/sdb ora ha due partizioni:
- /dev/sdb1 - Dati Ceph
- /dev/sdb2 - Ceph Journal
Oppure lo controlli direttamente sul nodo OSD.
ssh ceph-osd1
sudo fdisk -l /dev/sdb
Quindi, distribuisci la chiave di gestione a tutti i nodi associati.
ceph-deploy admin ceph-admin mon1 ceph-osd1 ceph-osd2 ceph-osd3
Modifica l'autorizzazione del file chiave eseguendo il comando seguente su tutti i nodi.
sudo chmod 644 /etc/ceph/ceph.client.admin.keyring
Il Ceph Cluster su Ubuntu 16.04 è stato creato.
Fase 6 - Test di Ceph
Nel passaggio 4, abbiamo installato e creato un nuovo cluster Ceph e aggiunto nodi OSDS al cluster. Ora dovremmo testare il cluster per assicurarci che funzioni come previsto.
Dal nodo ceph-admin, accedi al server di monitoraggio Ceph 'mon1 '.
ssh mon1
Esegui il comando di seguito per verificare lo stato del cluster.
sudo ceph health
Ora controlla lo stato del cluster.
sudo ceph -s
Puoi vedere i risultati di seguito:
Assicurati che lo stato di Ceph sia OK e c'è un nodo di monitoraggio 'mon1 ' con indirizzo IP '10.0.15.11 '. Sono presenti 3 OSD i server e tutti sono attivi e in esecuzione e dovrebbe esserci uno spazio su disco disponibile di 45 GB - Partizione OSD Ceph Data 3x15GB.
Costruiamo con successo un nuovo Ceph Cluster su Ubuntu 16.04.