Ceph est construit pour fournir un système de stockage distribué sans point de défaillance unique. Il offre des performances, une fiabilité et une évolutivité élevées. Il est scalable et permet d’étendre le stockage à souhait. Il fournit une interface pour le stockage au niveau des objets, des blocs et des fichiers.
Le cluster CEPH est composé de la façon Suivante
- node01-ceph-admin
- node02-ceph-mon1
- node03-ceph-osd1
- node04-ceph-osd2
- node05-ceph-osd3
- node06-ceph-osd4
Le Pool du Cluster sur Proxmox
I. Les spécifications des machines
1°) Administration et Moniteur
node01-Ceph-admin
IP : 172.16.186.40
Disque 1 – Système 10Go
RAM 2G
2vCPU
node02-Ceph-mon1
IP : 172.16.186.41
Disque – 1 Système 10Go
RAM 2G
2vCPU
2°) Partie OSD Disque CEPH
node03-Ceph-osd1
IP : 172.16.186.42
Disque 1 – Système 10Go
Disque 2 – Ceph 20G0
RAM 2G
2vCPU
node04-Ceph-osd2
IP : 172.16.186.43
Disque 1 – Système 10Go
Disque 2 – Ceph 20G0
RAM 2G
2vCPU
node05-Ceph-osd3
IP : 172.16.186.44
Disque 1 – Système 10Go
Disque 2 – Ceph 20G0
RAM 2G
2vCPU
node06-Ceph-osd4
IP : 172.16.186.45
Disque 1 – Système 10Go
Disque 2 – Ceph 20G0
RAM 2G
2vCPU
II. Prérequis à toutes les machines
1°) Inscription des machines Ceph au DNS
MODOP – Configurer un DNS Primaire et Secondaire – Centos7
[root@dns-pri ~]# vi /var/named/forward.house.cpb
; Cluster CEPH
node01-ceph-admin IN A 172.16.186.40
node02-ceph-mon1 IN A 172.16.186.41
node03-ceph-osd1 IN A 172.16.186.42
node04-ceph-osd2 IN A 172.16.186.43
node05-ceph-osd3 IN A 172.16.186.44
node06-ceph-osd4 IN A 172.16.186.45
Le reverse
[root@dns-pri ~]# vi /var/named/reversevmbr3.house.cpb
; CEPH CLuster
40 IN PTR node01-ceph-admin.house.cpb.
41 IN PTR node02-ceph-mon1.house.cpb.
42 IN PTR node03-ceph-osd1.house.cpb.
43 IN PTR node04-ceph-osd2.house.cpb.
44 IN PTR node05-ceph-osd3.house.cpb.
45 IN PTR node06-ceph-osd4.house.cpb.
[root@dns-pri ~]# systemctl reload named
Petit test de résolution
2°) Installation des middlewares (6 nœuds ceph)
[root@node01-ceph-admin ~]# yum update -y
[root@node01-ceph-admin ~]# yum install -y htop nmap net-tools wget
3°) Installation ntpd (6 nœuds ceph)
[root@node01-ceph-admin ~]# yum install ntp ntpdate ntp-doc -y
[root@node01-ceph-admin ~]# chkconfig ntpd on
[root@node01-ceph-admin ~]# ntpdate pool.ntp.org
[root@node01-ceph-admin ~]# systemctl start ntpd
[root@node01-ceph-admin ~]# systemctl status ntpd
4°) Désactivation Selinux (6 nœuds ceph)
[root@node01-ceph-admin ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
[root@node01-ceph-admin ~]# reboot
5°) Désactivation IPv6 (6 nœuds ceph)
[root@node01-ceph-admin ~]# vi /etc/sysctl.conf
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.all.autoconf = 0
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.default.autoconf = 0
[root@node01-ceph-admin ~]# sysctl -p
6°) Création Utilisateur ceph (6 nœuds ceph)
[root@node01-ceph-admin ~]# useradd -d /home/cephuser -m cephuser
[root@node01-ceph-admin ~]# passwd cephuser
[root@node01-ceph-admin ~]# echo "cephuser ALL = (root) NOPASSWD:ALL" >> /etc/sudoers.d/cephuser
[root@node01-ceph-admin ~]# chmod 0440 /etc/sudoers.d/cephuser
[root@node01-ceph-admin ~]# sed -i s'/Defaults requiretty/#Defaults requiretty'/g /etc/sudoers
III. Connexion SSH (node01-Ceph-admin)
1°) générer une clef SSH pour cephuser (ssh-keygen)
root@floki03:~# ssh -l root node01-ceph-admin
[cephuser@node01-ceph-admin ~]$ su - cephuser
[cephuser@node01-ceph-admin ~]$ ssh-keygen
2°) Création config SSH pour les nodes
[cephuser@node01-ceph-admin ~]$ vi ~/.ssh/config
Host node01-ceph-admin
Hostname node01-ceph-admin
User cephuser
Host node02-ceph-mon1
Hostname node02-ceph-mon1
User cephuser
Host node03-ceph-osd1
Hostname node03-ceph-osd1
User cephuser
Host node04-ceph-osd2
Hostname node04-ceph-osd2
User cephuser
Host node05-ceph-osd3
Hostname node05-ceph-osd3
User cephuser
Host node06-ceph-osd4
Hostname node06-ceph-osd4
User cephuser
[cephuser@node01-ceph-admin ~]$ chmod 644 ~/.ssh/config
[cephuser@node01-ceph-admin ~]$ ssh-keyscan node01-ceph-admin node02-ceph-mon1 node03-ceph-osd1 node04-ceph-osd2 node05-ceph-osd3 node06-ceph-osd4 >> ~/.ssh/known_hosts
[cephuser@node01-ceph-admin ~]$ ssh-copy-id node02-ceph-mon1
[cephuser@node01-ceph-admin ~]$ ssh-copy-id node03-ceph-osd1
[cephuser@node01-ceph-admin ~]$ ssh-copy-id node04-ceph-osd2
[cephuser@node01-ceph-admin ~]$ ssh-copy-id node05-ceph-osd3
[cephuser@node01-ceph-admin ~]$ ssh-copy-id node06-ceph-osd4
IV. Configurer Firewall
1°) node01-Ceph-admin
root@floki03:~# ssh -l root node01-ceph-admin
[root@node01-ceph-admin ~]# systemctl start firewalld && systemctl enable firewalld
[root@node01-ceph-admin ~]# firewall-cmd --zone=public --add-port=80/tcp --permanent
[root@node01-ceph-admin ~]# firewall-cmd --zone=public --add-port=2003/tcp --permanent
[root@node01-ceph-admin ~]# firewall-cmd --zone=public --add-port=4505-4506/tcp --permanent
[root@node01-ceph-admin ~]# firewall-cmd --reload
[root@node01-ceph-admin ~]# firewall-cmd --list-port
80/tcp 2003/tcp 4505-4506/tcp
2°) node02-Ceph-mon1
root@floki03:~# ssh -l root node02-ceph-mon1
[root@node02-ceph-mon1 ~]# systemctl start firewalld && systemctl enable firewalld
[root@node02-ceph-mon1 ~]# firewall-cmd --zone=public --add-port=6789/tcp --permanent
[root@node02-ceph-mon1 ~]# firewall-cmd --reload
[root@node02-ceph-mon1 ~]# firewall-cmd --list-port
6789/tcp
3°) node03-Ceph-osd1, node04-Ceph-osd2, node04-Ceph-osd3, node05-Ceph-osd4
[root@node03-ceph-osd1 ~]# systemctl start firewalld && systemctl enable firewalld
[root@node03-ceph-osd1 ~]# firewall-cmd --zone=public --add-port=6800-7300/tcp --permanent
[root@node03-ceph-osd1 ~]# firewall-cmd --reload
[root@node03-ceph-osd1 ~]# firewall-cmd --list-port
6800-7300/tcp
[root@node04-ceph-osd2 ~]# systemctl start firewalld && systemctl enable firewalld
[root@node04-ceph-osd2 ~]# firewall-cmd --zone=public --add-port=6800-7300/tcp --permanent && firewall-cmd --reload
[root@node05-ceph-osd3 ~]# systemctl start firewalld && systemctl enable firewalld
[root@node05-ceph-osd3 ~]# firewall-cmd --zone=public --add-port=6800-7300/tcp --permanent && firewall-cmd --reload
[root@node06-ceph-osd4 ~]# systemctl start firewalld && systemctl enable firewalld
[root@node06-ceph-osd4 ~]# firewall-cmd --zone=public --add-port=6800-7300/tcp --permanent && firewall-cmd --reload
V. Partitionner le disque Ceph des noeuds OSD
node03-ceph-osd1
[cephuser@node01-ceph-admin ~]$ ssh node03-ceph-osd1
[cephuser@node03-ceph-osd1 ~]$ sudo fdisk -l /dev/sdb
[cephuser@node03-ceph-osd1 ~]$ sudo parted -s /dev/sdb mklabel gpt mkpart primary xfs 0% 100%
[cephuser@node03-ceph-osd1 ~]$ sudo mkfs.xfs /dev/sdb -f
[cephuser@node03-ceph-osd1 ~]$ sudo blkid -o value -s TYPE /dev/sdb
Xfs
node04-ceph-osd2
[cephuser@node04-ceph-osd2 ~]$ sudo parted -s /dev/sdb mklabel gpt mkpart primary xfs 0% 100%
[cephuser@node04-ceph-osd2 ~]$ sudo mkfs.xfs /dev/sdb -f
[cephuser@node04-ceph-osd2 ~]$ sudo blkid -o value -s TYPE /dev/sdb
xfs
node05-ceph-osd3
[cephuser@node05-ceph-osd3 ~]$ sudo parted -s /dev/sdb mklabel gpt mkpart primary xfs 0% 100%
[cephuser@node05-ceph-osd3 ~]$ sudo mkfs.xfs /dev/sdb -f
[cephuser@node05-ceph-osd3 ~]$ sudo blkid -o value -s TYPE /dev/sdb
xfs
node06-ceph-osd4
[cephuser@node06-ceph-osd4 ~]$ sudo parted -s /dev/sdb mklabel gpt mkpart primary xfs 0% 100%
[cephuser@node06-ceph-osd4 ~]$ sudo mkfs.xfs /dev/sdb -f
[cephuser@node06-ceph-osd4 ~]$ sudo blkid -o value -s TYPE /dev/sdb
xfs
VI. Démarrer le Cluster Ceph
node01-Ceph-admin
root@floki03:~# ssh -l root node01-ceph-admin
[root@node01-ceph-admin ~]# su - cephuser
[cephuser@node01-ceph-admin ~]$ mkdir cluster
1°) Install ceph-deploy
[cephuser@node01-ceph-admin ~]$ sudo rpm -Uhv http://download.ceph.com/rpm-jewel/el7/noarch/ceph-release-1-1.el7.noarch.rpm
[cephuser@node01-ceph-admin ~]$ sudo yum update -y && sudo yum install ceph-deploy -y
[cephuser@node01-ceph-admin ~]$ cd cluster/
2°) création du moniteur « node02-ceph-mon1 » sur le mon
[cephuser@node01-ceph-admin cluster]$ ceph-deploy new node02-ceph-mon1
[cephuser@node01-ceph-admin cluster]$ : vi ceph.conf
Ajouter à la fin du fichier
# Public address
public network = 172.16.186.0/24
osd pool default size = 2
3°) Installation de ceph sur tous les nœuds du Cluster via ceph-deploy
[cephuser@node01-ceph-admin cluster]$ ceph-deploy install node01-ceph-admin node02-ceph-mon1 node03-ceph-osd1 node04-ceph-osd2 node05-ceph-osd3 node06-ceph-osd4
L’installation de ceph va être déployée sur l’ensemble des nœuds du Cluster.
Cela devait prendre entre 5-10minutes.
4°) Déployer le moniteur Monitoring sur le Cluster (mon)
[cephuser@node01-ceph-admin cluster]$ ceph-deploy mon create-initial
[cephuser@node01-ceph-admin cluster]$ ceph-deploy gatherkeys node02-ceph-mon1
5°) Déployer les disques /dev/sdb – nœuds OSD – sur le Cluster
[cephuser@node01-ceph-admin cluster]$ ceph-deploy disk list node03-ceph-osd1 node04-ceph-osd2 node05-ceph-osd3 node06-ceph-osd4
Préparer les disques /dev/sdb – nœuds OSD – sur le Cluster.
[cephuser@node01-ceph-admin cluster]$ ceph-deploy disk zap node03-ceph-osd1:/dev/sdb node04-ceph-osd2:/dev/sdb node05-ceph-osd3:/dev/sdb node06-ceph-osd4:/dev/sdb
[cephuser@node01-ceph-admin cluster]$ ceph-deploy osd prepare node03-ceph-osd1:/dev/sdb node04-ceph-osd2:/dev/sdb node05-ceph-osd3:/dev/sdb node06-ceph-osd4:/dev/sdb
Activons la partition /dev/sdb1 des nœuds OSD
[cephuser@node01-ceph-admin cluster]$ ceph-deploy osd activate node03-ceph-osd1:/dev/sdb1 node04-ceph-osd2:/dev/sdb1 node05-ceph-osd3:/dev/sdb1 node06-ceph-osd4:/dev/sdb1
[cephuser@node01-ceph-admin cluster]$ ceph-deploy disk list node03-ceph-osd1 node04-ceph-osd2 node05-ceph-osd3 node06-ceph-osd4
On se retrouve avec deux partitions sur le disque réservé à Ceph
- /dev/sdb1 – Ceph Data
- /dev/sdb2 – Ceph Journal
6°) Déployer Admin sur l’ensemble du Cluster
[cephuser@node01-ceph-admin cluster]$ ceph-deploy admin node01-ceph-admin node02-ceph-mon1 node03-ceph-osd1 node04-ceph-osd2 node05-ceph-osd3 node06-ceph-osd4
Changement des droits sur le fichier « ceph.client.admin.keyring »
[cephuser@node01-ceph-admin cluster]$ sudo chmod 644 /etc/ceph/ceph.client.admin.keyring
7°) Vérifions l’état du Cluster
[cephuser@node01-ceph-admin cluster]$ ssh node02-ceph-mon1
Last login: Fri Jul 9 17:24:35 2021 from node01-ceph-admin.house.cpb
[cephuser@node02-ceph-mon1 ~]$ sudo ceph health
HEALTH_OK
[cephuser@node02-ceph-mon1 ~]$ sudo ceph –s
Views: 14