Accéder au contenuNavigation Accéder à la page : page précédente [raccourci clavier p] / page suivante [raccourci clavier n]
documentation.suse.com / Documentation de SUSE Enterprise Storage 7.1 / Guide de déploiement / Déploiement de la grappe Ceph / Déploiement de la grappe Bootstrap à l'aide de ceph-salt
S'applique à SUSE Enterprise Storage 7.1

7 Déploiement de la grappe Bootstrap à l'aide de ceph-salt

Cette section vous guide tout au long du processus de déploiement d'une grappe Ceph de base. Lisez attentivement les sous-sections suivantes et exécutez les commandes incluses dans l'ordre indiqué.

7.1 Installation ceph-salt

ceph-salt fournit des outils pour le déploiement de grappes Ceph gérées par cephdm. ceph-salt utilise l'infrastructure Salt pour gérer le système d'exploitation (par exemple, les mises à jour logicielles ou la synchronisation horaire) et définir les rôles pour les minions Salt.

Sur Salt Master, installez le paquetage ceph-salt :

root@master # zypper install ceph-salt

La commande ci-dessus a installé ceph-salt-formula en tant que dépendance ayant modifié la configuration de Salt Master en insérant des fichiers supplémentaires dans le répertoire /etc/salt/master.d. Pour appliquer les modifications, redémarrez salt-master.service et synchronisez les modules Salt :

root@master # systemctl restart salt-master.service
root@master # salt \* saltutil.sync_all

7.2 Configuration des propriétés de grappe

Utilisez la commande ceph-salt config pour configurer les propriétés de base de la grappe.

Important
Important

Le fichier /etc/ceph/ceph.conf est géré par cephadm et les utilisateurs ne doivent pas le modifier. Les paramètres de configuration Ceph doivent être définis à l'aide de la nouvelle commande ceph config. Pour plus d'informations, reportez-vous au Section 28.2, « Base de données de configuration ».

7.2.1 Utilisation du shell ceph-salt

Si vous exécutez config sans chemin ni sous-commande, vous accédez à un shell ceph-saltceph-salt interactif. Le shell est pratique si vous devez configurer plusieurs propriétés dans un seul lot sans devoir saisir la syntaxe complète de la commande.

root@master # ceph-salt config
/> ls
o- / ............................................................... [...]
  o- ceph_cluster .................................................. [...]
  | o- minions .............................................. [no minions]
  | o- roles ....................................................... [...]
  |   o- admin .............................................. [no minions]
  |   o- bootstrap ........................................... [no minion]
  |   o- cephadm ............................................ [no minions]
  |   o- tuned ..................................................... [...]
  |     o- latency .......................................... [no minions]
  |     o- throughput ....................................... [no minions]
  o- cephadm_bootstrap ............................................. [...]
  | o- advanced .................................................... [...]
  | o- ceph_conf ................................................... [...]
  | o- ceph_image_path .................................. [ no image path]
  | o- dashboard ................................................... [...]
  | | o- force_password_update ................................. [enabled]
  | | o- password ................................................ [admin]
  | | o- ssl_certificate ....................................... [not set]
  | | o- ssl_certificate_key ................................... [not set]
  | | o- username ................................................ [admin]
  | o- mon_ip .................................................. [not set]
  o- containers .................................................... [...]
  | o- registries_conf ......................................... [enabled]
  | | o- registries .............................................. [empty]
  | o- registry_auth ............................................... [...]
  |   o- password .............................................. [not set]
  |   o- registry .............................................. [not set]
  |   o- username .............................................. [not set]
  o- ssh ............................................... [no key pair set]
  | o- private_key .................................. [no private key set]
  | o- public_key .................................... [no public key set]
  o- time_server ........................... [enabled, no server host set]
    o- external_servers .......................................... [empty]
    o- servers ................................................... [empty]
    o- subnet .................................................. [not set]

Comme vous pouvez le constater dans la sortie de la commande ceph-saltls de , la configuration de la grappe est organisée en arborescence. Pour configurer une propriété spécifique de la grappe dans le shell ceph-salt, deux options s'offrent à vous :

  • Exécutez la commande à partir de la position actuelle et entrez le chemin absolu de la propriété comme premier argument :

    /> /cephadm_bootstrap/dashboard ls
    o- dashboard ....................................................... [...]
      o- force_password_update ..................................... [enabled]
      o- password .................................................... [admin]
      o- ssl_certificate ........................................... [not set]
      o- ssl_certificate_key ....................................... [not set]
      o- username .................................................... [admin]
    /> /cephadm_bootstrap/dashboard/username set ceph-admin
    Value set.
  • Accédez au chemin dont vous devez configurer la propriété et exécutez la commande :

    /> cd /cephadm_bootstrap/dashboard/
    /ceph_cluster/minions> ls
    o- dashboard ....................................................... [...]
      o- force_password_update ..................................... [enabled]
      o- password .................................................... [admin]
      o- ssl_certificate ........................................... [not set]
      o- ssl_certificate_key ....................................... [not set]
      o- username ................................................[ceph-admin]
Astuce
Astuce : saisie semi-automatique des extraits de configuration

Lorsque vous êtes dans un shell ceph-salt, vous pouvez utiliser la fonction de saisie semi-automatique similaire à celle d'un shell Linux normal (bash). Il complète les chemins de configuration, les sous-commandes ou les noms des minions Salt. Lors de la saisie semi-automatique d'un chemin de configuration, deux options s'offrent à vous :

  • Pour laisser le shell terminer un chemin par rapport à votre position actuelle, appuyez deux fois sur la touche TAB →|.

  • Pour laisser le shell terminer un chemin absolu, entrez / et appuyez deux fois sur la touche TAB →|.

Astuce
Astuce : navigation avec les flèches du clavier

Si vous entrez cd à partir du shell ceph-salt sans aucun chemin, la commande imprime une structure d'arborescence de la configuration de grappe avec la ligne du chemin actuellement actif. Vous pouvez utiliser les flèches Haut et Bas pour parcourir les différentes lignes. Après avoir confirmé avec la touche Entrée, le chemin de configuration est remplacé par le dernier chemin actif.

Important
Important : convention

Pour assurer la cohérence de la documentation, nous utiliserons une syntaxe de commande unique sans accéder au shell ceph-salt. Par exemple, vous pouvez répertorier l'arborescence de configuration de la grappe à l'aide de la commande suivante :

root@master # ceph-salt config ls

7.2.2 Ajout de minions Salt

Incluez tout ou partie des minions Salt que vous avez déployés et acceptés au Chapitre 6, Déploiement de Salt dans la configuration de la grappe Ceph. Vous pouvez spécifier les minions Salt à l'aide de leur nom complet ou utiliser une expression globale « * » et « ? » pour inclure plusieurs minions Salt simultanément. Utilisez la sous-commande add sous le chemin /ceph_cluster/minions. La commande suivante inclut tous les minions Salt acceptés :

root@master # ceph-salt config /ceph_cluster/minions add '*'

Vérifiez que les minions Salt spécifiés ont été ajoutés :

root@master # ceph-salt config /ceph_cluster/minions ls
o- minions ................................................. [Minions: 5]
  o- ses-master.example.com .................................. [no roles]
  o- ses-min1.example.com .................................... [no roles]
  o- ses-min2.example.com .................................... [no roles]
  o- ses-min3.example.com .................................... [no roles]
  o- ses-min4.example.com .................................... [no roles]

7.2.3 Spécification des minions Salt gérés par cephadm

Spécifiez les noeuds qui appartiendront à la grappe Ceph et qui seront gérés par cephadm. Incluez tous les noeuds qui exécuteront les services Ceph ainsi que le noeud Admin :

root@master # ceph-salt config /ceph_cluster/roles/cephadm add '*'

7.2.4 Spécification du noeud Admin

Le noeud Admin est le noeud sur lequel le fichier de configuration ceph.conf et le trousseau de clés Ceph admin sont installés. les commandes liées à Ceph sont généralement exécutées sur le noeud Admin.

Astuce
Astuce : noeud Admin et Salt Master sur le même noeud

Dans un environnement homogène dans lequel tous les hôtes ou la plupart d'entre eux appartiennent à SUSE Enterprise Storage, il est recommandé de placer le noeud Admin sur le même hôte que Salt Master.

Dans un environnement hétérogène dans lequel une infrastructure Salt héberge plusieurs grappes, par exemple SUSE Enterprise Storage avec SUSE Manager, ne placez pas le noeud Admin sur le même hôte que Salt Master.

Pour spécifier le noeud Admin, exécutez la commande suivante :

root@master # ceph-salt config /ceph_cluster/roles/admin add ses-master.example.com
1 minion added.
root@master # ceph-salt config /ceph_cluster/roles/admin ls
o- admin ................................................... [Minions: 1]
  o- ses-master.example.com ...................... [Other roles: cephadm]
Astuce
Astuce : installation de ceph.conf et du trousseau de clés admin sur plusieurs noeuds

Vous pouvez installer le fichier de configuration Ceph et le trousseau de clés admin sur plusieurs noeuds si votre déploiement l'exige. Pour des raisons de sécurité, évitez de les installer sur tous les noeuds de la grappe.

7.2.5 Spécification du premier noeud MON/MGR

Vous devez spécifier quel minion Salt de la grappe va démarrer la grappe. Ce minion sera alors le premier à exécuter les services Ceph Monitor et Ceph Manager.

root@master # ceph-salt config /ceph_cluster/roles/bootstrap set ses-min1.example.com
Value set.
root@master # ceph-salt config /ceph_cluster/roles/bootstrap ls
o- bootstrap ..................................... [ses-min1.example.com]

En outre, vous devez spécifier l'adresse IP de démarrage du service MON sur le réseau public pour vous assurer que le paramètre public_network est correctement défini, par exemple :

root@master # ceph-salt config /cephadm_bootstrap/mon_ip set 192.168.10.20

7.2.6 Spécification de profils ajustés

Vous devez spécifier quels minions de la grappe ont des profils activement ajustés. Pour ce faire, ajoutez ces rôles explicitement à l'aide des commandes suivantes :

Note
Note

Un minion ne peut pas cumuler les rôles de latency (latence) et throughput (débit).

root@master # ceph-salt config /ceph_cluster/roles/tuned/latency add ses-min1.example.com
Adding ses-min1.example.com...
1 minion added.
root@master # ceph-salt config /ceph_cluster/roles/tuned/throughput add ses-min2.example.com
Adding ses-min2.example.com...
1 minion added.

7.2.7 Génération d'une paire de clés SSH

cephadm utilise le protocole SSH pour communiquer avec les noeuds de la grappe. Un compte utilisateur nommé cephadm est automatiquement créé et utilisé pour la communication SSH.

Vous devez générer la partie privée et la partie publique de la paire de clés SSH :

root@master # ceph-salt config /ssh generate
Key pair generated.
root@master # ceph-salt config /ssh ls
o- ssh .................................................. [Key Pair set]
  o- private_key ..... [53:b1:eb:65:d2:3a:ff:51:6c:e2:1b:ca:84:8e:0e:83]
  o- public_key ...... [53:b1:eb:65:d2:3a:ff:51:6c:e2:1b:ca:84:8e:0e:83]

7.2.8 Configuration du serveur horaire

L'heure de tous les noeuds de la grappe doit être synchronisée avec une source horaire fiable. Plusieurs scénarios existent pour aborder la synchronisation horaire :

  • Si tous les noeuds de la grappe sont déjà configurés pour synchroniser leur heure à l'aide du service NTP de votre choix, désactivez complètement la gestion du serveur horaire :

    root@master # ceph-salt config /time_server disable
  • Si votre site possède déjà une seule source horaire, spécifiez le nom d'hôte de la source horaire :

     root@master # ceph-salt config /time_server/servers add time-server.example.com
  • Dans le cas contraire, ceph-salt a la possibilité de configurer l'un des minions Salt pour qu'il fasse office de serveur horaire pour le reste de la grappe. Il est parfois appelé « serveur horaire interne ». Dans ce scénario, ceph-salt configure le serveur horaire interne (qui doit être l'un des minions Salt) pour synchroniser son heure avec celle d'un serveur horaire externe, tel que pool.ntp.org et configure tous les autres minions pour obtenir leur heure à partir du serveur horaire interne. Pour ce faire, procédez comme suit :

    root@master # ceph-salt config /time_server/servers add ses-master.example.com
    root@master # ceph-salt config /time_server/external_servers add pool.ntp.org

    L'option /time_server/subnet spécifie le sous-réseau à partir duquel les clients NTP sont autorisés à accéder au serveur NTP. Elle est définie automatiquement lorsque vous spécifiez /time_server/servers. Si vous devez la modifier ou la spécifier manuellement, exécutez :

    root@master # ceph-salt config /time_server/subnet set 10.20.6.0/24

Vérifiez les paramètres du serveur horaire :

root@master # ceph-salt config /time_server ls
o- time_server ................................................ [enabled]
  o- external_servers ............................................... [1]
  | o- pool.ntp.org ............................................... [...]
  o- servers ........................................................ [1]
  | o- ses-master.example.com ..................................... [...]
  o- subnet .............................................. [10.20.6.0/24]

Pour plus d'informations sur la configuration de la synchronisation horaire, reportez-vous à l'adresse https://documentation.suse.com/sles/15-SP3/html/SLES-all/cha-ntp.html#sec-ntp-yast.

7.2.9 Configuration des informations d'identification de connexion de Ceph Dashboard

Ceph Dashboard sera disponible après le déploiement de la grappe de base. Pour y accéder, vous devez définir un nom d'utilisateur et un mot de passe valides, par exemple :

root@master # ceph-salt config /cephadm_bootstrap/dashboard/username set admin
root@master # ceph-salt config /cephadm_bootstrap/dashboard/password set PWD
Astuce
Astuce : mise à jour forcée du mot de passe

Par défaut, le premier utilisateur du tableau de bord est obligé de modifier son mot de passe lors de la première connexion au tableau de bord. Pour désactiver cette fonction, exécutez la commande suivante :

root@master # ceph-salt config /cephadm_bootstrap/dashboard/force_password_update disable

7.2.10 Utilisation du registre de conteneurs

La grappe Ceph doit avoir accès à un registre de conteneurs afin de pouvoir télécharger et déployer des services Ceph conteneurisés. Il existe deux façons d'accéder au registre :

  • Si votre grappe peut accéder au registre par défaut à l'adresse registration.suse.com (directement ou via un proxy), vous pouvez faire pointer ceph-salt directement vers cette URL sans créer de registre local. Continuez en suivant les étapes de la Section 7.2.10.2, « Configuration du chemin d'accès aux images du conteneur ».

  • Si votre grappe ne peut pas accéder au registre par défaut (par exemple, pour un déploiement à vide), vous devez configurer un registre de conteneurs local. Une fois le registre local créé et configuré, vous devez faire pointer ceph-salt sur ce registre.

7.2.10.1 Création et configuration du registre local (facultatif)

Important
Important

Il existe de nombreuses méthodes pour créer un registre local. Les instructions de cette section proposent des exemples de création de registres sécurisés et non sécurisés. Pour obtenir des informations générales sur l'exécution d'un registre d'images de conteneur, consultez le site https://documentation.suse.com/sles/15-SP3/single-html/SLES-container/#sec-docker-registry-installation.

Astuce
Astuce : placement et utilisation des ports

Déployez le registre sur une machine accessible par tous les noeuds de la grappe. Nous recommandons le noeud Admin. Par défaut, le registre écoute sur le port 5000.

Dans le noeud de registre, utilisez la commande suivante pour vérifier que le port est libre :

ss -tulpn | grep :5000

Si d'autres processus (tels que iscsi-tcmu) écoutent déjà sur le port 5000, définissez un autre port libre qui peut être utilisé pour l'assignation au port 5000 dans le conteneur de registres.

Procédure 7.1 : Création du registre local
  1. Vérifiez que l'extension Containers Module est activée :

    > SUSEConnect --list-extensions | grep -A2 "Containers Module"
    Containers Module 15 SP3 x86_64 (Activated)
  2. Vérifiez que les paquetages suivants sont installés : apache2-utils (en cas d'activation d'un registre sécurisé), cni, cni-plugins, podman, podman-cni-config et skopeo.

  3. Réunissez les informations suivantes :

    • Nom de domaine complet de l'hôte de registre (REG_HOST_FQDN).

    • Numéro de port disponible utilisé pour l'assignation du port 5000 au conteneur de registres (REG_HOST_PORT)

    • Si le registre doit être sécurisé ou non (insecure=[true|false]).

  4. Pour démarrer un registre non sécurisé (sans chiffrement SSL), procédez comme suit :

    1. Configurez ceph-salt pour le registre non sécurisé :

      cephuser@adm > ceph-salt config containers/registries_conf enable
      cephuser@adm > ceph-salt config containers/registries_conf/registries \
       add prefix=REG_HOST_FQDN insecure=true \
       location=REG_HOST_PORT:5000
    2. Démarrez le registre non sécurisé en créant le répertoire nécessaire (par exemple, /var/lib/registry) et en démarrant le registre avec la commande podman :

      # mkdir -p /var/lib/registry
      # podman run --privileged -d --name registry \
       -p REG_HOST_PORT:5000 -v /var/lib/registry:/var/lib/registry \
       --restart=always registry:2
    3. Pour que le registre se lance après un redémarrage, créez un fichier d'unité systemd et activez-le :

      > sudo podman generate systemd --files --name registry
      > sudo mv container-registry.service /etc/systemd/system/
      > sudo systemctl enable container-registry.service
  5. Pour démarrer un registre sécurisé, procédez comme suit :

    1. Créez les répertoires nécessaires :

      # mkdir -p /var/lib/registry/{auth,certs}
    2. Générez un certificat SSL :

      # openssl req -newkey rsa:4096 -nodes -sha256 \
       -keyout /var/lib/registry/certs/domain.key -x509 -days 365 \
       -out /var/lib/registry/certs/domain.crt
      Note
      Note

      Définissez la valeur CN=[valeur] sur le nom de domaine complet de l'hôte ([FQDN_HÔTE_REG]).

    3. Copiez le certificat sur tous les noeuds de la grappe et rafraîchissez le cache du certificat :

      # salt-cp '*' /var/lib/registry/certs/domain.crt \
       /etc/pki/trust/anchors/
      # salt '*' cmd.shell "update-ca-certificates"
    4. Générez une combinaison de nom d'utilisateur et de mot de passe pour l'authentification auprès du registre :

      # htpasswd2 -bBc /var/lib/registry/auth/htpasswd \
       REG_USERNAME REG_PASSWORD
    5. Démarrez le registre sécurisé. Utilisez le drapeau REGISTRY_STORAGE_DELETE_ENABLED=true pour pouvoir supprimer les images par la suite à l'aide de la commande skopeo delete.

      podman run --name myregistry -p REG_HOST_PORT:5000 \
       -v /var/lib/registry:/var/lib/registry \
       -v /var/lib/registry/auth:/auth:z \
       -e "REGISTRY_AUTH=htpasswd" \
       -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
       -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \
       -v /var/lib/registry/certs:/certs:z \
       -e "REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt" \
       -e "REGISTRY_HTTP_TLS_KEY=/certs/domain.key" \
       -e REGISTRY_STORAGE_DELETE_ENABLED=true \
       -e REGISTRY_COMPATIBILITY_SCHEMA1_ENABLED=true -d registry:2
    6. Testez l'accès sécurisé au registre :

      > curl https://REG_HOST_FQDN:REG_HOST_PORT/v2/_catalog \
       -u REG_USERNAME:REG_PASSWORD
  6. Lorsque le registre local a été créé, vous devez synchroniser les images de conteneur du registre SUSE officiel sur le site registration.suse.com avec le registre local. Vous pouvez utiliser la commande skopeo sync trouvée dans le paquetage skopeo à cette fin. Pour plus de détails, reportez-vous à la page de manuel (man 1 skopeo-sync). Prenez en considération les exemples suivants :

    Exemple 7.1 : affichage des fichiers de manifeste
    skopeo inspect docker://registry.suse.com/ses/7.1/ceph/ceph | jq .RepoTags
    skopeo inspect docker://registry.suse.com/ses/7.1/ceph/grafana | jq .RepoTags
    skopeo inspect docker://registry.suse.com/ses/7.1/ceph/prometheus-server:2.32.1 | jq .RepoTags
    skopeo inspect docker://registry.suse.com/ses/7.1/ceph/prometheus-node-exporter:1.1.2 | jq .RepoTags
    skopeo inspect docker://registry.suse.com/ses/7.1/ceph/prometheus-alertmanager:0.21.0 | jq .RepoTags
    Exemple 7.2 : synchronisation avec un répertoire

    Synchronisez toutes les images Ceph :

    skopeo sync --src docker --dest dir registry.suse.com/ses/7.1/ceph/ceph /root/images/

    Synchronisez les dernières images uniquement :

    skopeo sync --src docker --dest dir registry.suse.com/ses/7.1/ceph/ceph:latest /root/images/
    Exemple 7.3 : synchronisation des images Grafana :
    skopeo sync --src docker --dest dir registry.suse.com/ses/7.1/ceph/grafana /root/images/

    Synchronisez uniquement les dernières images Grafana :

    skopeo sync --src docker --dest dir registry.suse.com/ses/7.1/ceph/grafana:latest /root/images/
    Exemple 7.4 : synchronisation des dernières images Prometheus
    skopeo sync --src docker --dest dir registry.suse.com/ses/7.1/ceph/prometheus-server:2.32.1 /root/images/
    skopeo sync --src docker --dest dir registry.suse.com/ses/7.1/ceph/prometheus-node-exporter:1.1.2 /root/images/
    skopeo sync --src docker --dest dir registry.suse.com/ses/7.1/ceph/prometheus-alertmanager:0.21.0 /root/images/
Procédure 7.2 : configuration du registre local et des informations d'identification d'accès
  1. Configurez l'URL du registre local :

    cephuser@adm > ceph-salt config /containers/registry_auth/registry set REG_HOST_URL
  2. Configurez le nom d'utilisateur et le mot de passe pour accéder au registre local :

    cephuser@adm > ceph-salt config /containers/registry_auth/username set REG_USERNAME
    cephuser@adm > ceph-salt config /containers/registry_auth/password set REG_PASSWORD
Astuce
Astuce : cache de registre

Pour éviter de resynchroniser le registre local lorsque de nouveaux conteneurs mis à jour apparaissent, vous pouvez configurer un cache de registre.

7.2.10.2 Configuration du chemin d'accès aux images du conteneur

Important
Important

Cette section vous aide à configurer le chemin d'accès aux images de conteneur de la grappe Bootstrap (déploiement de la première paire Ceph Monitor et Ceph Manager). Le chemin d'accès ne s'applique pas aux images de conteneur de services supplémentaires, par exemple, la pile de surveillance.

Astuce
Astuce : configuration du proxy HTTPS

Si vous devez utiliser un proxy pour communiquer avec le serveur de registre de conteneur, effectuez les étapes de configuration suivantes sur tous les noeuds de grappe :

  1. Copiez le fichier de configuration des conteneurs :

    > sudo cp /usr/share/containers/containers.conf /etc/containers/containers.conf
  2. Modifiez le fichier que vous venez de copier et ajoutez le paramètre http_proxy à sa section [moteur], par exemple :

    > cat /etc/containers/containers.conf
     [engine]
     http_proxy=proxy.example.com
     [...]

cephadm doit connaître un chemin URI valide vers les images de conteneur. Vérifiez le paramètre par défaut en exécutant

root@master # ceph-salt config /cephadm_bootstrap/ceph_image_path ls

Si vous n'avez pas besoin d'un autre registre ou d'un registre local, spécifiez le registre de conteneurs SUSE par défaut :

root@master # ceph-salt config /cephadm_bootstrap/ceph_image_path set registry.suse.com/ses/7.1/ceph/ceph

Si votre déploiement nécessite un chemin d'accès spécifique, par exemple, un chemin d'accès à un registre local, configurez-le comme suit :

root@master # ceph-salt config /cephadm_bootstrap/ceph_image_path set LOCAL_REGISTRY_PATH

7.2.11 Activation du chiffrement des données à la volée (msgr2)

Le protocole Messenger v2 (MSGR2) est le protocole on-wire de Ceph. Il offre un mode de sécurité qui chiffre toutes les données passant sur le réseau, l'encapsulation des charges utiles d'authentification et l'activation de l'intégration future de nouveaux modes d'authentification (tels que Kerberos).

Important
Important

msgr2 n'est actuellement pas pris en charge par les clients Ceph du kernel Linux, tels que le périphérique de bloc RADOS et CephFS.

Les daemons Ceph peuvent se lier à plusieurs ports, ce qui permet aux clients Ceph hérités et aux nouveaux clients compatibles v2 de se connecter à la même grappe. Par défaut, les instances MON se lient désormais au nouveau port 3300 assigné par l'IANA (CE4h ou 0xCE4) pour le nouveau protocole v2, tout en se liant également à l'ancien port par défaut 6789 pour le protocole v1 hérité.

Le protocole v2 (MSGR2) prend en charge deux modes de connexion :

crc mode

Authentification initiale forte lorsque la connexion est établie et contrôle d'intégrité CRC32C.

secure mode

Authentification initiale forte lorsque la connexion est établie et un chiffrement complet de tout le trafic post-authentification, y compris une vérification de l'intégrité cryptographique.

Pour la plupart des connexions, il existe des options qui contrôlent les modes utilisés :

ms_cluster_mode

Mode de connexion (ou modes autorisés) utilisé(s) pour la communication entre les daemons Ceph au sein de la grappe. Si plusieurs modes sont répertoriés, ceux s'affichant en haut de la liste sont les préférés.

ms_service_mode

Liste des modes que les clients sont autorisés à utiliser lors de la connexion à la grappe.

ms_client_mode

Liste des modes de connexion, par ordre de préférence, que les clients peuvent ou sont autorisés à utiliser lorsqu'ils communiquent avec une grappe Ceph.

Il existe un ensemble parallèle d'options qui s'appliquent spécifiquement aux moniteurs, ce qui permet aux administrateurs de définir d'autres exigences (généralement plus sécurisées) en matière de communication avec les moniteurs.

ms_mon_cluster_mode

Mode de connexion (ou modes autorisés) à utiliser entre les moniteurs.

ms_mon_service_mode

Liste des modes autorisés que les clients ou les autres daemons Ceph sont autorisés à utiliser lors de la connexion aux moniteurs.

ms_mon_client_mode

Liste des modes de connexion, par ordre de préférence, que les clients ou les daemons non-moniteurs peuvent utiliser pour se connecter à des moniteurs.

Pour activer le mode de chiffrement MSGR2 pendant le déploiement, vous devez ajouter certaines options de configuration à la configuration de ceph-salt avant d'exécuter ceph-salt apply.

Pour utiliser le mode secure, exécutez les commandes suivantes.

Ajoutez la section globale à ceph_conf dans l'outil de configuration ceph-salt :

root@master # ceph-salt config /cephadm_bootstrap/ceph_conf add global

Paramétrez les options suivantes :

root@master # ceph-salt config /cephadm_bootstrap/ceph_conf/global set ms_cluster_mode "secure crc"
root@master # ceph-salt config /cephadm_bootstrap/ceph_conf/global set ms_service_mode "secure crc"
root@master # ceph-salt config /cephadm_bootstrap/ceph_conf/global set ms_client_mode "secure crc"
Note
Note

Vérifiez que secure se trouve devant crc.

Pour forcer le mode secure, exécutez les commandes suivantes :

root@master # ceph-salt config /cephadm_bootstrap/ceph_conf/global set ms_cluster_mode secure
root@master # ceph-salt config /cephadm_bootstrap/ceph_conf/global set ms_service_mode secure
root@master # ceph-salt config /cephadm_bootstrap/ceph_conf/global set ms_client_mode secure
Astuce
Astuce : mise à jour des paramètres

Si vous souhaitez modifier l'un des paramètres ci-dessus, définissez les modifications à apporter à la configuration dans la zone de stockage de la configuration du moniteur. Pour ce faire, utilisez la commande ceph config set.

root@master # ceph config set global CONNECTION_OPTION CONNECTION_MODE [--force]

Par exemple :

root@master # ceph config set global ms_cluster_mode "secure crc"

Si vous souhaitez vérifier la valeur actuelle, y compris la valeur par défaut, exécutez la commande suivante :

root@master # ceph config get CEPH_COMPONENT CONNECTION_OPTION

Par exemple, pour obtenir le mode ms_cluster_mode pour les OSD, exécutez :

root@master # ceph config get osd ms_cluster_mode

7.2.12 Configuration du réseau de grappes

Éventuellement, si vous exécutez un réseau de grappe distinct, vous devrez peut-être définir l'adresse IP réseau de la grappe suivie de la partie masque de sous-réseau après la barre oblique, par exemple 192.168.10.22/24.

Exécutez les commandes suivantes pour activer cluster_network :

root@master # ceph-salt config /cephadm_bootstrap/ceph_conf add global
root@master # ceph-salt config /cephadm_bootstrap/ceph_conf/global set cluster_network NETWORK_ADDR

7.2.13 Vérification de la configuration de la grappe

La configuration de grappe minimale est terminée. Inspectez-la pour voir si elle contient des d'erreurs flagrantes :

root@master # ceph-salt config ls
o- / ............................................................... [...]
  o- ceph_cluster .................................................. [...]
  | o- minions .............................................. [Minions: 5]
  | | o- ses-master.example.com .................................. [admin]
  | | o- ses-min1.example.com ......................... [bootstrap, admin]
  | | o- ses-min2.example.com ................................. [no roles]
  | | o- ses-min3.example.com ................................. [no roles]
  | | o- ses-min4.example.com ................................. [no roles]
  | o- roles ....................................................... [...]
  |   o- admin .............................................. [Minions: 2]
  |   | o- ses-master.example.com ....................... [no other roles]
  |   | o- ses-min1.example.com ................. [other roles: bootstrap]
  |   o- bootstrap ................................ [ses-min1.example.com]
  |   o- cephadm ............................................ [Minions: 5]
  |   o- tuned ..................................................... [...]
  |     o- latency .......................................... [no minions]
  |     o- throughput ....................................... [no minions]
  o- cephadm_bootstrap ............................................. [...]
  | o- advanced .................................................... [...]
  | o- ceph_conf ................................................... [...]
  | o- ceph_image_path .............. [registry.suse.com/ses/7.1/ceph/ceph]
  | o- dashboard ................................................... [...]
  |   o- force_password_update ................................. [enabled]
  |   o- password ................................... [randomly generated]
  |   o- username ................................................ [admin]
  | o- mon_ip ............................................ [192.168.10.20]
  o- containers .................................................... [...]
  | o- registries_conf ......................................... [enabled]
  | | o- registries .............................................. [empty]
  | o- registry_auth ............................................... [...]
  |   o- password .............................................. [not set]
  |   o- registry .............................................. [not set]
  |   o- username .............................................. [not set]
  o- ssh .................................................. [Key Pair set]
  | o- private_key ..... [53:b1:eb:65:d2:3a:ff:51:6c:e2:1b:ca:84:8e:0e:83]
  | o- public_key ...... [53:b1:eb:65:d2:3a:ff:51:6c:e2:1b:ca:84:8e:0e:83]
  o- time_server ............................................... [enabled]
    o- external_servers .............................................. [1]
    | o- 0.pt.pool.ntp.org ......................................... [...]
    o- servers ....................................................... [1]
    | o- ses-master.example.com .................................... [...]
    o- subnet ............................................. [10.20.6.0/24]
Astuce
Astuce : état de la configuration de la grappe

Vous pouvez vérifier si la configuration de la grappe est valide en exécutant la commande suivante :

root@master # ceph-salt status
cluster: 5 minions, 0 hosts managed by cephadm
config: OK

7.2.14 Exportation des configurations de grappe

Une fois que vous avez configuré la grappe de base et que sa configuration est valide, il est recommandé d'exporter sa configuration dans un fichier :

root@master # ceph-salt export > cluster.json
Avertissement
Avertissement

La sortie de l'exportation ceph-salt export inclut la clé privée SSH. Si les implications au niveau de la sécurité vous inquiètent, n'exécutez pas cette commande sans prendre les précautions appropriées.

Si vous interrompez la configuration de la grappe et que vous devez rétablir un état de sauvegarde, exécutez :

root@master # ceph-salt import cluster.json

7.3 Mise à jour des noeuds et de la grappe minimale de démarrage

Avant de déployer la grappe, mettez à jour tous les paquetages logiciels sur l'ensemble des noeuds :

root@master # ceph-salt update

Si un noeud signale Reboot is needed (Redémarrage requis) au cours de la mise à jour, cela signifie que des paquetages de système d'exploitation importants, tels que le kernel, ont été mis à jour vers une version plus récente. Vous devrez alors redémarrer le noeud pour que les modifications soient prises en compte.

Pour redémarrer tous les noeuds requis, ajoutez l'option --reboot.

root@master # ceph-salt update --reboot

Vous pouvez également les redémarrer dans le cadre d'une étape distincte :

root@master # ceph-salt reboot
Important
Important

Salt Master n'est jamais redémarré par les commandes ceph-salt update --reboot ou ceph-salt reboot. Si Salt Master doit être redémarré, vous devez le redémarrer manuellement.

Une fois les noeuds mis à jour, démarrez la grappe minimale :

root@master # ceph-salt apply
Note
Note

Une fois démarrée, la grappe dispose d'une instance de Ceph Monitor et d'une instance de Ceph Manager.

La commande ci-dessus ouvre une interface utilisateur interactive qui affiche la progression actuelle de chaque minion.

Déploiement d'une grappe minimale
Figure 7.1 : Déploiement d'une grappe minimale
Astuce
Astuce : mode non interactif

Si vous devez appliquer la configuration à partir d'un script, il existe également un mode de déploiement non interactif. Ce mode est aussi utile lors du déploiement de la grappe à partir d'une machine distante, car la mise à jour constante des informations de progression à l'écran sur le réseau risque de vous distraire :

root@master # ceph-salt apply --non-interactive

7.4 Examen des dernières étapes

Une fois la commande ceph-salt apply exécutée, vous devez disposer d'une instance de Ceph Monitor et d'une instance de Ceph Manager. Vous devriez pouvoir exécuter la commande ceph status sur n'importe quel minion ayant reçu le rôle admin en tant que root ou sur l'utilisateur de cephadm à l'aide de sudo.

Pour les étapes suivantes, vous devrez utiliser cephadm pour déployer des instances Ceph Monitor ou Ceph Manager, des OSD, la pile de surveillance et des passerelles supplémentaires.

Avant de continuer, passez en revue les paramètres réseau de votre nouvelle grappe. À ce stade, le paramètre public_network a été renseigné en fonction de ce qui a été entré pour /cephadm_bootstrap/mon_ip dans la configuration ceph-salt. Toutefois, ce paramètre était uniquement appliqué à Ceph Monitor. Vous pouvez vérifier ce paramètre à l'aide de la commande suivante :

root@master # ceph config get mon public_network

Il s'agit du paramètre minimal pour que Ceph puisse fonctionner, mais nous vous recommandons de définir le paramètre public_network sur global, ce qui signifie qu'il s'appliquera à tous les types de daemons Ceph, et pas uniquement aux instances MON :

root@master # ceph config set global public_network "$(ceph config get mon public_network)"
Note
Note

Cette étape n'est pas obligatoire. Toutefois, si vous n'utilisez pas ce paramètre, les OSD Ceph et les autres daemons (à l'exception de Ceph Monitor) écouteront toutes les adresses.

Si vous souhaitez que vos OSD communiquent entre eux au moyen d'un réseau totalement distinct, exécutez la commande suivante :

root@master # ceph config set global cluster_network "cluster_network_in_cidr_notation"

L'exécution de cette commande garantit que les OSD créés dans votre déploiement utiliseront le réseau de grappe prévu dès le début.

Si votre grappe est configurée pour contenir des noeuds denses (plus de 62 OSD par hôte), veillez à assigner suffisamment de ports aux OSD Ceph. La plage par défaut (6800-7300) n'autorise pas plus de 62 OSD par hôte. Pour une grappe contenant des noeuds denses, configurez le paramètre ms_bind_port_max sur une valeur appropriée. Chaque OSD consomme huit ports supplémentaires. Par exemple, si un hôte est configuré pour exécuter 96 OSD, 768 ports seront nécessaires. ms_bind_port_max doit au moins être défini sur 7568 en exécutant la commande suivante :

root@master # ceph config set osd.* ms_bind_port_max 7568

Vous devrez ajuster vos paramètres de pare-feu en conséquence pour que cela fonctionne. Pour plus d'informations, reportez-vous au Section 13.7, “Firewall settings for Ceph”.

7.5 Désactivation des clients non sécurisés

Depuis la version 15.2.11 de Pacific, un nouvel avertissement relatif à l'état de santé vous informe que les clients non sécurisés sont autorisés à rejoindre la grappe. Cet avertissement est activé par défaut. Le tableau de bord Ceph affiche la grappe dans l'état HEALTH_WARN et la vérification de l'état de la grappe sur la ligne de commande vous informe comme suit :

cephuser@adm > ceph status
cluster:
  id:     3fe8b35a-689f-4970-819d-0e6b11f6707c
  health: HEALTH_WARN
  mons are allowing insecure global_id reclaim
[...]

Cet avertissement signifie que les moniteurs Ceph autorisent toujours les anciens clients non corrigés à se connecter à la grappe. De cette façon, les clients existants peuvent toujours se connecter pendant la mise à niveau de la grappe, mais le système vous avertit qu'un problème doit être résolu. Une fois la grappe et tous les clients mis à niveau vers la dernière version de Ceph, interdisez les clients non corrigés en exécutant la commande suivante :

cephuser@adm > ceph config set mon auth_allow_insecure_global_id_reclaim false