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.serviceroot@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.
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-salt
ceph-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-salt
ls 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]
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.
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.
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.
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]
ceph.conf
y el anillo de claves de administración en varios nodosPuede 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:
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 disableSi 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.comComo 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, comopool.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.comroot@master #
ceph-salt config /time_server/external_servers add pool.ntp.orgLa 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 adminroot@master #
ceph-salt config /cephadm_bootstrap/dashboard/password set PWD
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 queceph-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) #
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.
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.
Verifique que la extensión Containers Module esté habilitada:
>
SUSEConnect --list-extensions | grep -A2 "Containers Module" Containers Module 15 SP3 x86_64 (Activated)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.
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]
).
Para iniciar un registro no seguro (sin cifrado SSL), siga estos pasos:
Configure
ceph-salt
para el registro no seguro: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
:5000Inicie el registro no seguro creando el directorio necesario (por ejemplo,
/var/lib/registry
) e inicie el registro con el comandopodman
:#
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:2Para 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
Para iniciar un registro seguro, siga estos pasos:
Cree los directorios necesarios:
#
mkdir -p /var/lib/registry/{auth,certs}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.crtNotaDefina el valor
CN=[valor]
en el nombre de dominio completo del host ([REG_HOST_FQDN]
).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"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
Inicie el registro seguro. Utilice el indicador
REGISTRY_STORAGE_DELETE_ENABLED=true
para poder suprimir las imágenes posteriormente con el comandoskopeo 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:2Pruebe el acceso seguro al registro:
>
curl https://REG_HOST_FQDN
:REG_HOST_PORT
/v2/_catalog \ -uREG_USERNAME
:REG_PASSWORD
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 comandoskopeo 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/
Configure la URL del registro local:
cephuser@adm >
ceph-salt config /containers/registry_auth/registry set REG_HOST_URLConfigure el nombre de usuario y la contraseña para acceder al registro local:
cephuser@adm >
ceph-salt config /containers/registry_auth/username set REG_USERNAMEcephuser@adm >
ceph-salt config /containers/registry_auth/password set REG_PASSWORD
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 #
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.
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:
Copie el archivo de configuración de los contenedores:
>
sudo
cp /usr/share/containers/containers.conf /etc/containers/containers.confEdite 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).
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"
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 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 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 globalroot@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]
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
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
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
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.
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)"
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