Ceph est une plate-forme de stockage open source, elle offre des performances, une fiabilité et une évolutivité élevées. Il s'agit d'un système de stockage distribué gratuit qui fournit une interface pour le stockage au niveau des objets, des blocs et des fichiers et peut fonctionner sans un seul point de défaillance.
Dans ce tutoriel, je vais vous guider pour installer et construire un cluster Ceph sur le serveur Ubuntu 16.04. Un cluster Ceph comprend ces composants :
- OSD Ceph (ceph-osd) - Gère le stockage, la réplication et la récupération des données. Un cluster Ceph nécessite au moins deux serveurs Ceph OSD. Nous utiliserons trois serveurs Ubuntu 16.04 dans cette configuration.
- Moniteur Ceph (ceph-mon) - Surveille l'état du cluster et exécute la carte OSD et la carte CRUSH. Nous n'utiliserons ici qu'un seul serveur.
- Serveur de métadonnées Ceph (ceph-mds) - ceci est nécessaire si vous souhaitez utiliser Ceph comme système de fichiers.
Prérequis
- 6 nœuds de serveur avec le serveur Ubuntu 16.04 installé
- Privilèges root sur tous les nœuds
J'utiliserai la configuration de nom d'hôte/IP suivante :
nom d'hôte Adresse 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
client 10.0.15.15
Étape 1 - Configurer tous les nœuds
Dans cette étape, nous allons configurer les 6 nœuds pour les préparer à l'installation du logiciel Ceph Cluster. Vous devez donc suivre et exécuter les commandes ci-dessous sur tous les nœuds. Et assurez-vous que ssh-server est installé sur tous les nœuds.
Créer l'utilisateur Ceph
Créez un nouvel utilisateur nommé 'cephuser ' sur tous les nœuds.
useradd -m -s /bin/bash cephuser
passwd cephuser
Après avoir créé le nouvel utilisateur, nous devons configurer cephuser pour les privilèges sudo sans mot de passe. Cela signifie que 'cephuser' peut s'exécuter et obtenir des privilèges sudo sans avoir à entrer un mot de passe au préalable.
Exécutez les commandes ci-dessous pour y parvenir.
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
Installer et configurer NTP
Installez NTP pour synchroniser la date et l'heure sur tous les nœuds. Exécutez la commande ntpdate pour définir la date et l'heure via NTP. Nous utiliserons les serveurs NTP du pool américain. Ensuite, démarrez et activez le serveur NTP pour qu'il s'exécute au démarrage.
sudo apt-get install -y ntp ntpdate ntp-doc
ntpdate 0.us.pool.ntp.org
hwclock --systohc
systemctl enable ntp
systemctl start ntp
Installer Open-vm-tools
Si vous exécutez tous les nœuds dans VMware, vous devez installer cet utilitaire de virtualisation.
sudo apt-get install -y open-vm-tools
Installez Python et partez
Dans ce didacticiel, nous avons besoin de packages python pour créer le cluster ceph. Installez python et python-pip.
sudo apt-get install -y python python-pip parted
Configurer le fichier Hosts
Modifiez le fichier hosts sur tous les nœuds avec l'éditeur vim.
vim /etc/hosts
Collez la configuration ci-dessous :
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
Enregistrez le fichier hosts et quittez l'éditeur vim.
Vous pouvez maintenant essayer de faire un ping entre les noms d'hôte du serveur pour tester la connectivité réseau.
ping -c 5 mon1
Étape 2 - Configurer le serveur SSH
Dans cette étape, nous allons configurer le nœud ceph-admin . Le nœud admin est utilisé pour configurer le nœud moniteur et les nœuds osd. Connectez-vous au nœud ceph-admin et accédez au 'cephuser '.
ssh [email protected]
su - cephuser
Le nœud admin est utilisé pour installer et configurer tous les nœuds du cluster, de sorte que l'utilisateur sur le nœud ceph-admin doit avoir des privilèges pour se connecter à tous les nœuds sans mot de passe. Nous devons configurer l'accès SSH sans mot de passe pour 'cephuser' sur le nœud 'ceph-admin'.
Générer les clés ssh pour 'cephuser '.
ssh-keygen
Laisser la phrase secrète est vide/vide.
Ensuite, créez un fichier de configuration pour la configuration ssh.
vim ~/.ssh/config
Collez la configuration ci-dessous :
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
Enregistrez le fichier et quittez vim.
Modifiez l'autorisation du fichier de configuration en 644.
chmod 644 ~/.ssh/config
Ajoutez maintenant la clé à tous les nœuds avec la commande 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
Tapez votre mot de passe cephuser lorsque vous y êtes invité.
Essayez maintenant d'accéder au serveur osd1 à partir du nœud ceph-admin pour tester si la connexion sans mot de passe fonctionne.
ssh ceph-osd1
Étape 3 - Configurer le pare-feu Ubuntu
Pour des raisons de sécurité, nous devons activer le pare-feu sur les serveurs. De préférence, nous utilisons Ufw (Uncomplicated Firewall), le pare-feu Ubuntu par défaut, pour protéger le système. Dans cette étape, nous allons activer ufw sur tous les nœuds, puis ouvrir les ports nécessaires à ceph-admin, ceph-mon et ceph-osd.
Connectez-vous au nœud ceph-admin et installez les packages ufw.
ssh [email protected]
sudo apt-get install -y ufw
Ouvrez le port 80, 2003 et 4505-4506, puis rechargez firewalld.
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 2003/tcp
sudo ufw allow 4505:4506/tcp
Démarrez et activez ufw pour qu'il démarre au démarrage.
sudo ufw enable
À partir du nœud ceph-admin, connectez-vous au nœud de surveillance 'mon1' et installez ufw.
ssh mon1
sudo apt-get install -y ufw
Ouvrez les ports du nœud de moniteur ceph et démarrez ufw.
sudo ufw allow 22/tcp
sudo ufw allow 6789/tcp
sudo ufw enable
Enfin, ouvrez ces ports sur chaque nœud osd :ceph-osd1, ceph-osd2 et ceph-osd3 - port 6800-7300.
Connectez-vous à chacun des nœuds ceph-osd à partir de ceph-admin et installez ufw.
ssh ceph-osd1
sudo apt-get install -y ufw
Ouvrez les ports sur les nœuds osd et rechargez firewalld.
sudo ufw allow 22/tcp
sudo ufw allow 6800:7300/tcp
sudo ufw enable
La configuration du pare-feu ufw est terminée.
Étape 4 - Configurer les nœuds Ceph OSD
Dans ce tutoriel, nous avons 3 nœuds OSD, chacun de ces nœuds a deux partitions de disque dur.
- /dev/sda pour la partition racine
- /dev/sdb est une partition vide - 20 Go
Nous utiliserons /dev/sdb pour le disque ceph. À partir du nœud ceph-admin, connectez-vous à tous les nœuds OSD et formatez la partition /dev/sdb avec XFS système de fichiers.
ssh ceph-osd1
ssh ceph-osd2
ssh ceph-osd3
Vérifiez le schéma de partition avec la commande fdisk.
sudo fdisk -l /dev/sdb
Formatez la partition /dev/sdb avec un système de fichiers XFS et avec une table de partition GPT en utilisant la commande parted.
sudo parted -s /dev/sdb mklabel gpt mkpart primary xfs 0% 100%
Ensuite, formatez la partition au format XFS avec la commande mkfs.
sudo mkfs.xfs -f /dev/sdb
Vérifiez maintenant la partition et vous verrez une partition XFS /dev/sdb.
sudo fdisk -s /dev/sdb
sudo blkid -o value -s TYPE /dev/sdb
Étape 5 - Créer le cluster Ceph
Dans cette étape, nous allons installer Ceph sur tous les nœuds à partir de ceph-admin. Pour commencer, connectez-vous au nœud ceph-admin.
ssh [email protected]
su - cephuser
Installer ceph-deploy sur le nœud ceph-admin
Dans la première étape, nous avons déjà installé python et python-pip sur le système. Nous devons maintenant installer l'outil de déploiement Ceph 'ceph-deploy ' du référentiel pypi python.
Installez ceph-deploy sur le nœud ceph-admin avec la commande pip.
sudo pip install ceph-deploy
Remarque :Assurez-vous que tous les nœuds sont mis à jour.
Une fois l'outil ceph-deploy installé, créez un nouveau répertoire pour la configuration du cluster Ceph.
Créer un nouveau cluster
Créez un nouveau répertoire de cluster.
mkdir cluster
cd cluster/
Ensuite, créez un nouveau cluster avec le 'ceph-deploy ' en définissant le nœud de moniteur 'mon1 '.
ceph-deploy new mon1
La commande générera le fichier de configuration du cluster Ceph 'ceph.conf' dans le répertoire du cluster.
Modifiez le fichier ceph.conf avec vim.
vim ceph.conf
Sous le bloc [global], collez la configuration ci-dessous.
# Your network address
public network = 10.0.15.0/24
osd pool default size = 2
Enregistrez le fichier et quittez l'éditeur.
Installer Ceph sur tous les nœuds
Installez maintenant Ceph sur tous les nœuds à partir du nœud ceph-admin avec une seule commande.
ceph-deploy install ceph-admin ceph-osd1 ceph-osd2 ceph-osd3 mon1
La commande installera automatiquement Ceph sur tous les nœuds :mon1, osd1-3 et ceph-admin - L'installation prendra un certain temps.
Déployez maintenant le nœud de surveillance sur le nœud mon1.
ceph-deploy mon create-initial
La commande créera une clé de moniteur, vérifiez la clé avec cette commande ceph.
ceph-deploy gatherkeys mon1
Ajout d'OSDS au cluster
Une fois Ceph installé sur tous les nœuds, nous pouvons maintenant ajouter les démons OSD au cluster. Les démons OSD créeront la partition de données et de journal sur le disque /dev/sdb.
Vérifiez le disque disponible /dev/sdb sur tous les nœuds osd.
ceph-deploy disk list ceph-osd1 ceph-osd2 ceph-osd3
Vous verrez /dev/sdb avec le format XFS que nous avons créé auparavant.
Ensuite, supprimez les tables de partition sur tous les nœuds avec l'option zap.
ceph-deploy disk zap ceph-osd1:/dev/sdb ceph-osd2:/dev/sdb ceph-osd3:/dev/sdb
La commande supprimera toutes les données sur /dev/sdb sur les nœuds Ceph OSD.
Préparez maintenant tous les nœuds OSD et assurez-vous qu'il n'y a pas d'erreurs dans les résultats.
ceph-deploy osd prepare ceph-osd1:/dev/sdb ceph-osd2:/dev/sdb ceph-osd3:/dev/sdb
Lorsque vous voyez que ceph-osd1-3 est prêt pour l'utilisation de l'OSD dans le résultat, la commande a réussi.
Activez les OSD avec la commande ci-dessous :
ceph-deploy osd activate ceph-osd1:/dev/sdb ceph-osd2:/dev/sdb ceph-osd3:/dev/sdb
Vous pouvez maintenant vérifier à nouveau le disque sdb sur les nœuds OSDS.
ceph-deploy disk list ceph-osd1 ceph-osd2 ceph-osd3
Le résultat est que /dev/sdb a maintenant deux partitions :
- /dev/sdb1 - Données Ceph
- /dev/sdb2 - Ceph Journal
Ou vous le vérifiez directement sur le nœud OSD.
ssh ceph-osd1
sudo fdisk -l /dev/sdb
Ensuite, déployez la clé de gestion sur tous les nœuds associés.
ceph-deploy admin ceph-admin mon1 ceph-osd1 ceph-osd2 ceph-osd3
Modifiez l'autorisation du fichier de clé en exécutant la commande ci-dessous sur tous les nœuds.
sudo chmod 644 /etc/ceph/ceph.client.admin.keyring
Le cluster Ceph sur Ubuntu 16.04 a été créé.
Étape 6 - Tester Ceph
À l'étape 4, nous avons installé et créé un nouveau cluster Ceph et ajouté des nœuds OSDS au cluster. Nous devons maintenant tester le cluster pour nous assurer qu'il fonctionne comme prévu.
À partir du nœud ceph-admin, connectez-vous au serveur de surveillance Ceph 'mon1 '.
ssh mon1
Exécutez la commande ci-dessous pour vérifier l'état du cluster.
sudo ceph health
Vérifiez maintenant l'état du cluster.
sudo ceph -s
Vous pouvez voir les résultats ci-dessous :
Assurez-vous que la santé de Ceph est OK et il y a un nœud de moniteur 'mon1 ' avec l'adresse IP '10.0.15.11 '. Il y a 3 OSD serveurs et tous sont activés et en cours d'exécution, et l'espace disque disponible doit être de 45 Go - 3 partitions OSD Ceph Data de 15 Go.
Nous construisons avec succès un nouveau cluster Ceph sur Ubuntu 16.04.