meta données pour cette page
Déployer un cluster de stockage Jewel (stable)
Ceph va nous permettre d'acquérir une grande quantité de stockage hautement disponible car les données sont réparties sur les neouds mais également redondant en cas de panne sur l'un de ces nœuds. Par défaut il en faut 3 pour que la parité puisse fonctionner.
Voici l'infrastructure que nous allons mettre en place :
A la suite de ce tutoriel, nous allons configurer un manager qui aura pour rôle de surveiller, contrôler et manager les nœuds et en contre partie, il ne contiendra pas de données utilisateurs. Lorsque l'on créera un point de montage sur une machine cliente (ici xmg), on précisera l’IP d'un serveur parmi les nœuds (ici node).
Initialisation du cluster
Installons d'abord les paquets requis par le manager :
sudo wget -q -O- 'https://download.ceph.com/keys/release.asc' | sudo apt-key add - sudo echo deb https://download.ceph.com/debian-jewel/ jessie main | sudo tee /etc/apt/sources.list.d/ceph.list sudo apt-get update && sudo apt-get install ceph-deploy
Puis ceux pour les nodes :
sudo apt-get install ntp openssh-server libnss-mdns
Le paquet ntp na permettre de fournir un temps précis lors de l'écriture des journaux. Le paquet openssh-server car les administrations des serveurs se feront avec le protocole SSH et le paquet libnss-mdns pour publier le hostname en broadcast sur le réseau. Cela évite d'utiliser des adresses IPs dans les étapes suivantes.
Par principe de sécurité, créons notre utilisateur cephfs sur chacun des serveurs :
sudo useradd -d /home/cephfs -m cephfs sudo echo cephfs:cephfs |sudo chpasswd sudo echo "cephfs ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/cephfs sudo chmod 0440 /etc/sudoers.d/cephfs su cephfs
Pour que les commandes réalisé par le manager se fasse sans interruption, créons-lui une paire de clé dont la publique devra être transmise aux serveurs nodes :
ssh-keygen -N "" -f /home/cephfs/.ssh/id_rsa ssh-copy-id -i /home/cephfs/.ssh/id_rsa.pub cephfs@ceph2 ssh-copy-id -i /home/cephfs/.ssh/id_rsa.pub cephfs@ceph3 ssh-copy-id -i /home/cephfs/.ssh/id_rsa.pub cephfs@ceph4
Vu que nous connaissons la composition de notre cluster, renseignons-le :
nano /home/cephfs/.ssh/config
Host ceph1 Hostname ceph1 User cephfs Host ceph2 Hostname ceph2 User cephfs Host ceph3 Hostname ceph3 User cephfs Host ceph4 Hostname ceph4 User cephfs
Déployer des nœuds
Maintenant que le manager peux discuter avec tous les nœuds, déclarons nos nœuds qui contiendrons les futurs données utilisateurs :
ceph-deploy new ceph2 ceph3 ceph4
Cela à créé ces fichiers :
ls ceph.conf ceph-deploy-ceph.log ceph.mon.keyring
- ceph.conf contient la configuration du cluster
- ceph-deploy-ceph.log est le fichier de journalisation qui contient les sorties des commandes exécuté par ceph-deploy
- ceph.mon.keyring est la clé secrête utilisé pour communiquer avec tout le cluster
Si l'on utilise un système de fichier ext4 il est nécessaire de renseigner les paramètres ci-dessous :
nano ceph.conf
Rajouter ces lignes à la fin du fichier :
osd_max_object_name_len = 256 osd_max_object_namespace_len = 64
Puis on installe les outils clients pour que les serveurs puissent interagir avec le superviseur :
ceph-deploy install ceph1 ceph2 ceph3 ceph4
Partager les informations et clés d'authentification entre les machines. Cela peut être utile pour le monitoring:
ceph-deploy mon create-initial
On déclare les partitions qui vont être utilisé par le stockage :
ceph-deploy osd prepare ceph2:/var/lib/ceph/osd ceph3:/var/lib/ceph/osd ceph4:/var/lib/ceph/osd
Puis on les actives :
ceph-deploy osd activate ceph2:/var/lib/ceph/osd ceph3:/var/lib/ceph/osd ceph4:/var/lib/ceph/osd
Partager les configurations :
ceph-deploy admin ceph1 ceph2 ceph3 ceph4
Pour utiliser correctement le système de fichier, il faut déclarer un serveur qui détiendra les méta-datas:
ceph-deploy mds create ceph2
Ces méta-data sont très importante car elles permettent de localiser la donnée stocké dans le cluster.
Vérifier que le cluster fonctionne en analysant l'état des OSD :
sudo ceph status
cluster 9fa4f977-ffdb-433c-8fa4-6596f530cc85 health HEALTH_WARN too many PGs per OSD (320 > max 300) monmap e3: 3 mons at {ceph2=192.168.1.167:6789/0,ceph3=192.168.1.164:6789/0,ceph4=192.168.1.178:6789/0} election epoch 8, quorum 0,1,2 ceph3,ceph2,ceph4 fsmap e2: 0/0/1 up mgr active: ceph3 standbys: ceph4, ceph2 osdmap e19: 3 osds: 3 up, 3 in <- ça semble fonctionner flags sortbitwise,require_jewel_osds,require_kraken_osds pgmap v38: 320 pgs, 3 pools, 0 bytes data, 0 objects 65988 kB used, 91792 MB / 91856 MB avail 320 active+clean
Créer un pool
Un pool est comme une partition dont celle-ci est répartie sur plusieurs machines. En d'autre terme, le pool est placé parmi les OSD déclarés plus haut. Vu que l'on utilise uniquement 3 OSD, on renseigne au pool la valeur 128
sudo ceph osd pool create cephfs_data 128 sudo ceph osd pool create cephfs_metadata 128
On active le système de fichier :
sudo ceph fs new cephfs cephfs_metadata cephfs_data
On remarquera qu'un système de fichier à besoin de deux pools. L'un comprendra les données et l'autre les méta-datas.
Observons le résultat obtenu avec la commande suivante :
sudo ceph osd lspools
0 rbd,1 cephfs_data,2 cephfs_metadata,
Monter la partition
Attaquons enfin la dernière partie qui consiste à monter le système de fichier Ceph sur notre machine cliente xmg.
Cependant on a d'abord besoin de récupérer la clé secrète qui doit se trouver dans le fichier ci-dessous :
cat /etc/ceph/ceph.client.admin.keyring
On doit retomber sur ce type de résultat, copions la clé qui va permettre de s'authentifier auprès d'un nœud.
[client.admin] key = AQATSKdNGBnwLhAAnNDKnH65FmVKpXZJVasUeQ==
Admettons que notre point de montage se fera dans le dossier /mnt. On devra faire :
sudo mount -t ceph ceph2:/ /mnt/ -o name=admin,secret=AQATSKdNGBnwLhAAnNDKnH65FmVKpXZJVasUeQ==
Voici la preuve que ça fonctionne bien !
Filesystem Size Used Avail Use% Mounted on /dev/sda1 9.2G 1.0G 7.7G 12% / udev 10M 0 10M 0% /dev tmpfs 49M 4.4M 45M 9% /run tmpfs 122M 0 122M 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 122M 0 122M 0% /sys/fs/cgroup none 55G 52G 3.5G 94% /vagrant 192.168.1.164:/ 24G 18G 24G 75% /mnt/ceph