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.serviceroot@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.
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-salt
ceph-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-salt
ls 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]
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 →|.
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.
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.
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]
ceph.conf
et du trousseau de clés admin sur plusieurs noeudsVous 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 :
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 disableSi 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.comDans 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 quepool.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.comroot@master #
ceph-salt config /time_server/external_servers add pool.ntp.orgL'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 adminroot@master #
ceph-salt config /cephadm_bootstrap/dashboard/password set PWD
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 pointerceph-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) #
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.
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.
Vérifiez que l'extension Containers Module est activée :
>
SUSEConnect --list-extensions | grep -A2 "Containers Module" Containers Module 15 SP3 x86_64 (Activated)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.
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]
).
Pour démarrer un registre non sécurisé (sans chiffrement SSL), procédez comme suit :
Configurez
ceph-salt
pour le registre non sécurisé :cephuser@adm >
ceph-salt config containers/registries_conf enablecephuser@adm >
ceph-salt config containers/registries_conf/registries \ add prefix=REG_HOST_FQDN
insecure=true \ location=REG_HOST_PORT
:5000Dé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 commandepodman
:#
mkdir -p /var/lib/registry#
podman run --privileged -d --name registry \ -pREG_HOST_PORT
:5000 -v /var/lib/registry:/var/lib/registry \ --restart=always registry:2Pour 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
Pour démarrer un registre sécurisé, procédez comme suit :
Créez les répertoires nécessaires :
#
mkdir -p /var/lib/registry/{auth,certs}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.crtNoteDéfinissez la valeur
CN=[valeur]
sur le nom de domaine complet de l'hôte ([FQDN_HÔTE_REG
]).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"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
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 commandeskopeo 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:2Testez l'accès sécurisé au registre :
>
curl https://REG_HOST_FQDN
:REG_HOST_PORT
/v2/_catalog \ -uREG_USERNAME
:REG_PASSWORD
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 commandeskopeo 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/
Configurez l'URL du registre local :
cephuser@adm >
ceph-salt config /containers/registry_auth/registry set REG_HOST_URLConfigurez 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_USERNAMEcephuser@adm >
ceph-salt config /containers/registry_auth/password set REG_PASSWORD
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 #
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.
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 :
Copiez le fichier de configuration des conteneurs :
>
sudo
cp /usr/share/containers/containers.conf /etc/containers/containers.confModifiez 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).
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"
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 secureroot@master #
ceph-salt config /cephadm_bootstrap/ceph_conf/global set ms_service_mode secureroot@master #
ceph-salt config /cephadm_bootstrap/ceph_conf/global set ms_client_mode secure
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 globalroot@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]
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
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
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
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.
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)"
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