Ir al contenidoIr a la navegación de la página: página anterior [tecla de acceso p]/página siguiente [tecla de acceso n]
documentation.suse.com / Documentación de SUSE Enterprise Storage 7.1 / Guía de distribución / Distribución del clúster de Ceph / Distribución del clúster de bootstrap mediante ceph-salt
Se aplica a SUSE Enterprise Storage 7.1

7 Distribución del clúster de bootstrap mediante ceph-salt

Esta sección le guía por el proceso de distribuir un clúster de Ceph básico. Lea atentamente las subsecciones y ejecute los comandos incluidos en el orden indicado.

7.1 Instalación ceph-salt

ceph-salt proporciona herramientas para distribuir clústeres de Ceph gestionados por cephadm. ceph-salt utiliza la infraestructura de Salt para realizar la gestión del sistema operativo (por ejemplo, las actualizaciones de software o la sincronización horaria) y para definir funciones para los minions de Salt.

En el master de Salt, instale el paquete ceph-salt:

root@master # zypper install ceph-salt

El comando anterior instaló ceph-salt-formula como una dependencia que modifica la configuración del master de Salt insertando archivos adicionales en el directorio /etc/salt/master.d. Para aplicar los cambios, reinicie salt-master.service y sincronice los módulos de Salt:

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

7.2 Configuración de las propiedades del clúster

Utilice el comando ceph-salt config para configurar las propiedades básicas del clúster.

Importante
Importante

El archivo /etc/ceph/ceph.conf se gestiona mediante cephadm y los usuarios no deben editarlo. Los parámetros de configuración de Ceph deben definirse mediante el nuevo comando ceph config. Consulte el Sección 28.2, “Base de datos de configuración” para obtener más información.

7.2.1 Uso de la shell ceph-salt

Si ejecuta config sin ninguna vía o subcomando, deberá introducir una shell ceph-saltceph-salt interactiva. La shell es útil si necesita configurar varias propiedades en un lote y no desea escribir la sintaxis completa del comando.

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]

Como puede ver en el resultado del comando ceph-saltls de , la configuración del clúster está organizada en una estructura de árbol. Para configurar una propiedad específica del clúster en la shell ceph-salt, tiene dos opciones:

  • Ejecute el comando desde la posición actual e introduzca la vía absoluta a la propiedad como primer argumento:

    /> /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.
  • Cambie a la vía cuya propiedad necesite configurar y ejecute el comando:

    /> 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]
Sugerencia
Sugerencia: autocompletado de fragmentos de configuración

En una shell ceph-salt, puede utilizar la función de autocompletado de forma similar a la de una shell de Linux normal (Bash). Completa vías de configuración, subcomandos o nombres de minions de Salt. Para autocompletar una vía de configuración, tiene dos opciones:

  • Para permitir que la shell termine una vía relativa a su posición actual, pulse la tecla TAB →| dos veces.

  • Para permitir que la shell termine una vía absoluta, introduzca / y pulse la tecla TAB →| dos veces.

Sugerencia
Sugerencia: navegación con las teclas del cursor

Si escribe cd desde la shell ceph-salt sin ninguna vía, el comando producirá una estructura de árbol de la configuración del clúster con la línea de la vía actual activa. Puede utilizar las teclas de cursor arriba y abajo para desplazarse por cada línea. Después de confirmar con Intro, la vía de configuración cambiará a la última activa.

Importante
Importante: convención

Para mantener la coherencia de la documentación, se utilizará una sintaxis de comando única sin entrar en la shell ceph-salt. Por ejemplo, puede mostrar el árbol de configuración del clúster mediante el comando siguiente:

root@master # ceph-salt config ls

7.2.2 Adición de minions de Salt

Incluya todos los minions de Salt que se han distribuido y aceptado en la Capítulo 6, Distribución de Salt, o un subconjunto de ellos, en la configuración del clúster de Ceph. Puede especificar los minions de Salt por sus nombres completos o utilizar las expresiones globales "*" y "?" para incluir varios minions de Salt a la vez. Utilice el subcomando add en la vía /ceph_cluster/minions. El comando siguiente incluye todos los minions de Salt aceptados:

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

Compruebe que se han añadido los minions de Salt especificados:

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 Especificación de minions de Salt gestionados por cephadm

Especifique qué nodos pertenecerán al clúster de Ceph y se gestionarán mediante cephadm. Incluya todos los nodos que ejecutarán servicios de Ceph, así como el nodo de administración:

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

7.2.4 Especificación del nodo de administración

El nodo de administración es el nodo en el que se instalan el archivo de configuración ceph.conf y el anillo de claves de administración de Ceph. Normalmente, los comandos relacionados con Ceph se ejecutan en el nodo de administración.

Sugerencia
Sugerencia: master de Salt y nodo de administración en el mismo nodo

En un entorno homogéneo en el que todos o la mayoría de los hosts pertenezcan a SUSE Enterprise Storage, se recomienda tener el nodo de administración en el mismo host que el master de Salt.

En un entorno heterogéneo en el que una infraestructura de Salt aloje más de un clúster, por ejemplo, SUSE Enterprise Storage junto con SUSE Manager, no coloque el nodo de administración en el mismo host que el master de Salt.

Para especificar el nodo de administración, ejecute el comando siguiente:

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]
Sugerencia
Sugerencia: instalación de ceph.conf y el anillo de claves de administración en varios nodos

Puede instalar el archivo de configuración de Ceph y el anillo de claves del administrador en varios nodos si la distribución lo requiere. Por motivos de seguridad, evite instalarlos en todos los nodos del clúster.

7.2.5 Especificación del primer nodo de MON/MGR

Debe especificar cuál de los minions de Salt del clúster arrancará el clúster. Este minion se convertirá en el primero en ejecutar los servicios de Ceph Monitor y 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]

Además, debe especificar la dirección IP de carga del monitor en la red pública para asegurarse de que el parámetro public_network está definido correctamente, por ejemplo:

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

7.2.6 Especificación de perfiles ajustados

Debe especificar qué minions del clúster tienen perfiles ajustados de forma activa. Para ello, añada estas funciones explícitamente con los comandos siguientes:

Nota
Nota

Un minion no puede tener las funciones latency (latencia) y throughput (rendimiento).

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 Generación de un par de claves SSH

cephadm utiliza el protocolo SSH para comunicarse con los nodos del clúster. Se crea automáticamente una cuenta de usuario denominada cephadm que se utiliza para la comunicación SSH.

Debe generar la parte privada y la pública del par de claves 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 Configuración del servidor de hora

Todos los nodos del clúster deben tener su hora sincronizada con un origen horario fiable. Existen varios escenarios para abordar la sincronización horaria:

  • Si todos los nodos del clúster están ya configurados para sincronizar su hora mediante un servicio NTP de su elección, inhabilite la gestión del servidor horario:

    root@master # ceph-salt config /time_server disable
  • Si su sitio ya tiene una única fuente horaria, especifique el nombre de host de esta:

     root@master # ceph-salt config /time_server/servers add time-server.example.com
  • Como alternativa, ceph-salt tiene la capacidad de configurar uno de los minions de Salt para que sirva como servidor horario para el resto del clúster. A veces se hace referencia a esto como un "servidor horario interno". En este escenario, ceph-salt configurará el servidor horario interno (que debe ser uno de los minions de Salt) para sincronizar su hora con un servidor horario externo, como pool.ntp.org, y configurará todos los demás minions para obtener su hora del servidor horario interno. Esto se puede lograr de la siguiente manera:

    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

    La opción /time_server/subnet especifica la subred desde la que los clientes NTP pueden acceder al servidor NTP. Se define automáticamente al especificar /time_server/servers. Si necesita cambiarlo o especificarlo manualmente, ejecute:

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

Compruebe los ajustes del servidor horario:

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]

Encontrará más información sobre cómo configurar la sincronización horaria en https://documentation.suse.com/sles/15-SP3/html/SLES-all/cha-ntp.html#sec-ntp-yast.

7.2.9 Configuración de las credenciales de entrada de Ceph Dashboard

Ceph Dashboard estará disponible después de la distribución del clúster básico. Para acceder a la consola, debe definir un nombre de usuario y una contraseña válidos, por ejemplo:

root@master # ceph-salt config /cephadm_bootstrap/dashboard/username set admin
root@master # ceph-salt config /cephadm_bootstrap/dashboard/password set PWD
Sugerencia
Sugerencia: forzar la actualización de la contraseña

Por defecto, el primer usuario de la consola se verá obligado a cambiar su contraseña la primera vez que entre a la consola. Para inhabilitar esta función, ejecute el comando siguiente:

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

7.2.10 Uso del registro del contenedor

El clúster de Ceph debe tener acceso a un registro del contenedor para que pueda descargar y distribuir servicios de Ceph en contenedor. Existen dos formas de acceder al registro:

  • Si el clúster puede acceder al registro por defecto en registry.suse.com (directamente o mediante un proxy), puede hacer que ceph-salt apunte directamente a esta URL sin crear un registro local. Para continuar, siga los pasos de la Sección 7.2.10.2, “Configuración de la vía a las imágenes de contenedor”.

  • Si el clúster no puede acceder al registro por defecto, por ejemplo, para una distribución con espacio abierto, deberá configurar un registro de contenedor local. Después de crear y configurar el registro local, deberá hacer que ceph-salt apunte a él.

7.2.10.1 Creación y configuración del registro local (opcional)

Importante
Importante

Existen numerosos métodos para crear un registro local. Las instrucciones de esta sección son ejemplos para crear registros seguros y no seguros. Para obtener información general sobre cómo ejecutar un registro de imágenes de contenedor, consulte https://documentation.suse.com/sles/15-SP3/single-html/SLES-container/#sec-docker-registry-installation.

Sugerencia
Sugerencia: colocación y uso de puertos

Distribuya el registro en un equipo al que puedan acceder todos los nodos del clúster. Recomendamos el nodo de administración. Por defecto, el registro escucha en el puerto 5000.

En el nodo de registro, utilice el siguiente comando para asegurarse de que el puerto está libre:

ss -tulpn | grep :5000

Si otros procesos (como iscsi-tcmu) ya están escuchando en el puerto 5000, determine otro puerto libre que se pueda utilizar para asignar al puerto 5000 en el contenedor de registro.

Procedimiento 7.1: Creación del registro local
  1. Verifique que la extensión Containers Module esté habilitada:

    > SUSEConnect --list-extensions | grep -A2 "Containers Module"
    Containers Module 15 SP3 x86_64 (Activated)
  2. Verifique que los siguientes paquetes están instalados: apache2-utils (si se habilita un registro seguro), cni, cni-plugins, podman, podman-cni-config y skopeo.

  3. Recopile la siguiente información:

    • Nombre de dominio completo del host de registro (REG_HOST_FQDN).

    • Un número de puerto disponible utilizado para asignar al puerto del contenedor de registro 5000 (REG_HOST_PORT).

    • Si el registro será seguro o no seguro (insecure=[true|false]).

  4. Para iniciar un registro no seguro (sin cifrado SSL), siga estos pasos:

    1. Configure ceph-salt para el registro no seguro:

      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. Inicie el registro no seguro creando el directorio necesario (por ejemplo, /var/lib/registry) e inicie el registro con el comando 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. Para que el registro se inicie después de rearrancar, cree un archivo de unidad systemd para él y habilítelo:

      > sudo podman generate systemd --files --name registry
      > sudo mv container-registry.service /etc/systemd/system/
      > sudo systemctl enable container-registry.service
  5. Para iniciar un registro seguro, siga estos pasos:

    1. Cree los directorios necesarios:

      # mkdir -p /var/lib/registry/{auth,certs}
    2. Genere un certificado 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
      Nota
      Nota

      Defina el valor CN=[valor] en el nombre de dominio completo del host ([REG_HOST_FQDN]).

    3. Copie el certificado en todos los nodos del clúster y actualice el caché de certificados:

      # salt-cp '*' /var/lib/registry/certs/domain.crt \
       /etc/pki/trust/anchors/
      # salt '*' cmd.shell "update-ca-certificates"
    4. Genere una combinación de nombre de usuario y contraseña para la autenticación en el registro:

      # htpasswd2 -bBc /var/lib/registry/auth/htpasswd \
       REG_USERNAME REG_PASSWORD
    5. Inicie el registro seguro. Utilice el indicador REGISTRY_STORAGE_DELETE_ENABLED=true para poder suprimir las imágenes posteriormente con el comando 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. Pruebe el acceso seguro al registro:

      > curl https://REG_HOST_FQDN:REG_HOST_PORT/v2/_catalog \
       -u REG_USERNAME:REG_PASSWORD
  6. Después de crear el registro local, debe sincronizar las imágenes de contenedor desde el registro oficial de SUSE en registry.suse.com con el registro local. Puede utilizar el comando skopeo sync que se encuentra en el paquete skopeo para ese fin. Para obtener más información, consulte la página de manual (man 1 skopeo-sync). Considere los siguientes ejemplos:

    Ejemplo 7.1: Visualización de archivos de manifiesto
    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
    Ejemplo 7.2: Sincronización con un directorio

    Sincroniza todas las imágenes de Ceph:

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

    Sincroniza solo las imágenes más recientes:

    skopeo sync --src docker --dest dir registry.suse.com/ses/7.1/ceph/ceph:latest /root/images/
    Ejemplo 7.3: Sincronización de imágenes de Grafana
    skopeo sync --src docker --dest dir registry.suse.com/ses/7.1/ceph/grafana /root/images/

    Sincroniza solo las imágenes de Grafana más recientes:

    skopeo sync --src docker --dest dir registry.suse.com/ses/7.1/ceph/grafana:latest /root/images/
    Ejemplo 7.4: Sincronización de las imágenes más recientes de 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/
Procedimiento 7.2: Configuración del registro local y las credenciales de acceso
  1. Configure la URL del registro local:

    cephuser@adm > ceph-salt config /containers/registry_auth/registry set REG_HOST_URL
  2. Configure el nombre de usuario y la contraseña para acceder al registro 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
Sugerencia
Sugerencia: caché de registro

Para evitar que se deba sincronizar de nuevo el registro local cuando aparezcan nuevos contenedores actualizados, puede configurar un caché de registro.

7.2.10.2 Configuración de la vía a las imágenes de contenedor

Importante
Importante

Esta sección ayuda a configurar la vía a las imágenes de contenedor del clúster de bootstrap (distribución del primer par de Ceph Monitor y Ceph Manager). La vía no se aplica a las imágenes de contenedor de servicios adicionales, por ejemplo, la pila de supervisión.

Sugerencia
Sugerencia: configuración del proxy HTTPS

Si necesita utilizar un servidor proxy para comunicarse con el servidor de registro del contenedor, realice los siguientes pasos de configuración en todos los nodos del clúster:

  1. Copie el archivo de configuración de los contenedores:

    > sudo cp /usr/share/containers/containers.conf /etc/containers/containers.conf
  2. Edite el archivo recién copiado y añada el ajuste http_proxy a su sección [engine], por ejemplo:

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

cephadm necesita conocer una vía de URI válida a las imágenes del contenedor. Verifique el ajuste por defecto ejecutando:

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

Si no necesita un registro alternativo o local, especifique el registro de contenedor de SUSE por defecto:

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

Si la distribución requiere una vía específica, por ejemplo, una vía a un registro local, configúrela de la siguiente manera:

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

7.2.11 Habilitación del cifrado en curso de datos (msgr2)

El protocolo Messenger v2 (MSGR2) es el protocolo con conexión de Ceph. Proporciona un modo de seguridad que cifra todos los datos que pasan por la red, encapsula las cargas útiles de autenticación y permite la integración futura de nuevos modos de autenticación (como Kerberos).

Importante
Importante

msgr2 no es compatible actualmente con los clientes de Ceph del kernel de Linux, como CephFS y el dispositivo de bloques RADOS.

Los daemons de Ceph se pueden asociar a varios puertos, lo que permite que tanto los clientes de Ceph legados como los nuevos clientes compatibles con v2 se conecten al mismo clúster. Por defecto, los MON se asocian ahora al nuevo puerto 3300 asignado por IANA (CE4h o 0xCE4) para el nuevo protocolo v2, y además se asocian al antiguo puerto por defecto 6789 para el protocolo legado v1.

El protocolo v2 (MSGR2) admite dos modos de conexión:

crc mode

Una autenticación inicial sólida cuando se establece la conexión y una comprobación de integridad CRC32C.

secure mode

Una autenticación inicial sólida cuando se establece la conexión y un cifrado completo de todo el tráfico posterior a la autenticación, incluida una comprobación de la integridad criptográfica.

Para la mayoría de las conexiones, existen opciones que controlan los modos que se utilizan:

ms_cluster_mode

El modo de conexión (o modos permitidos) utilizado para la comunicación dentro del clúster entre los daemons de Ceph. Si se muestran varios modos, se prefieren los que aparecen en primer lugar.

ms_service_mode

Una lista de los modos permitidos que pueden utilizar los clientes al conectarse al clúster.

ms_client_mode

Una lista de modos de conexión, en orden de preferencia, que los clientes pueden utilizar (o permitir) al comunicarse con un clúster de Ceph.

Existe un conjunto paralelo de opciones que se aplican específicamente a los monitores, lo que permite a los administradores establecer distintos requisitos (normalmente más seguros) en la comunicación con esos monitores.

ms_mon_cluster_mode

El modo de conexión (o modos permitidos) que se utilizará entre monitores.

ms_mon_service_mode

Una lista de modos permitidos para que los clientes u otros daemons de Ceph los utilicen al conectarse a los monitores.

ms_mon_client_mode

Una lista de modos de conexión, en orden de preferencia, para que los clientes o los daemons que no sean de monitor utilicen al conectarse a los monitores.

Para habilitar el modo de cifrado MSGR2 durante la distribución, debe añadir algunas opciones a la configuración de ceph-salt antes de ejecutar ceph-salt apply.

Para utilizar el modo secure, ejecute los comandos siguientes.

Añada la sección global a ceph_conf en la herramienta de configuración ceph-salt:

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

Defina las opciones siguientes:

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"
Nota
Nota

Asegúrese de que secure vaya delante de crc.

Para forzar el modo secure, ejecute los comandos siguientes:

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
Sugerencia
Sugerencia: actualización de ajustes

Si desea cambiar alguno de los ajustes anteriores, defina los cambios de configuración en el almacén de configuración del monitor. Esto se consigue mediante el comando ceph config set.

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

Por ejemplo:

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

Si desea comprobar el valor actual, incluido el valor por defecto, ejecute el comando siguiente:

root@master # ceph config get CEPH_COMPONENT CONNECTION_OPTION

Por ejemplo, para obtener el modo ms_cluster_mode para los OSD, ejecute:

root@master # ceph config get osd ms_cluster_mode

7.2.12 Configuración de la red del clúster

Opcionalmente, si ejecuta una red de clúster independiente, es posible que deba definir la dirección IP de la red del clúster seguida de la parte de la máscara de subred después de la barra inclinada, por ejemplo: 192.168.10.22/24.

Ejecute los comandos siguientes para habilitar 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 Verificación de la configuración del clúster

La configuración mínima del clúster ha finalizado. Examínela en busca de errores obvios:

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]
Sugerencia
Sugerencia: estado de la configuración del clúster

Puede comprobar si la configuración del clúster es válida ejecutando el comando siguiente:

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

7.2.14 Exportación de configuraciones de clúster

Después de haber configurado el clúster básico y comprobar que su configuración es válida, es recomendable exportar la configuración a un archivo:

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

El resultado de ceph-salt export incluye la clave privada SSH. Si le preocupan las implicaciones de seguridad, no ejecute este comando sin tomar las precauciones oportunas.

En caso de que se interrumpa la configuración del clúster y necesite volver a un estado de copia de seguridad, ejecute:

root@master # ceph-salt import cluster.json

7.3 Actualización de nodos y clúster mínimo de arranque

Antes de distribuir el clúster, actualice todos los paquetes de software en todos los nodos:

root@master # ceph-salt update

Si un nodo informa de que es necesario reiniciar durante la actualización, los paquetes del sistema operativo importantes, como el kernel, se actualizaron a una versión más reciente y es necesario reiniciar el nodo para aplicar los cambios.

Para reiniciar todos los nodos que requieren reinicio, añada la opción --reboot

root@master # ceph-salt update --reboot

O bien, reinícielos en un paso independiente:

root@master # ceph-salt reboot
Importante
Importante

El master de Salt nunca se reinicia mediante los comandos ceph-salt update --reboot o ceph-salt reboot. Si es necesario reiniciar el master de Salt, deberá hacerlo manualmente.

Después de actualizar los nodos, arranque el clúster mínimo:

root@master # ceph-salt apply
Nota
Nota

Cuando se complete el proceso, el clúster tendrá un monitor Ceph Monitor y una instancia de Ceph Manager.

El comando anterior abrirá una interfaz de usuario interactiva que muestra el progreso actual de cada minion.

Distribución de un clúster mínimo
Figura 7.1: Distribución de un clúster mínimo
Sugerencia
Sugerencia: modo no interactivo

Si necesita aplicar la configuración desde un guion, también existe un modo de distribución no interactivo. Esto también resulta útil cuando se distribuye el clúster desde un equipo remoto, ya que la actualización constante de la información de progreso en la pantalla a través de la red puede resultar una distracción:

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

7.4 Revisión de los pasos finales

Después de que se haya completado el comando ceph-salt apply, debe tener un monitor de Ceph Monitor y una instancia de Ceph Manager. Debería poder ejecutar el comando ceph status correctamente en cualquiera de los minions a los que se les haya asignado la función de administrador como usuario root o como usuario cephadm mediante sudo.

Los siguientes pasos implican el uso de cephadm para distribuir Ceph Monitor, Ceph Manager, los OSD, la pila de supervisión y pasarelas adicionales.

Antes de continuar, revise la configuración de red del nuevo clúster. En este punto, el ajuste public_network se ha completado en función de lo que se haya introducido para /cephadm_bootstrap/mon_ip en la configuración de ceph-salt. Sin embargo, este ajuste solo se ha aplicado a Ceph Monitor. Puede revisar este ajuste con el comando siguiente:

root@master # ceph config get mon public_network

Esto es lo mínimo que Ceph requiere para funcionar, pero se recomienda convertir este ajuste public_network como global, lo que significa que se aplicará a todos los tipos de daemons de Ceph, y no solo a los MON:

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

Este paso no es obligatorio. Sin embargo, si no utiliza este ajuste, los OSD de Ceph y otros daemons (excepto Ceph Monitor) escucharán en todas las direcciones.

Si desea que los OSD se comuniquen entre sí mediante una red completamente independiente, ejecute el comando siguiente:

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

La ejecución de este comando garantizará que los OSD creados en la distribución utilicen la red de clúster deseada desde el principio.

Si el clúster está configurado para tener nodos densos (más de 62 OSD por host), asegúrese de asignar suficientes puertos para los OSD de Ceph. El rango por defecto (6800-7300) no permite actualmente más de 62 OSD por host. Para un clúster con nodos densos, ajuste ms_bind_port_max con un valor adecuado. Cada OSD consumirá ocho puertos adicionales. Por ejemplo, si se configura un host para que ejecute 96 OSD, se necesitarán 768 puertos. ms_bind_port_max debe definirse al menos en 7568 ejecutando el comando siguiente:

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

Deberá ajustar la configuración del cortafuegos en consecuencia para que esto funcione. Consulte el Section 13.7, “Firewall settings for Ceph” para obtener más información.

7.5 Inhabilitación de clientes no seguros

Desde Pacific 15.2.11, se ha introducido una nueva advertencia de actividad que informa de que se permite a los clientes no seguros unirse al clúster. Esta advertencia está activada por defecto. Ceph Dashboard mostrará el clúster con el estado HEALTH_WARN y, al verificar el estado del clúster en la línea de comandos, obtendrá la siguiente información:

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

Esta advertencia significa que los monitores Ceph Monitor siguen permitiendo que los clientes antiguos sin parches aplicados se conecten al clúster. Esto garantiza que los clientes existentes puedan conectarse mientras se actualiza el clúster, pero le advierte de que hay un problema que debe solucionarse. Cuando el clúster y todos los clientes se actualicen a la versión más reciente de Ceph, deje de permitir el acceso a los clientes que no tengan los parches aplicados ejecutando el siguiente comando:

cephuser@adm > ceph config set mon auth_allow_insecure_global_id_reclaim false