Ceph est une solution de stockage distribué open source qui se distingue par sa grande flexibilité, sa scalabilité horizontale et sa robustesse. Il permet de gérer des données objets, blocs et fichiers au sein d’une seule plateforme, tout en offrant des performances élevées et une tolérance aux pannes grâce à son architecture sans point de défaillance unique. De plus, sa compatibilité avec les environnements cloud et conteneurisés en fait un choix idéal pour les infrastructures modernes.
Prérequis :
- 1 VM (Master) : 10.10.70.20 – 2vCPU, 2Go RAM, 80Go d’espace disque + disque dur 100GO
- 1 VM (node01) : 10.10.70.21 – 2vCPU, 2Go RAM, 80Go d’espace disque + disque dur 100GO
- 1 VM (node02) : 10.10.70.22 – 2vCPU, 2Go RAM, 80Go d’espace disque + disque dur 100GO
- Autorisez la connexion SSH avec l’utilisateur root
- Fixez les ip
Étape 1 : Sur le Master, commencez par générer une clé SSH
ssh-keygen
Éditez le fichier : ~/.ssh/config
nano ~/.ssh/config
Host node01
Hostname 10.10.70.20
User root
Host node02
Hostname 10.10.70.21
User root
Host node03
Hostname 10.10.70.22
User root
nano /etc/hosts
10.10.70.20 node01
10.10.70.21 node02
10.10.70.22 node03
10.10.70.23 client
Étape 2 : copiez la clé publique sur les nodes
ssh-copy-id node01
ssh-copy-id node02
ssh-copy-id node03
Étape 3 : Installez CEPH sur tous les nodes
for NODE in node01 node02 node03
do
ssh $NODE "apt update; apt -y install ceph"
done
Étape 4 : configurez le monitor et le manager
- Éditez le fichier /etc/ceph/ceph.conf
nano /etc/ceph/ceph.conf
[global]
# reseau du cluster
cluster network = 10.10.70.0/24
# reseau publique
public network = 10.10.70.0/24
fsid = 92749530-d9af-4226-bfe0-ccc79a689a66
mon host = 10.10.70.20
mon initial members = node01
osd pool default crush rule = -1
[mon.node01]
host = node01
mon addr = 10.10.70.20
mon allow pool delete = true
- Générez la clé secrète pour monitorer le cluster
ceph-authtool --create-keyring /etc/ceph/ceph.mon.keyring --gen-key -n mon. --cap mon 'allow *'
- Générez la clé secrète pour l’administrateur du cluster
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 *'
- Générez la clé pour bootstrap
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'
- Importez la clé généré
ceph-authtool /etc/ceph/ceph.mon.keyring --import-keyring /etc/ceph/ceph.client.admin.keyring
ceph-authtool /etc/ceph/ceph.mon.keyring --import-keyring /var/lib/ceph/bootstrap-osd/ceph.keyring
- Générez la map
FSID=$(grep "^fsid" /etc/ceph/ceph.conf | awk {'print $NF'})
NODENAME=$(grep "^mon initial" /etc/ceph/ceph.conf | awk {'print $NF'})
NODEIP=$(grep "^mon host" /etc/ceph/ceph.conf | awk {'print $NF'})
monmaptool --create --add $NODENAME $NODEIP --fsid $FSID /etc/ceph/monmap
- Créez un dossier pour le monitor deamon
mkdir /var/lib/ceph/mon/ceph-node01
- Associez la clé et la map sur le moniteur
ceph-mon --cluster ceph --mkfs -i $NODENAME --monmap /etc/ceph/monmap --keyring /etc/ceph/ceph.mon.keyring
chown ceph. /etc/ceph/ceph.*
chown -R ceph. /var/lib/ceph/mon/ceph-node01 /var/lib/ceph/bootstrap-osd
systemctl enable --now ceph-mon@$NODENAME
- Activez le protocole v2 de Messenger
ceph mon enable-msgr2
ceph config set mon auth_allow_insecure_global_id_reclaim false
- Créez un dossier pour le manager Deamon
mkdir /var/lib/ceph/mgr/ceph-node01
- Créez une clé d’authentification
ceph auth get-or-create mgr.$NODENAME mon 'allow profile mgr' osd 'allow *' mds 'allow *'
ceph auth get-or-create mgr.node01 | tee /etc/ceph/ceph.mgr.admin.keyring
cp /etc/ceph/ceph.mgr.admin.keyring /var/lib/ceph/mgr/ceph-node01/keyring
chown ceph. /etc/ceph/ceph.mgr.admin.keyring
chown -R ceph. /var/lib/ceph/mgr/ceph-node01
systemctl enable --now ceph-mgr@$NODENAME
- Vérifiez le statut du cluster
ceph -s
Étape 5 : configurez les nodes (OSD : object storage device)
- ATTENTION : ajoutez bien vos disques durs virtuels avant de commencer la configuration des nodes !!
for NODE in node01 node02 node03
do
if [ ! ${NODE} = "node01" ]
then
scp /etc/ceph/ceph.conf ${NODE}:/etc/ceph/ceph.conf
scp /etc/ceph/ceph.client.admin.keyring ${NODE}:/etc/ceph
scp /var/lib/ceph/bootstrap-osd/ceph.keyring ${NODE}:/var/lib/ceph/bootstrap-osd
fi
ssh $NODE \
"chown ceph. /etc/ceph/ceph.* /var/lib/ceph/bootstrap-osd/*; \
parted --script /dev/sdb 'mklabel gpt'; \
parted --script /dev/sdb "mkpart primary 0% 100%"; \
ceph-volume lvm create --data /dev/sdb1"
done
- Vérifiez le statut du cluster
ceph -s
- Affichez les OSD (nodes)
ceph osd tree
- Afficher les infromations de stockage
ceph df
- Affichez l’espace disponible et utilisé sur chaque OSD
ceph osd df
Maintenant, nous allons configurer le dashboard web :
apt -y install ceph-mgr-dashboard
ceph mgr module enable dashboard
ceph mgr module ls | grep -A 5 enabled_modules
- Créez un certificat auto-signé pour le dashboard
ceph dashboard create-self-signed-cert
- Créez un utilisateur pour le dashboard
echo "password" > pass.txt
ceph dashboard ac-user-create admin -i pass.txt administrator
- Et enfin, activez le dashboard
ceph mgr services
Connectez vous avec les accès précédemment créé :
- nom d’utilisateur : admin
- mot de passe : password
Et voilà ! Ceph est désormais fonctionnel !