Saltar a contenidoSaltar a navegación de páginas: página anterior [tecla acceso p]/página siguiente [tecla acceso n]
Se aplica a SUSE Enterprise Storage 6

7 Personalización de la configuración por defecto Edit source

Es posible cambiar la configuración por defecto del clúster generada en la fase 2 (consulte Descripción de las fases de DeepSea). Por ejemplo, quizás sea necesario cambiar los valores de red o el software que se instala en el nodo de administración por defecto. Lo primero se puede llevar a cabo modificando la versión actualizada de Pillar después de la fase 2, mientras que lo segundo se realiza normalmente creando un archivo sls personalizado y añadiéndolo a Pillar. Los detalles se describen en las secciones siguientes.

7.1 Uso de archivos de configuración personalizados Edit source

En esta sección se muestran varias tareas para las que es necesario añadir o cambiar un archivo sls propio. Normalmente, tal procedimiento se utiliza si es preciso cambiar el proceso de distribución por defecto.

Sugerencia
Sugerencia: prefijo para los archivos .sls personalizados

Los archivos personalizados .sls se encuentran en el mismo subdirectorio que los archivos .sls de DeepSea. Para evitar que se sobrescriban con los que se añadan después a partir del paquete de DeepSea, añada el prefijo custom- a su nombre.

7.1.1 Inhabilitación de un paso de la distribución Edit source

Si lleva a cabo una tarea específica fuera del proceso de distribución de DeepSea y, por lo tanto, necesita omitir ese paso, cree un archivo "no operation" siguiendo este ejemplo:

Procedimiento 7.1: Inhabilitación de la sincronización horaria
  1. Cree /srv/salt/ceph/time/disabled.sls con el contenido siguiente y guárdelo:

    disable time setting:
    test.nop
  2. Edite /srv/pillar/ceph/stack/global.yml, añada la línea siguiente y guárdelo:

    time_init: disabled
  3. Para verificar, actualice Pillar y ejecute el paso:

    root@master # salt target saltutil.pillar_refresh
    root@master # salt 'admin.ceph' state.apply ceph.time
    admin.ceph:
      Name: disable time setting - Function: test.nop - Result: Clean
    
    Summary for admin.ceph
    ------------
    Succeeded: 1
    Failed:    0
    ------------
    Total states run:     1
    Nota
    Nota: ID exclusivo

    El ID de tarea "disable time setting" (inhabilitar valor de hora) puede ser cualquier mensaje único dentro de un archivo sls. Cómo evitar conflictos de ID especificando descripciones exclusivas.

7.1.2 Sustitución de un paso de la distribución Edit source

Si necesita sustituir el comportamiento por defecto de un paso específico por otro personalizado, cree un archivo sls personalizado con el contenido de sustitución.

Por defecto, /srv/salt/ceph/pool/default.sls crea una imagen rbd denominada "demo". En nuestro ejemplo, no queremos crear esta imagen, ya que necesitamos dos imágenes: "archive1" y "archive2".

Procedimiento 7.2: Sustitución de la imagen rbd demo por dos imágenes rbd personalizadas
  1. Cree /srv/salt/ceph/pool/custom.sls con el contenido siguiente y guárdelo:

    wait:
      module.run:
        - name: wait.out
        - kwargs:
            'status': "HEALTH_ERR"1
        - fire_event: True
    
    archive1:
      cmd.run:
        - name: "rbd -p rbd create archive1 --size=1024"2
        - unless: "rbd -p rbd ls | grep -q archive1$"
        - fire_event: True
    
    archive2:
      cmd.run:
        - name: "rbd -p rbd create archive2 --size=768"
        - unless: "rbd -p rbd ls | grep -q archive2$"
        - fire_event: True

    1

    El módulo wait se pondrá en pausa hasta que el clúster de Ceph no tenga el estado HEALTH_ERR. En las instalaciones nuevas, un clúster de Ceph puede tener este estado hasta que haya un número suficiente de OSD disponibles y haya terminado la creación de los repositorios.

    2

    El comando rbd no es idempotente. Si se vuelve a ejecutar el mismo comando de creación cuando la imagen exista, se producirá un error en el estado de Salt. La declaración unless lo impide.

  2. Para llamar al archivo personalizado recién creado en lugar del archivo por defecto, debe editar el archivo /srv/pillar/ceph/stack/ceph/cluster.yml, añadir la línea siguiente y guardarlo:

    pool_init: custom
  3. Para verificar, actualice Pillar y ejecute el paso:

    root@master # salt target saltutil.pillar_refresh
    root@master # salt 'admin.ceph' state.apply ceph.pool
Nota
Nota: autorización

La creación de repositorios o imágenes requiere disponer de autorización suficiente. El minion admin.ceph dispone de un anillo de claves de administración.

Sugerencia
Sugerencia: alternativa

Otra opción consiste en cambiar la variable presente en /srv/pillar/ceph/stack/ceph/roles/master.yml. Mediante este archivo, se reduce la cantidad de datos de Pillar para otros minions.

7.1.3 Modificación de un paso de la distribución Edit source

En ocasiones, puede ser preciso que un paso específico lleve a cabo algunas tareas adicionales. No se recomienda modificar el archivo de estado relacionado, ya que complicaría una futura actualización. En su lugar, para llevar a cabo las tareas adicionales cree un archivo independiente idéntico al que se describe en la Sección 7.1.2, “Sustitución de un paso de la distribución”.

Asigne un nombre descriptivo al nuevo archivo sls. Por ejemplo, si necesita crear dos imágenes rbd además de la imagen demo, asigne al archivo el nombre archive.sls.

Procedimiento 7.3: Creación de dos imágenes rbd adicionales
  1. Cree /srv/salt/ceph/pool/custom.sls con el contenido siguiente y guárdelo:

    include:
     - .archive
     - .default
    Sugerencia
    Sugerencia: incluir prioridad

    En este ejemplo, Salt va a crear las imágenes archive y la imagen demo. El orden no importa en este ejemplo. Para cambiar el orden, invierta las líneas después de la directiva include:.

    Puede añadir la línea include directamente en archive.sls y, así, se crearán todas las imágenes. No obstante, con independencia de dónde se coloque la línea include, Salt procesa primero los pasos del archivo incluido. Aunque este comportamiento puede anularse con las declaraciones requires y order, al usar un archivo independiente que incluya a los demás se garantiza el orden y se reducen las posibilidades de que haya confusiones.

  2. Edite /srv/pillar/ceph/stack/ceph/cluster.yml, añada la línea siguiente y guárdelo:

    pool_init: custom
  3. Para verificar, actualice Pillar y ejecute el paso:

    root@master # salt target saltutil.pillar_refresh
    root@master # salt 'admin.ceph' state.apply ceph.pool

7.1.4 Modificación de una fase de la distribución Edit source

Si necesita añadir un paso de distribución completamente independiente, cree tres archivos nuevos: un archivo sls para ejecutar el comando, un archivo de organización y un archivo personalizado que adapte el paso nuevo a los pasos de la distribución original.

Por ejemplo, si necesita ejecutar logrotate en todos los minions como parte de la fase de preparación:

Cree primero un archivo sls e incluya el comando logrotate.

Procedimiento 7.4: Ejecución de logrotate en todos los minions de Salt
  1. Cree un directorio /srv/salt/ceph/logrotate.

  2. Cree /srv/salt/ceph/logrotate/init.sls con el contenido siguiente y guárdelo:

    rotate logs:
      cmd.run:
        - name: "/usr/sbin/logrotate /etc/logrotate.conf"
  3. Verifique que el comando funciona en un minion:

    root@master # salt 'admin.ceph' state.apply ceph.logrotate

Dado que el archivo de organización debe ejecutarse antes que los demás pasos de preparación, añádalo a la fase 0 Prep:

  1. Cree /srv/salt/ceph/stage/prep/logrotate.sls con el contenido siguiente y guárdelo:

    logrotate:
      salt.state:
        - tgt: '*'
        - sls: ceph.logrotate
  2. Verifique que el archivo de organización funciona:

    root@master # salt-run state.orch ceph.stage.prep.logrotate

El último archivo es el personalizado, que añade el paso adicional a los pasos originales:

  1. Cree /srv/salt/ceph/stage/prep/custom.sls con el contenido siguiente y guárdelo:

    include:
      - .logrotate
      - .master
      - .minion
  2. Sustituya el comportamiento por defecto. Edite /srv/pillar/ceph/stack/global.yml, añada la siguiente línea y guarde el archivo:

    stage_prep: custom
  3. Compruebe que la fase 0 funciona:

    root@master # salt-run state.orch ceph.stage.0
Nota
Nota: ¿por qué global.yml?

Se prefiere el archivo global.yml en lugar del archivo cluster.yml porque durante la fase prep ningún minion pertenece al clúster de Ceph y este no tiene acceso a ninguno de los valores de cluster.yml.

7.1.5 Actualizaciones y reinicios durante la fase 0 Edit source

Durante la fase 0 (consulte Descripción de las fases de DeepSea para obtener más información sobre las fase de DeepSea), el master y los minions de Salt pueden reiniciarse opcionalmente debido a los paquetes recién actualizados, por ejemplo kernel, requiere que se reinicie el sistema.

El comportamiento por defecto es instalar las nuevas actualizaciones disponibles y no reiniciar los nodos incluso en caso de actualizaciones del kernel.

Es posible cambiar el comportamiento de actualización/reinicio por defecto de la fase 0 de DeepSea añadiendo o cambiando las opciones stage_prep_master y stage_prep_minion en el archivo /srv/pillar/ceph/stack/global.yml. _prep_master define el comportamiento de la fase del master Salt y stage_prep_minion define el comportamiento de todos los minions. Los parámetros disponibles son los siguientes:

default

Instalar las actualizaciones sin reiniciar.

default-update-reboot

Instalar las actualizaciones y reiniciar después de la actualización.

default-no-update-reboot

Reiniciar sin instalar las actualizaciones.

default-no-update-no-reboot

No instalar las actualizaciones ni reiniciar.

Por ejemplo, para evitar que los nodos del clúster instalen actualizaciones y reinicien, edite /srv/pillar/ceph/stack/global.yml y añada las líneas siguientes:

stage_prep_master: default-no-update-no-reboot
stage_prep_minion: default-no-update-no-reboot
Sugerencia
Sugerencia: valores y archivos correspondientes

Los valores de stage_prep_master corresponden a los nombres de archivo ubicados en /srv/salt/ceph/stage/0/master, mientras que los valores de stage_prep_minion corresponden a archivos de /srv/salt/ceph/stage/0/minion:

root@master # ls -l /srv/salt/ceph/stage/0/master
default-no-update-no-reboot.sls
default-no-update-reboot.sls
default-update-reboot.sls
[...]

root@master # ls -l /srv/salt/ceph/stage/0/minion
default-no-update-no-reboot.sls
default-no-update-reboot.sls
default-update-reboot.sls
[...]

7.2 Modificación de la configuración descubierta Edit source

Después de completada la fase 2, puede ser necesario cambiar la configuración descubierta. Para ver los valores actuales, ejecute:

root@master # salt target pillar.items

El resultado de la configuración por defecto para un único minion es normalmente similar al siguiente:

----------
    available_roles:
        - admin
        - mon
        - storage
        - mds
        - igw
        - rgw
        - client-cephfs
        - client-radosgw
        - client-iscsi
        - mds-nfs
        - rgw-nfs
        - master
    cluster:
        ceph
    cluster_network:
        172.16.22.0/24
    fsid:
        e08ec63c-8268-3f04-bcdb-614921e94342
    master_minion:
        admin.ceph
    mon_host:
        - 172.16.21.13
        - 172.16.21.11
        - 172.16.21.12
    mon_initial_members:
        - mon3
        - mon1
        - mon2
    public_address:
        172.16.21.11
    public_network:
        172.16.21.0/24
    roles:
        - admin
        - mon
        - mds
    time_server:
        admin.ceph
    time_service:
        ntp

Los valores mencionados anteriormente están distribuidos en varios archivos de configuración. La estructura de directorio con estos archivos se define en el directorio /srv/pillar/ceph/stack/stack.cfg. Normalmente, los archivos siguientes describen el clúster:

  • /srv/pillar/ceph/stack/global.yml: el archivo afecta a todos los minions del clúster de Salt.

  • /srv/pillar/ceph/stack/ceph/cluster.yml: el archivo afecta a todos los minions del clúster de Ceph denominado ceph.

  • /srv/pillar/ceph/stack/ceph/roles/función.yml: afecta a todos los minions que tienen asignada la función específica en el clúster ceph.

  • /srv/pillar/ceph/stack/cephminions/ID_DE_MINION/yml: afecta a ese minion particular.

Nota
Nota: sobrescritura de directorios con los valores por defecto

Hay un árbol de directorios paralelo donde se almacena la configuración por defecto en /srv/pillar/ceph/stack/default. No cambie los valores aquí presentes, ya que se sobrescriben.

El procedimiento habitual para cambiar la configuración recopilada es el siguiente:

  1. Busque la ubicación del elemento de configuración que debe cambiar. Por ejemplo, si necesita cambiar los valores relacionados con el clúster, como la red del clúster, edite el archivo /srv/pillar/ceph/stack/ceph/cluster.yml.

  2. Guarde el archivo.

  3. Para verificar los cambios, ejecute:

    root@master # salt target saltutil.pillar_refresh

    y a continuación:

    root@master # salt target pillar.items

7.2.1 Habilitación de IPv6 para la distribución del clúster de Ceph Edit source

Puesto que el direccionamiento de red IPv4 es prevalente, debe habilitar IPv6 como una personalización. DeepSea no cuenta con detección automática de direccionamiento IPv6.

Para configurar IPv6, defina las variables public_network y cluster_network del archivo /srv/pillar/ceph/stack/global.yml en subredes IPv6 válidas. Por ejemplo:

public_network: fd00:10::/64
cluster_network: fd00:11::/64

A continuación, ejecute la fase 2 de DeepSea y verifique que la información de red coincide con la configuración. La fase 3 generará ceph.conf con los indicadores necesarios.

Importante
Importante: sin compatibilidad con pila dual

Ceph no admite la pila dual: no es posible ejecutar Ceph simultáneamente en IPv4 e IPv6. La validación de DeepSea rechazará que haya una discordancia entre public_network y cluster_network o dentro de cualquiera de las variables. En el ejemplo siguiente se producirá un error de validación.

public_network: "192.168.10.0/24 fd00:10::/64"
Sugerencia
Sugerencia: evite el uso de direcciones fe80::/10 link-local

Procure no usar direcciones fe80::/10 link-local. Todas las interfaces de red tienen una dirección fe80 asignada y requieren un calificador de interfaz para el enrutamiento adecuado. Asigne direcciones IPv6 asignadas al sitio o utilice direcciones fd00::/8. Son parte de ULA y no se pueden enrutar globalmente.

Imprimir esta página