Ceph est une plate-forme de stockage open source largement utilisée. Il offre des performances, une fiabilité et une évolutivité élevées. Le système de stockage distribué gratuit Ceph fournit une interface pour le stockage au niveau des objets, des blocs et des fichiers. Ceph est conçu pour fournir un système de stockage distribué sans point de défaillance unique.
Dans ce tutoriel, je vais vous guider pour installer et créer un cluster Ceph sur CentOS 7. Un cluster Ceph nécessite ces composants Ceph :
- OSD Ceph (ceph-osd) - Gère le magasin de données, la réplication et la récupération des données. Un cluster Ceph nécessite au moins deux serveurs Ceph OSD. J'utiliserai ici trois serveurs OSD CentOS 7.
- Moniteur Ceph (ceph-mon) - Surveille l'état du cluster, la carte OSD et la carte CRUSH. J'utiliserai un seul serveur.
- Serveur de métadonnées Ceph (ceph-mds) - Ceci est nécessaire pour utiliser Ceph comme système de fichiers.
Prérequis
- 6 nœuds de serveur, tous avec CentOS 7 installé.
- Privilèges root sur tous les nœuds.
Les serveurs de ce didacticiel utiliseront les noms d'hôte et les adresses IP suivants.
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
Tous les nœuds OSD ont besoin de deux partitions, une partition racine (/) et une partition vide qui sera utilisée ultérieurement comme stockage de données Ceph.
Étape 1 - Configurer tous les nœuds
Dans cette étape, nous allons configurer les 6 nœuds pour les préparer à l'installation du cluster Ceph. Vous devez suivre et exécuter toutes les commandes ci-dessous sur tous les nœuds. Et assurez-vous que ssh-server est installé sur tous les nœuds.
Créer un utilisateur Ceph
Créez un nouvel utilisateur nommé 'cephuser ' sur tous les nœuds.
useradd -d /home/cephuser -m cephuser
passwd cephuser
Après avoir créé le nouvel utilisateur, nous devons configurer sudo pour 'cephuser'. Il doit être capable d'exécuter des commandes en tant que root et d'obtenir des privilèges root sans mot de passe.
Exécutez la commande ci-dessous pour créer un fichier sudoers pour l'utilisateur et modifiez le fichier /etc/sudoers avec sed.
echo "cephuser ALL =(racine) 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 une date et une heure via le protocole NTP, nous utiliserons le serveur us pool NTP. Ensuite, démarrez et activez le serveur NTP pour qu'il s'exécute au démarrage.
yum install -y ntp ntpdate ntp-doc
ntpdate 0.us.pool.ntp.org
hwclock --systohc
systemctl enable ntpd.service
systemctl start ntpd .service
Installer Open-vm-tools
Si vous exécutez tous les nœuds à l'intérieur de VMware, vous devez installer cet utilitaire de virtualisation. Sinon, ignorez cette étape.
yum install -y open-vm-tools
Désactiver SELinux
Désactivez SELinux sur tous les nœuds en modifiant le fichier de configuration SELinux avec l'éditeur de flux sed.
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
Configurer le fichier des hôtes
Modifiez le fichier /etc/hosts sur tous les nœuds avec l'éditeur vim et ajoutez des lignes avec l'adresse IP et les noms d'hôte de tous les nœuds du cluster.
vim /etc/hosts
Collez la configuration ci-dessous :
10.0.15.10 ceph-admin
10.0.15.11 mon1
10.0.15.21 osd1
10.0.15.22 osd2
10.0.15.23 osd3<1 client
osd3 <1 client
/pré>Enregistrez le fichier et quittez vim.
Vous pouvez maintenant essayer de faire un ping entre les serveurs avec leur nom d'hôte pour tester la connectivité réseau. Exemple :
ping -c 5 mon1
Étape 2 - Configurer le serveur SSH
Dans cette étape, je vais 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 devenez le 'cephuser '.
ssh [email protected]
su - cephuserLe 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-keygenlaissez la phrase de passe vide/vide.
Ensuite, créez le fichier de configuration pour la configuration ssh.
vim ~/.ssh/configCollez la configuration ci-dessous :
Hôte ceph-admin
Nom d'hôte ceph-admin
Utilisateur cephuser
Hôte mon1
Nom d'hôte mon1
Utilisateur cephuser
Hôte osd1
Nom d'hôte osd1
Utilisateur cephuser
Hôte osd2
Nom d'hôte osd2
Utilisateur cephuser
Hôte osd3
Nom d'hôte osd3
Utilisateur cephuser
Client hôte
Nom d'hôte client
Utilisateur cephuserEnregistrez le fichier.
Modifiez l'autorisation du fichier de configuration.
chmod 644 ~/.ssh/configAjoutez maintenant la clé SSH à tous les nœuds avec la commande ssh-copy-id.
ssh-keyscan osd1 osd2 osd3 client mon1>> ~/.ssh/known_hosts
ssh-copy-id osd1
ssh-copy-id osd2
ssh-copy-id osd3
ssh-copy-id mon1
client ssh-copy-idTapez votre mot de passe 'cephuser' lorsque vous y êtes invité.
Lorsque vous avez terminé, essayez d'accéder au serveur osd1 à partir du nœud ceph-admin.
ssh osd1
Étape 3 - Configurer Firewalld
Nous utiliserons Firewalld pour protéger le système. Dans cette étape, nous allons activer Firewald sur tous les nœuds, puis ouvrir les ports requis par ceph-admon, ceph-mon et ceph-osd.
Connectez-vous au nœud ceph-admin et démarrez firewalld.
ssh [email protected]
systemctl start firewalld
systemctl enable firewalldOuvrez le port 80, 2003 et 4505-4506, puis rechargez le pare-feu.
sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
sudo firewall-cmd --zone=public --add-port=2003/tcp --permanent
sudo firewall-cmd --zone=public --add-port=4505-4506/tcp --permanent
sudo firewall-cmd --reloadÀ partir du nœud ceph-admin, connectez-vous au nœud de surveillance 'mon1' et démarrez firewalld.
ssh mon1
sudo systemctl start firewalld
sudo systemctl enable firewalldOuvrez un nouveau port sur le nœud de moniteur Ceph et rechargez le pare-feu.
sudo firewall-cmd --zone=public --add-port=6789/tcp --permanent
sudo firewall-cmd --reloadEnfin, ouvrez le port 6800-7300 sur chacun des nœuds osd :osd1, osd2 et os3.
Connectez-vous à chaque nœud osd à partir du nœud ceph-admin.
ssh osd1
sudo systemctl start firewalld
sudo systemctl enable firewalldOuvrez les ports et rechargez le pare-feu.
sudo firewall-cmd --zone=public --add-port=6800-7300/tcp --permanent
sudo firewall-cmd --reloadLa configuration du pare-feu est terminée.
Étape 4 - Configurer les nœuds Ceph OSD
Dans ce tutoriel, nous avons 3 nœuds OSD et chaque nœud a deux partitions.
- /dev/sda pour la partition racine.
- /dev/sdb est une partition vide - 30 Go dans mon cas.
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 .
ssh osd1
ssh osd2
ssh osd3Vérifiez la partition avec la commande fdisk.
sudo fdisk -l /dev/sdbFormatez la partition /dev/sdb avec le 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%
sudo mkfs.xfs /dev/sdb -fVérifiez maintenant la partition et vous obtiendrez la partition xfs /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 du nœud ceph-admin.
Connectez-vous au nœud ceph-admin.
ssh [email protected]
su - cephuser
Installer ceph-deploy sur le nœud ceph-admin
Ajoutez le référentiel Ceph et installez l'outil de déploiement Ceph 'ceph-deploy ' avec la commande yum.
sudo rpm -Uhv http://download.ceph.com/rpm-jewel/el7/noarch/ceph-release-1-1.el7.noarch.rpm
sudo yum update -y &&sudo yum installer ceph-deploy -yAssurez-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 une nouvelle configuration de cluster
Créez le nouveau répertoire de cluster.
cluster mkdir
cluster cd/Ensuite, créez une nouvelle configuration de cluster avec le 'ceph-deploy ', définissez le nœud de moniteur comme étant 'mon1 '.
ceph-deploy new mon1La 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.confSous le bloc [global], collez la configuration ci-dessous.
# Votre adresse réseau
réseau public =10.0.15.0/24
taille par défaut du pool osd =2Enregistrez le fichier et quittez vim.
Installer Ceph sur tous les nœuds
Installez maintenant Ceph sur tous les autres nœuds à partir du nœud ceph-admin. Cela peut être fait avec une seule commande.
ceph-deploy install ceph-admin mon1 osd1 osd2 osd3La 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 ceph-mon sur le nœud mon1.
ceph-deploy mon create-initialLa commande créera la clé du moniteur, vérifiera et obtiendra les clés avec la commande 'ceph'.
ceph-deploy rassemble les clés mon1
Ajout d'OSDS au cluster
Lorsque Ceph a été installé sur tous les nœuds, nous pouvons ajouter les démons OSD au cluster. Les démons OSD créeront leur partition de données et de journal sur le disque /dev/sdb.
Vérifiez que la partition /dev/sdb est disponible sur tous les nœuds OSD.
liste de disques ceph-deploy osd1 osd2 osd3
Vous verrez le disque /dev/sdb au format XFS.
Ensuite, supprimez les tables de partition /dev/sdb sur tous les nœuds avec l'option zap.
ceph-deploy disk zap osd1 :/dev/sdb osd2 :/dev/sdb osd3 :/dev/sdbLa commande supprimera toutes les données sur /dev/sdb sur les nœuds Ceph OSD.
Préparez maintenant tous les nœuds OSDS. Assurez-vous qu'il n'y a pas d'erreurs dans les résultats.
ceph-deploy osd prepare osd1 :/dev/sdb osd2 :/dev/sdb osd3 :/dev/sdbSi vous voyez que l'osd1-3 est prêt pour l'utilisation de l'OSD, le déploiement a réussi.
Activez les OSD avec la commande ci-dessous :
ceph-deploy osd activate osd1 :/dev/sdb1 osd2 :/dev/sdb1 osd3 :/dev/sdb1Vérifiez la sortie pour les erreurs avant de continuer. Vous pouvez maintenant vérifier le disque sdb sur les nœuds OSD avec la commande list.
liste de disques ceph-deploy osd1 osd2 osd3
Le résultat est que /dev/sdb a maintenant deux partitions :
- /dev/sdb1 - Données Ceph
- /dev/sdb2 - Ceph Journal
Ou vous pouvez vérifier cela directement sur le nœud OSD avec fdisk.
ssh osd1
sudo fdisk -l /dev/sdb
Déployez ensuite la clé de gestion sur tous les nœuds associés.
ceph-deploy admin ceph-admin mon1 osd1 osd2 osd3Modifiez 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.keyringLe cluster Ceph sur CentOS 7 a été créé.
Étape 6 - Test de la configuration de Ceph
À l'étape 4, nous avons installé et créé notre nouveau cluster Ceph, puis nous avons ajouté des nœuds OSDS au cluster. Nous pouvons maintenant tester le cluster et nous assurer qu'il n'y a pas d'erreurs dans la configuration du cluster.
À partir du nœud ceph-admin, connectez-vous au serveur de surveillance ceph 'mon1 '.
ssh mon1Exécutez la commande ci-dessous pour vérifier l'état du cluster.
sudo ceph santéVérifiez maintenant l'état du cluster.
sudo ceph -sEt vous devriez 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 devrait y avoir 3 OSD serveurs et tout devrait être actif et en cours d'exécution, et il devrait y avoir un disque disponible d'environ 75 Go - 3 partitions de données Ceph de 25 Go.
Félicitations, vous avez réussi à créer un nouveau cluster Ceph.
Dans la prochaine partie du didacticiel Ceph, je vais vous montrer comment utiliser Ceph en tant que périphérique bloc ou le monter en tant que système de fichiers.