Ceph

De Justine's wiki
Aller à la navigation Aller à la recherche

Sources

Présentation

Wikipédia : "Ceph est une solution libre de stockage distribué (software-defined storage) très populaire qui propose trois protocoles en un avec : Bloc, Fichiers & Objet (S3). Les objectifs principaux de Ceph sont d'être complètement distribués sans point unique de défaillance, extensible jusqu'à l'exaoctet et librement disponible. Les données sont répliquées, permettant au système d'être tolérant aux pannes."

Ceph permet de disposer d'un cluster de partage de fichiers assez efficace et manageable. Il est associé à son propre FS, CephFS.

Une architecture Ceph peut contenir plusieurs rôles:

  • Une machine d'administration (ceph-mgr), où l'on installera Ceph-adm. Celle-ci servira à bootstraper les autres. Celle-ci suit les métriques du cluster et orchestre le cluster; elle fournit aussi
  • Une machine ceph-mon (monitor), qui maintient une série de maps de l'état du cluster. Celles-ci sont critiques pour que les daemon Ceph puissent se coordonner. Les monitors gèrent aussi l'authentification entre les daemons et les clients. Il en faut au moins 3 pour avoir de la redondance et de la haute dispo.
  • Des OSD (Object Storage Daemon), qui stockent les données, s'occupent des réplications et de la recovery. Il en faut au moins 3 pour avoir de la redondance et de la HA.
  • Des serveurs MDS (Metadata Server). Ils stockent les métadonnées pour CephFS. Cela permet à un système POSIX de lancer des commandes comme ls, find... sans placer une grosse charge sur les MDS.

Une seule machine peut recouvrir plusieurs rôles, notamment dans le cadre d'un lab.

Installation

Je vais ici passer par la méthode CephADM, qui est l'installation en mode paquet. Il existe aussi Rook, qui permet une installation sur un cluster k8s.

PAS SUR CephADM est un script qui, sur le même principe qu'Ansible, va se connecter en SSH aux machines pour les bootstraper. Il doit donc avoir un accès en SSH aux machines avec les droits sudo, le tout sans mdp. En outre, il est assez exigeant sur un certain nombre de choses : il ne fonctionne pas depuis un conteneur lxc (en tout cas, je n'ai pas réussi). Dans les exigences, Ceph n'as pas non plus l'air d'aimer que les machines aient de noms qui soient des fqdn. /PAS SUR

Outre les Prérequis hardware, les prérequis pour notre cluster sont:

  • Python 3
  • Systemd
  • Docker
  • Une synchro temporelle
  • LVM est recommandé pour gérer notre stockage.

Les ports à ouvrir sont: Pour ceph-mon:

  • 3300 and 6789 (tcp)

Mise en place avec ceph-adm

Je pars de ma machine ceph-mon.

Je récupère le script d'install:

curl --silent --remote-name --location https://github.com/ceph/ceph/raw/pacific/src/cephadm/cephadm
chmod +x cephadm

Je pourrais utiliser le script tel quel, mais je vais l'installer.

./cephadm add-repo --release pacific
./cephadm install

Initialisation du cluster

Toujours depuis mon adm, je vais initialiser mon cluster en créatn un ceph-mon sur la machine locale.