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 des services essentiels restants à l'aide de cephadm
S'applique à SUSE Enterprise Storage 7.1

8 Déploiement des services essentiels restants à l'aide de cephadm

Après avoir déployé la grappe Ceph de base, déployez les services principaux sur d'autres noeuds de la grappe. Pour que les clients puissent accéder aux données de la grappe, déployez aussi des services supplémentaires.

Actuellement, nous prenons en charge le déploiement des services Ceph sur la ligne de commande à l'aide de l'orchestrateur Ceph (sous-commandes ceph orch).

8.1 Commande ceph orch

La commande de l'orchestrateur Ceph ceph orch, qui sert d'interface avec le module cephadm, se charge d'établir la liste les composants de la grappe et de déployer les services Ceph sur les nouveaux noeuds de la grappe.

8.1.1 Affichage de l'état de l'orchestrateur

La commande suivante affiche le mode et l'état actuels de l'orchestrateur Ceph.

cephuser@adm > ceph orch status

8.1.2 Liste des périphériques, services et daemons

Pour obtenir la liste de tous les périphériques de disque, exécutez la commande suivante :

cephuser@adm > ceph orch device ls
Hostname   Path      Type  Serial  Size   Health   Ident  Fault  Available
ses-master /dev/vdb  hdd   0d8a... 10.7G  Unknown  N/A    N/A    No
ses-min1   /dev/vdc  hdd   8304... 10.7G  Unknown  N/A    N/A    No
ses-min1   /dev/vdd  hdd   7b81... 10.7G  Unknown  N/A    N/A    No
[...]
Astuce
Astuce : services et daemons

Service est un terme général désignant un service Ceph d'un type spécifique, par exemple Ceph Manager.

Daemon est une instance spécifique d'un service, par exemple un processus mgr.ses-min1.gdlcik exécuté sur un noeud appelé ses-min1.

Pour obtenir la liste de tous les services connus de cephadm, exécutez :

cephuser@adm > ceph orch ls
NAME  RUNNING  REFRESHED  AGE  PLACEMENT  IMAGE NAME                  IMAGE ID
mgr       1/0  5m ago     -    <no spec>  registry.example.com/[...]  5bf12403d0bd
mon       1/0  5m ago     -    <no spec>  registry.example.com/[...]  5bf12403d0bd
Astuce
Astuce

Vous pouvez limiter la liste aux services d'un noeud en particulier avec le paramètre facultatif ‑‑host et aux services d'un type particulier avec le paramètre facultatif ‑‑service-type. Les types acceptables sont mon, osd, mgr, mds et rgw.

Pour obtenir la liste de tous les daemons en cours d'exécution déployés par cephadm, exécutez :

cephuser@adm > ceph orch ps
NAME            HOST     STATUS   REFRESHED AGE VERSION    IMAGE ID     CONTAINER ID
mgr.ses-min1.gd ses-min1 running) 8m ago    12d 15.2.0.108 5bf12403d0bd b8104e09814c
mon.ses-min1    ses-min1 running) 8m ago    12d 15.2.0.108 5bf12403d0bd a719e0087369
Astuce
Astuce

Pour interroger l'état d'un daemon en particulier, utilisez --daemon_type et --daemon_id. Pour les OSD, l'ID est l'ID numérique de l'OSD. Pour MDS, l'ID est le nom du système de fichiers :

cephuser@adm > ceph orch ps --daemon_type osd --daemon_id 0
cephuser@adm > ceph orch ps --daemon_type mds --daemon_id my_cephfs

8.2 Spécification de service et de placement

La méthode recommandée pour spécifier le déploiement des services Ceph consiste à créer un fichier au format YAML spécifiant les services que vous avez l'intention de déployer.

8.2.1 Création de spécifications de service

Vous pouvez créer un fichier de spécifications distinct pour chaque type de service, par exemple :

root@master # cat nfs.yml
service_type: nfs
service_id: EXAMPLE_NFS
placement:
  hosts:
  - ses-min1
  - ses-min2
spec:
  pool: EXAMPLE_POOL
  namespace: EXAMPLE_NAMESPACE

Vous pouvez également spécifier plusieurs (ou tous les) types de service dans un fichier (par exemple, cluster.yml) pour décrire les noeuds qui exécuteront des services spécifiques. N'oubliez pas de séparer les différents types de services par trois tirets (---) :

cephuser@adm > cat cluster.yml
service_type: nfs
service_id: EXAMPLE_NFS
placement:
  hosts:
  - ses-min1
  - ses-min2
spec:
  pool: EXAMPLE_POOL
  namespace: EXAMPLE_NAMESPACE
---
service_type: rgw
service_id: REALM_NAME.ZONE_NAME
placement:
  hosts:
  - ses-min1
  - ses-min2
  - ses-min3
---
[...]

Les propriétés susmentionnées ont la signification suivante :

service_type

Type de service. Il peut s'agir d'un service Ceph (mon, mgr, mds, crash, osd ou rbd-mirror), d'une passerelle (nfs ou rgw) ou d'une partie de la pile de surveillance (alertmanager, grafana, node-exporter ou prometheus).

service_id

Nom du service. Les spécifications de type mon, mgr, alertmanager, grafana, node-exporter et prometheus ne nécessitent pas la propriété service_id.

placement

Spécifie les noeuds qui exécuteront le service. Reportez-vous à la Section 8.2.2, « Création d'une spécification de placement » pour plus de détails.

spec

Spécification supplémentaire pertinente pour le type de service.

Astuce
Astuce : application de services spécifiques

Les services de grappe Ceph ont généralement un certain nombre de propriétés intrinsèques. Pour obtenir des exemples et des détails sur la spécification des différents services, reportez-vous à la Section 8.3, « Déploiement des services Ceph ».

8.2.2 Création d'une spécification de placement

Pour déployer les services Ceph, cephadm doit savoir sur quels noeuds les déployer. Utilisez la propriété placement et répertoriez les noms d'hôte courts des noeuds auxquels le service s'applique :

cephuser@adm > cat cluster.yml
[...]
placement:
  hosts:
  - host1
  - host2
  - host3
[...]

8.2.3 Application de la spécification de grappe

Après avoir créé un fichier cluster.yml complet avec les spécifications de tous les services et leur placement, vous pouvez appliquer la grappe en exécutant la commande suivante :

cephuser@adm > ceph orch apply -i cluster.yml

Pour afficher l'état de la grappe, exécutez la commande ceph orch status. Pour plus de détails, reportez-vous à la Section 8.1.1, « Affichage de l'état de l'orchestrateur ».

8.2.4 Exportation de la spécification d'une grappe en cours d'exécution

Bien que vous ayez déployé des services sur la grappe Ceph à l'aide des fichiers de spécifications comme décrit à la Section 8.2, « Spécification de service et de placement », la configuration de la grappe peut être différente de la spécification d'origine lors de son fonctionnement. Il se peut également que vous ayez accidentellement supprimé les fichiers de spécifications.

Pour récupérer une spécification complète d'une grappe en cours d'exécution, exécutez :

cephuser@adm > ceph orch ls --export
placement:
  hosts:
  - hostname: ses-min1
    name: ''
    network: ''
service_id: my_cephfs
service_name: mds.my_cephfs
service_type: mds
---
placement:
  count: 2
service_name: mgr
service_type: mgr
---
[...]
Astuce
Astuce

Vous pouvez ajouter l'option --format pour modifier le format de sortie yaml par défaut. Vous pouvez choisir entre json, json-attractive ou yaml. Par exemple :

ceph orch ls --export --format json

8.3 Déploiement des services Ceph

Une fois la grappe de base en cours d'exécution, vous pouvez déployer des services Ceph sur d'autres noeuds.

8.3.1 Déploiement d'instances de Monitor et Ceph Manager

La grappe Ceph comporte trois ou cinq instances MON déployées sur différents noeuds. Si la grappe contient au moins cinq noeuds, il est recommandé de déployer cinq instances MON. Une bonne pratique consiste à déployer les instances MGR sur les mêmes noeuds que les instances MON.

Important
Important : inclusion de l'instance MON de démarrage

Lorsque vous déployez des instances MON et MGR, n'oubliez pas d'inclure la première instance MON que vous avez ajoutée lors de la configuration de la grappe de base à la Section 7.2.5, « Spécification du premier noeud MON/MGR ».

Pour déployer des instances MON, appliquez la spécification suivante :

service_type: mon
placement:
  hosts:
  - ses-min1
  - ses-min2
  - ses-min3
Note
Note

Si vous devez ajouter un autre noeud, ajoutez le nom d'hôte à la même liste YAML. Par exemple :

service_type: mon
placement:
 hosts:
 - ses-min1
 - ses-min2
 - ses-min3
 - ses-min4

De la même manière, pour déployer des instances MGR, appliquez la spécification suivante :

Important
Important

Assurez-vous que votre déploiement contient au moins trois instances Ceph Manager dans chaque déploiement.

service_type: mgr
placement:
  hosts:
  - ses-min1
  - ses-min2
  - ses-min3
Astuce
Astuce

Si les instances MON ou MGR ne se trouvent pas dans le même sous-réseau, vous devez ajouter les adresses de sous-réseau. Par exemple :

service_type: mon
placement:
  hosts:
  - ses-min1:10.1.2.0/24
  - ses-min2:10.1.5.0/24
  - ses-min3:10.1.10.0/24

8.3.2 Déploiement des OSD Ceph

Important
Important : lorsque le périphérique de stockage est disponible

Un périphérique de stockage est considéré comme disponible si toutes les conditions suivantes sont remplies :

  • Le périphérique n'a pas de partitions.

  • Le périphérique n'a pas d'état LVM.

  • Le périphérique n'est pas monté.

  • Le périphérique ne contient pas de système de fichiers.

  • Le périphérique ne contient pas d'OSD BlueStore.

  • La taille du périphérique est supérieure à 5 Go.

Si les conditions ci-dessus ne sont pas remplies, Ceph refuse de provisionner ces OSD.

Deux méthodes permettent de déployer des OSD :

  • Indiquez à Ceph de consommer tous les périphériques de stockage disponibles et inutilisés :

    cephuser@adm > ceph orch apply osd --all-available-devices
  • Utilisez DriveGroups (reportez-vous au Section 13.4.3, « Ajout d'OSD à l'aide de la spécification DriveGroups ») pour créer une spécification OSD décrivant les périphériques qui seront déployés sur la base de leurs propriétés, telles que le type de périphérique (SSD ou HDD), les noms de modèle de périphérique, la taille ou les noeuds sur lesquels les périphériques existent. Appliquez ensuite la spécification en exécutant la commande suivante :

    cephuser@adm > ceph orch apply osd -i drive_groups.yml

8.3.3 Déploiement de serveurs de métadonnées

CephFS nécessite un ou plusieurs services de serveur de métadonnées (MDS). Pour créer un CephFS, commencez par créer des serveurs MDS en appliquant la spécification suivante :

Note
Note

Assurez-vous d'avoir créé au moins deux réserves, l'une pour les données CephFS et l'autre pour les métadonnées CephFS, avant d'appliquer la spécification suivante.

service_type: mds
service_id: CEPHFS_NAME
placement:
  hosts:
  - ses-min1
  - ses-min2
  - ses-min3

Une fois que les MDS sont fonctionnels, créez le CephFS :

ceph fs new CEPHFS_NAME metadata_pool data_pool

8.3.4 Déploiement d'instances Object Gateway

cephadm déploie Object Gateway en tant qu'ensemble de daemons qui gèrent un domaine et une zone spécifique.

Vous pouvez soit associer un service Object Gateway à une zone et un domaine préexistants (reportez-vous au Section 21.13, « Passerelles Object Gateway multisites » pour plus de détails) ou vous pouvez spécifier des noms NOM_DOMAINE et NOM_ZONE n'existant pas encore. Ils seront créés automatiquement après avoir appliqué la configuration suivante :

service_type: rgw
service_id: REALM_NAME.ZONE_NAME
placement:
  hosts:
  - ses-min1
  - ses-min2
  - ses-min3
spec:
  rgw_realm: RGW_REALM
  rgw_zone: RGW_ZONE

8.3.4.1 Utilisation d'un accès SSL sécurisé

Pour utiliser une connexion SSL sécurisée à l'instance Object Gateway, vous avez besoin d'une paire de certificats SSL et de fichiers de clé valides (reportez-vous au Section 21.7, « Activation de HTTPS/SSL pour les passerelles Object Gateway » pour plus de détails). Vous devez activer SSL, spécifier un numéro de port pour les connexions SSL, ainsi que le certificat SSL et les fichiers de clé.

Pour activer SSL et spécifier le numéro de port, incluez les éléments suivants dans votre spécification :

spec:
  ssl: true
  rgw_frontend_port: 443

Pour spécifier le certificat et la clé SSL, vous pouvez coller leur contenu directement dans le fichier de spécifications YAML. Le signe de barre verticale (|) à la fin de la ligne indique à l'analyseur de s'attendre à une valeur contenant une chaîne s'étendant sur plusieurs lignes. Par exemple :

spec:
  ssl: true
  rgw_frontend_port: 443
  rgw_frontend_ssl_certificate: |
   -----BEGIN CERTIFICATE-----
   MIIFmjCCA4KgAwIBAgIJAIZ2n35bmwXTMA0GCSqGSIb3DQEBCwUAMGIxCzAJBgNV
   BAYTAkFVMQwwCgYDVQQIDANOU1cxHTAbBgNVBAoMFEV4YW1wbGUgUkdXIFNTTCBp
   [...]
   -----END CERTIFICATE-----
   rgw_frontend_ssl_key: |
   -----BEGIN PRIVATE KEY-----
   MIIJRAIBADANBgkqhkiG9w0BAQEFAASCCS4wggkqAgEAAoICAQDLtFwg6LLl2j4Z
   BDV+iL4AO7VZ9KbmWIt37Ml2W6y2YeKX3Qwf+3eBz7TVHR1dm6iPpCpqpQjXUsT9
   [...]
   -----END PRIVATE KEY-----
Astuce
Astuce

Au lieu de coller le contenu du certificat SSL et des fichiers de clé, vous pouvez omettre les mots-clés rgw_frontend_ssl_certificate: et rgw_frontend_ssl_key: et les télécharger dans la base de données de configuration :

cephuser@adm > ceph config-key set rgw/cert/REALM_NAME/ZONE_NAME.crt \
 -i SSL_CERT_FILE
cephuser@adm > ceph config-key set rgw/cert/REALM_NAME/ZONE_NAME.key \
 -i SSL_KEY_FILE
8.3.4.1.1 Configuration de la passerelle Object Gateway pour une écoute sur les ports 443 et 80

Pour configurer la passerelle Object Gateway afin qu'elle écoute sur les ports 443 (HTTPS) et 80 (HTTP), procédez comme suit :

Note
Note

Les commandes de la procédure utilisent le domaine et la zone default.

  1. Déployez la passerelle Object Gateway en fournissant un fichier de spécifications. Reportez-vous à la Section 8.3.4, « Déploiement d'instances Object Gateway » pour plus de détails sur la spécification Object Gateway. Utilisez la commande suivante :

    cephuser@adm > ceph orch apply -i SPEC_FILE
  2. Si les certificats SSL ne sont pas fournis dans le fichier de spécifications, ajoutez-les à l'aide de la commande suivante :

    cephuser@adm > ceph config-key set rgw/cert/default/default.crt -i certificate.pem
    cephuser@adm > ceph config-key set rgw/cert/default/default.key -i key.pem
  3. Modifiez la valeur par défaut de l'option rgw_frontends :

    cephuser@adm > ceph config set client.rgw.default.default rgw_frontends \
     "beast port=80 ssl_port=443"
  4. Supprimez la configuration spécifique créée par cephadm. Identifiez la cible pour laquelle l'option rgw_frontends a été configurée en exécutant la commande :

    cephuser@adm > ceph config dump | grep rgw

    Par exemple, la cible est client.rgw.default.default.node4.yiewdu. Supprimez la valeur rgw_frontends spécifique actuelle :

    cephuser@adm > ceph config rm client.rgw.default.default.node4.yiewdu rgw_frontends
    Astuce
    Astuce

    Au lieu de supprimer une valeur pour rgw_frontends, vous pouvez la spécifier. Par exemple :

    cephuser@adm > ceph config set client.rgw.default.default.node4.yiewdu \
     rgw_frontends "beast port=80 ssl_port=443"
  5. Redémarrez les passerelles Object Gateway :

    cephuser@adm > ceph orch restart rgw.default.default

8.3.4.2 Déploiement avec une sous-grappe

Les sous-grappes vous aident à organiser les noeuds de vos grappes afin d'isoler les workloads et de gagner en flexibilité. Si vous effectuez un déploiement avec une sous-grappe, appliquez la configuration suivante :

service_type: rgw
service_id: REALM_NAME.ZONE_NAME.SUBCLUSTER
placement:
  hosts:
  - ses-min1
  - ses-min2
  - ses-min3
spec:
  rgw_realm: RGW_REALM
  rgw_zone: RGW_ZONE
  subcluster: SUBCLUSTER

8.3.5 Déploiement de passerelles iSCSI

cephadm déploie une passerelle iSCSI, à savoir un protocole SAN (Storage area network) qui permet aux clients (appelés initiateurs) d'envoyer des commandes SCSI aux périphériques de stockage SCSI (cibles) sur des serveurs distants.

Appliquez la configuration suivante pour effectuer le déploiement. Assurez-vous que la liste trusted_ip_list contient les adresses IP de tous les noeuds de passerelle iSCSI et Ceph Manager (comme dans l'exemple de sortie ci-dessous).

Note
Note

Vérifiez que la réserve a été créée avant d'appliquer la spécification suivante.

service_type: iscsi
service_id: EXAMPLE_ISCSI
placement:
  hosts:
  - ses-min1
  - ses-min2
  - ses-min3
spec:
  pool: EXAMPLE_POOL
  api_user: EXAMPLE_USER
  api_password: EXAMPLE_PASSWORD
  trusted_ip_list: "IP_ADDRESS_1,IP_ADDRESS_2"
Note
Note

Assurez-vous que les adresses IP répertoriées pour trusted_ip_list ne contiennent pas d'espace après la séparation par une virgule.

8.3.5.1 Configuration SSL sécurisée

Pour utiliser une connexion SSL sécurisée entre Ceph Dashboard et l'API cible iSCSI, vous avez besoin d'une paire de fichiers de clés et de certificats SSL valides. Ceux-ci peuvent être émis par une autorité de certification ou auto-signés (reportez-vous au Section 10.1.1, « Création de certificats auto-signés »). Pour activer SSL, ajoutez le paramètre api_secure: true à votre fichier de spécifications :

spec:
  api_secure: true

Pour spécifier le certificat et la clé SSL, vous pouvez coller le contenu directement dans le fichier de spécifications YAML. Le signe de barre verticale (|) à la fin de la ligne indique à l'analyseur de s'attendre à une valeur contenant une chaîne s'étendant sur plusieurs lignes. Par exemple :

spec:
  pool: EXAMPLE_POOL
  api_user: EXAMPLE_USER
  api_password: EXAMPLE_PASSWORD
  trusted_ip_list: "IP_ADDRESS_1,IP_ADDRESS_2"
  api_secure: true
  ssl_cert: |
    -----BEGIN CERTIFICATE-----
    MIIDtTCCAp2gAwIBAgIYMC4xNzc1NDQxNjEzMzc2MjMyXzxvQ7EcMA0GCSqGSIb3
    DQEBCwUAMG0xCzAJBgNVBAYTAlVTMQ0wCwYDVQQIDARVdGFoMRcwFQYDVQQHDA5T
    [...]
    -----END CERTIFICATE-----
  ssl_key: |
    -----BEGIN PRIVATE KEY-----
    MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC5jdYbjtNTAKW4
    /CwQr/7wOiLGzVxChn3mmCIF3DwbL/qvTFTX2d8bDf6LjGwLYloXHscRfxszX/4h
    [...]
    -----END PRIVATE KEY-----

8.3.6 Déploiement de NFS Ganesha

Important
Important

NFS Ganesha prend en charge les versions 4.1 et ultérieures de NFS. Il ne prend pas en charge la version 3 de NFS.

cephadm déploie NFS Ganesha à l'aide d'une réserve RADOS prédéfinie et d'un espace de nom facultatif. Pour déployer NFS Ganesha, appliquez la spécification suivante :

Note
Note

Vous devez disposer d'une réserve RADOS prédéfinie, sinon l'opération ceph orch apply échouera. Pour plus d'informations sur la création d'une, reportez-vous au Section 18.1, « Création d'une réserve ».

service_type: nfs
service_id: EXAMPLE_NFS
placement:
  hosts:
  - ses-min1
  - ses-min2
spec:
  pool: EXAMPLE_POOL
  namespace: EXAMPLE_NAMESPACE
  • EXEMPLE_NFS avec une chaîne arbitraire qui identifie l'exportation NFS.

  • EXEMPLE_RÉSERVE avec le nom de la réserve dans laquelle l'objet de configuration NFS Ganesha RADOS sera stocké.

  • EXEMPLE_ESPACE_DE_NOM (facultatif) avec l'espace de nom NFS Object Gateway souhaité (par exemple, ganesha).

8.3.7 Déploiement de rbd-mirror

Le service rbd-mirror prend en charge la synchronisation des images de périphériques de bloc RADOS entre deux grappes Ceph (pour plus de détails, reportez-vous au Section 20.4, « Miroirs d'image RBD »). Pour déployer rbd-mirror, utilisez la spécification suivante :

service_type: rbd-mirror
service_id: EXAMPLE_RBD_MIRROR
placement:
  hosts:
  - ses-min3

8.3.8 Déploiement de la pile de surveillance

La pile de surveillance se compose de Prometheus, d'exportateurs Prometheus, de Prometheus Alertmanager et de Grafana. Ceph Dashboard utilise ces composants pour stocker et visualiser des mesures détaillées concernant l'utilisation et les performances de la grappe.

Astuce
Astuce

Si votre déploiement nécessite des images de conteneur personnalisées ou mises à disposition localement pour les services de pile de surveillance, reportez-vous au Section 16.1, « Configuration d'images personnalisées ou locales ».

Pour déployer la pile de surveillance, procédez comme suit :

  1. Activez le module prometheus dans le daemon Ceph Manager. Cela permet de rendre visibles les mesures Ceph internes afin que Prometheus puisse les lire :

    cephuser@adm > ceph mgr module enable prometheus
    Note
    Note

    Assurez-vous que cette commande est exécutée avant le déploiement de Prometheus. Si la commande n'a pas été exécutée avant le déploiement, vous devez redéployer Prometheus pour mettre à jour la configuration de Prometheus :

    cephuser@adm > ceph orch redeploy prometheus
  2. Créez un fichier de spécifications (par exemple, monitoring.yaml) dont le contenu ressemble à ce qui suit :

    service_type: prometheus
    placement:
      hosts:
      - ses-min2
    ---
    service_type: node-exporter
    ---
    service_type: alertmanager
    placement:
      hosts:
      - ses-min4
    ---
    service_type: grafana
    placement:
      hosts:
      - ses-min3
  3. Appliquez les services de surveillance en exécutant :

    cephuser@adm > ceph orch apply -i monitoring.yaml

    Le déploiement des services de surveillance peut prendre une à deux minutes.

Important
Important

Prometheus, Grafana et Ceph Dashboard sont tous automatiquement configurés pour pouvoir communiquer entre eux, ce qui permet une intégration Grafana entièrement fonctionnelle dans Ceph Dashboard lorsque le déploiement a été effectué comme décrit ci-dessus.

La seule exception à cette règle est la surveillance avec des images RBD. Pour plus d'informations, reportez-vous au Section 16.5.4, « Activation de la surveillance des images RBD ».