Le cluster CEPH est composé de la façon Suivante
- node01-ceph-admin
- node02-ceph-mon1
- node03-ceph-mon2
- node04-ceph-mon3
- node05-ceph-osd1
- node06-ceph-osd2
- node07-ceph-osd3
- node08-ceph-osd4
- node09-ceph-osd5
- node10-ceph-osd6
- node11-ceph-osd7
- node12-ceph-osd8
Le Pool du Cluster sur Proxmox
I. Les spécifications des machines
1°) Administration (CEPH-ADMIN)
node01-Ceph-admin
IP : 172.16.186.40
Disque 1 – Système 10Go
RAM 2G
2°) Moniteurs (MON,MGR,MDS)
node02-Ceph-mon1
IP : 172.16.186.41
Disque – 1 Système 10Go
RAM 2G
2vCPU
node03-Ceph-mon2
IP : 172.16.186.42
Disque – 1 Système 10Go
RAM 2G
2vCPU
node04-Ceph-mon3
IP : 172.16.186.43
Disque – 1 Système 10Go
RAM 2G
2vCPU
3°) OSD (Disque CEPH)
node05-Ceph-osd1
IP : 172.16.186.44
Disque 1 – Système 10Go
Disque 2 – Ceph 20G0
RAM 2G
2vCPU
node06-Ceph-osd2
IP : 172.16.186.45
Disque 1 – Système 10Go
Disque 2 – Ceph 20G0
RAM 2G
2vCPU
node07-Ceph-osd3
IP : 172.16.186.46
Disque 1 – Système 10Go
Disque 2 – Ceph 20G0
RAM 2G
2vCPU
node08-Ceph-osd4
IP : 172.16.186.47
Disque 1 – Système 10Go
Disque 2 – Ceph 20G0
RAM 2G
2vCPU
node09-Ceph-osd5
IP : 172.16.186.48
Disque 1 – Système 10Go
Disque 2 – Ceph 20G0
RAM 2G
2vCPU
node10-Ceph-osd6
IP : 172.16.186.49
Disque 1 – Système 10Go
Disque 2 – Ceph 20G0
RAM 2G
2vCPU
node11-Ceph-osd7
IP : 172.16.186.50
Disque 1 – Système 10Go
Disque 2 – Ceph 20G0
RAM 2G
2vCPU
node12-Ceph-osd8
IP : 172.16.186.51
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 ;PARTIE ADMIN node01-ceph-admin IN A 172.16.186.40 ;PARTIE MON,MGR,MDS node02-ceph-mon1 IN A 172.16.186.41 node03-ceph-mon2 IN A 172.16.186.42 node04-ceph-mon3 IN A 172.16.186.43 ;PARTIE OSD node05-ceph-osd1 IN A 172.16.186.44 node06-ceph-osd2 IN A 172.16.186.45 node07-ceph-osd3 IN A 172.16.186.46 node08-ceph-osd4 IN A 172.16.186.47 node09-ceph-osd5 IN A 172.16.186.48 node10-ceph-osd6 IN A 172.16.186.49 node11-ceph-osd7 IN A 172.16.186.50 node12-ceph-osd8 IN A 172.16.186.51
Le reverse
[root@dns-pri ~]# vi /var/named/reversevmbr3.house.cpb ; CEPH CLuster ;PARTIE ADMIN 40 IN PTR node01-ceph-admin.house.cpb. ;PARTIE MON,MGR,MDS 41 IN PTR node02-ceph-mon1.house.cpb. 42 IN PTR node03-ceph-mon2.house.cpb. 43 IN PTR node04-ceph-mon3.house.cpb. ;PARTIE OSD 44 IN PTR node05-ceph-osd1.house.cpb. 45 IN PTR node06-ceph-osd2.house.cpb. 46 IN PTR node07-ceph-osd3.house.cpb. 47 IN PTR node08-ceph-osd4.house.cpb. 48 IN PTR node09-ceph-osd5.house.cpb. 49 IN PTR node10-ceph-osd6.house.cpb. 50 IN PTR node11-ceph-osd7.house.cpb. 51 IN PTR node12-ceph-osd8.house.cpb.
[root@dns-pri ~]# systemctl reload named
2°) Installation des middlewares (12 noeuds)
[root@node01-ceph-admin ~]# dnf update [root@node01-ceph-admin ~]# dnf -y install vim bash-completion nmap net-tools wget
3°) Installation ntpd (12 nœuds)
[root@node01-ceph-admin ~]# timedatectl set-timezone Europe/Paris [root@node01-ceph-admin ~]# timedatectl
4°) Désactivation Selinux (12 nœuds)
[root@node01-ceph-admin ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config [root@node01-ceph-admin ~]# reboot
5°) Désactivation IPv6 (12 nœuds)
[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 et ajout droit sudoers (12 nœuds)
[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-mon2 Hostname node03-ceph-mon2 User cephuser Host node04-ceph-mon3 Hostname node04-ceph-mon3 User cephuser Host node05-ceph-osd1 Hostname node05-ceph-osd1 User cephuser Host node06-ceph-osd2 Hostname node06-ceph-osd2 User cephuser Host node07-ceph-osd3 Hostname node07-ceph-osd3 User cephuser Host node08-ceph-osd4 Hostname node08-ceph-osd4 User cephuser Host node09-ceph-osd5 Hostname node09-ceph-osd5 User cephuser Host node10-ceph-osd6 Hostname node10-ceph-osd6 User cephuser Host node11-ceph-osd7 Hostname node11-ceph-osd7 User cephuser Host node12-ceph-osd8 Hostname node12-ceph-osd8 User cephuser
[cephuser@node01-ceph-admin ~]$ chmod 644 ~/.ssh/config [cephuser@node01-ceph-admin ~]$ ssh-keyscan node01-ceph-admin node02-ceph-mon1 node03-ceph-mon2 node04-ceph-mon3 node05-ceph-osd1 node06-ceph-osd2 node07-ceph-osd3 node08-ceph-osd4 node09-ceph-osd5 node10-ceph-osd6 node11-ceph-osd7 node12-ceph-osd8 >> ~/.ssh/known_hosts
[cephuser@node01-ceph-admin ~]$ ssh-copy-id node02-ceph-mon1 [cephuser@node01-ceph-admin ~]$ ssh-copy-id node03-ceph-mon2 [cephuser@node01-ceph-admin ~]$ ssh-copy-id node04-ceph-mon3 [cephuser@node01-ceph-admin ~]$ ssh-copy-id node05-ceph-osd1 [cephuser@node01-ceph-admin ~]$ ssh-copy-id node06-ceph-osd2 [cephuser@node01-ceph-admin ~]$ ssh-copy-id node07-ceph-osd3 [cephuser@node01-ceph-admin ~]$ ssh-copy-id node08-ceph-osd4 [cephuser@node01-ceph-admin ~]$ ssh-copy-id node09-ceph-osd5 [cephuser@node01-ceph-admin ~]$ ssh-copy-id node10-ceph-osd6 [cephuser@node01-ceph-admin ~]$ ssh-copy-id node11-ceph-osd7 [cephuser@node01-ceph-admin ~]$ ssh-copy-id node12-ceph-osd8
3°) Installation des Middleware ceph
[cephuser@node01-ceph-admin ~]$ sudo dnf -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm [cephuser@node01-ceph-admin ~]$ sudo yum install dnf-plugins-core [cephuser@node01-ceph-admin ~]$ sudo dnf config-manager --set-enabled powertools
4°) Installation de ceph-ansible
[cephuser@node01-ceph-admin ~]$ sudo dnf install ansible [cephuser@node01-ceph-admin ~]$ sudo yum install git vim bash-completion [cephuser@node01-ceph-admin ~]$ git clone https://github.com/ceph/ceph-ansible.git [cephuser@node01-ceph-admin ~]$ cd ceph-ansible [cephuser@node01-ceph-admin ceph-ansible]$ git checkout stable-5.0 [cephuser@node01-ceph-admin ceph-ansible]$ sudo yum install python3-pip [cephuser@node01-ceph-admin ceph-ansible]$ sudo python3 -m pip install -U pip [cephuser@node01-ceph-admin ceph-ansible]$ pip3 install -r requirements.txt
[cephuser@node01-ceph-admin ceph-ansible]$ echo "PATH=$PATH:/usr/local/bin" >>~/.bashrc [cephuser@node01-ceph-admin ceph-ansible]$ source ~/.bashrc [cephuser@node01-ceph-admin ceph-ansible]$ mkdir -p /home/cephuser/ansible/ [cephuser@node01-ceph-admin ceph-ansible]$ ansible --version
IV. Configurer ceph-ansible
1°) Configurer le Cluster via ceph-ansible (all.yml)
[cephuser@node01-ceph-admin ceph-ansible]$ cp group_vars/all.yml.sample group_vars/all.yml
[cephuser@node01-ceph-admin ceph-ansible]$ vim group_vars/all.yml #Version CEPH à déployer ###################################### # Releases name to number dictionary # ###################################### ceph_release_num: 15 cluster: ceph #Inventaires des objets à installer mon_group_name: mons osd_group_name: osds rgw_group_name: rgws mds_group_name: mdss nfs_group_name: nfss rbdmirror_group_name: rbdmirrors lient_group_name: clients iscsi_gw_group_name: iscsigws mgr_group_name: mgrs rgwloadbalancer_group_name: rgwloadbalancers grafana_server_group_name: grafana-server #monitoring_group_name: monitoring #Firewall sur les Nœuds configure_firewall: True # Open ports on corresponding nodes if firewall is installed on it ceph_mon_firewall_zone: public ceph_mgr_firewall_zone: public ceph_osd_firewall_zone: public ceph_rgw_firewall_zone: public ceph_mds_firewall_zone: public ceph_nfs_firewall_zone: public ceph_rbdmirror_firewall_zone: public ceph_iscsi_firewall_zone: public ceph_dashboard_firewall_zone: public ceph_rgwloadbalancer_firewall_zone: public #NTP sur les Noeuds ntp_service_enabled: true ntp_daemon_type: chronyd #Option version distribution ceph_repository_type: cdn ceph_origin: repository ceph_repository: community ceph_stable_release: octopusy #Choix Réseau à utiliser (ici LABO vmbr3) monitor_interface: ens18 radosgw_interface: ens18 public_network: 172.16.186.0/24 #DashBoard Ceph dashboard_enabled: True dashboard_protocol: http dashboard_admin_user: admin dashboard_admin_password: Choux2Fleur grafana_admin_user: admin grafana_admin_password: Choux2Fleur
2°) Configurer les OSD disque via ceph-ansible (osds.yml)
[cephuser@node01-ceph-admin ceph-ansible]$ cp group_vars/osds.yml.sample group_vars/osds.yml
[cephuser@node01-ceph-admin ceph-ansible]$ vim group_vars/osds.yml copy_admin_key: true devices: - /dev/sdb
3°) Configurer nos hosts via-ansible (hosts)
[cephuser@node01-ceph-admin ceph-ansible]$ vim hosts # Connexion SSH via cephuser [all:vars] ansible_ssh_user=cephuser ansible_become=true ansible_become_method=sudo ansible_become_user=root # Noeuds Moniteur [mons] node02-ceph-mon1 node03-ceph-mon2 node04-ceph-mon3 # Noeuds MDS [mdss] node02-ceph-mon1 node03-ceph-mon2 node04-ceph-mon3 # Noeuds RGW [rgws] node02-ceph-mon1 node03-ceph-mon2 node04-ceph-mon3 # Noeuds Manager MGRS [mgrs] node02-ceph-mon1 node03-ceph-mon2 node04-ceph-mon3 # Noeuds OSD (Object Storage Daemon) [osds] node05-ceph-osd1 node06-ceph-osd2 node07-ceph-osd3 node08-ceph-osd4 node09-ceph-osd5 node10-ceph-osd6 node11-ceph-osd7 node12-ceph-osd8 # Grafana server (HA) [grafana-server] node02-ceph-mon1 node03-ceph-mon2 node04-ceph-mon3
V.Déployer le Cluster et Grafana (site.yml)
[cephuser@node01-ceph-admin ceph-ansible]$ cp site.yml.sample site.yml [cephuser@node01-ceph-admin ceph-ansible]$ ansible-playbook -i hosts site.yml
Cette étape va déployer le Cluster Ceph via Ansible…. Cela risque de durer
A la fin du déploiement
1 °) Check le Cluster Ceph déployé
[cephuser@node01-ceph-admin ceph-ansible]$ ssh node02-ceph-mon1 [cephuser@node02-ceph-mon1 ~]$ sudo ceph -s
[cephuser@node02-ceph-mon1 ~]$ sudo ceph config set mon auth_allow_insecure_global_id_reclaim false
Le pool OSD
[cephuser@node02-ceph-mon1 ~]$ sudo ceph osd tree
2°) Check Grafana
Mon réseau de LAB est sur le Subnet 172.16.185.0/24 et mon réseau de test est sur le Subnet 192.168.1.0/24.De ce fait pour tester la partie Grafana je vais monter provisoirement une seconde carte réseau virtuelle.
[root@node02-ceph-mon1 ~]# firewall-cmd --add-interface ens19 [root@node02-ceph-mon1 ~]# firewall-cmd --add-source=192.168.1.0/24 --zone=public --permanent && firewall-cmd --reload
[root@node02-ceph-mon1 ~]# vi /etc/grafana/grafana.ini #http_addr = 172.16.186.41 http_addr = 192.168.1.29
2°) Update Pie Chart
[root@node02-ceph-mon1 chris]# wget -nv https://grafana.com/api/plugins/grafana-piechart-panel/versions/latest/download -O /tmp/grafana-piechart-panel.zip [root@node02-ceph-mon1 chris]# dnf install unzip [root@node02-ceph-mon1 chris]# unzip -q /tmp/grafana-piechart-panel.zip -d /tmp [root@node02-ceph-mon1 chris]# mv /tmp/grafana-piechart-panel /var/lib/grafana/plugins/grafana-piechart-panel [root@node02-ceph-mon1 tmp]# sudo service grafana-server restart
Choisir nos sources d’affichages pour Grafana
Les 3 nœuds grafana (moniteurs) peuvent être par la suite pilotés par un loadbalancing HAProxy pour rendre la supervision toujours disponible quel que soit l’état d’un des nœuds moniteurs.
Exemple : Configurer un HA Proxy
Views: 41