Vai al contenutoNaviga tra le pagine: pagina precedente [tasto di scelta p]/pagina successiva [tasto di scelta n]
documentation.suse.com / Documentazione di SUSE Enterprise Storage 7.1 / Guida alla distribuzione / Distribuzione del cluster Ceph / Distribuzione del cluster di bootstrap mediante ceph-salt
Si applica a SUSE Enterprise Storage 7.1

7 Distribuzione del cluster di bootstrap mediante ceph-salt

Questa sezione illustra il processo di distribuzione di un cluster Ceph di base. Leggere con attenzione le sottosezioni seguenti ed eseguire i comandi inclusi nell'ordine dato.

7.1 Installazione ceph-salt

ceph-salt fornisce strumenti per la distribuzione dei cluster Ceph gestiti da cephadm. ceph-salt utilizza l'infrastruttura Salt per la gestione del sistema operativo, ad esempio gli aggiornamenti del software o la sincronizzazione dell'orario, e per la definizione dei ruoli dei Salt Minion.

Sul Salt Master, installare il pacchetto ceph-salt:

root@master # zypper install ceph-salt

Il comando precedente installa ceph-salt-formula come dipendenza che modifica la configurazione del Salt Master inserendo file aggiuntivi nella directory /etc/salt/master.d. Per applicare le modifiche, riavviare salt-master.service e sincronizzare i moduli Salt:

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

7.2 Configurazione delle proprietà del cluster

Utilizzare il comando ceph-salt config per configurare le proprietà di base del cluster.

Importante
Importante

Il file /etc/ceph/ceph.conf è gestito da cephadm e gli utenti non devono modificarlo. Impostare i parametri di configurazione Ceph con il nuovo comando ceph config. Consultare Sezione 28.2, «Database di configurazione» per maggiori informazioni.

7.2.1 Utilizzo della shell ceph-salt

Se si esegue config senza alcun percorso o sottocomando, viene creata una shell ceph-saltceph-salt interattiva. La shell è utile se è necessario configurare contemporaneamente più proprietà o se non si desidera digitare l'intera sintassi 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]

Come è possibile vedere dall'output del comando ceph-saltls di , la configurazione del cluster presenta una struttura ad albero. Sono disponibili due opzioni per configurare una proprietà specifica del cluster nella shell ceph-salt:

  • Eseguire il comando dalla posizione corrente e immettere il percorso assoluto alla proprietà come primo argomento:

    /> /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.
  • Modificare inserendo il percorso di cui occorre configurare la proprietà ed eseguire il 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]
Suggerimento
Suggerimento: completamento automatico degli snippet di configurazione

Dalla shell ceph-salt, è possibile utilizzare la funzione di completamento automatico in modo simile a come la si utilizza in una normale shell Linux (Bash). Tale funzione consente di completare i percorsi di configurazione, i sottocomandi o i nomi dei Salt Minion. Durante il completamento automatico di un percorso di configurazione, sono disponibili due opzioni:

  • Per fare in modo che la shell termini un percorso relativo sulla posizione corrente, premere due volte il tasto TAB →|.

  • Per fare in modo che la shell termini un percorso assoluto, immettere / e premere due volte il tasto TAB →|.

Suggerimento
Suggerimento: navigazione con i tasti del cursore

Se si immette cd dalla shell ceph-salt senza specificare alcun percorso, il comando stamperà una struttura ad albero della configurazione del cluster con la riga dell'attuale percorso attivo. È possibile utilizzare i tasti su è giù del cursore per spostarsi tra le singole righe. Dopo aver confermato con Enter, il percorso di configurazione verrà modificato sull'ultimo percorso attivo.

Importante
Importante: convenzione

Per assicurare la coerenza della documentazione, viene utilizzata la sintassi di un singolo comando senza immettere la shell ceph-salt. Ad esempio, è possibile elencare l'albero di configurazione del cluster con il comando seguente:

root@master # ceph-salt config ls

7.2.2 Aggiunta di Salt Minion

Includere nella configurazione del cluster Ceph tutti o un sottoinsieme di Salt Minion distribuiti e accettati nella Capitolo 6, Distribuzione Salt. È possibile specificare i Salt Minion utilizzando il loro nome intero oppure le espressioni glob "*" e "?" per includere contemporaneamente più Salt Minion. Utilizzare il sottocomando add nel percorso /ceph_cluster/minions. Il comando seguente include tutti i Salt Minion accettati:

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

Verificare che i Salt Minion specificati siano stati aggiunti:

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 Specifica dei Salt Minion gestiti da cephadm

Specificare i nodi che apparterranno al cluster Ceph e che saranno gestiti da cephadm. Includere tutti i nodi che eseguiranno i servizi Ceph, oltre al nodo admin:

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

7.2.4 Specifica del nodo admin

Il nodo admin è il nodo in cui sono installati il file di configurazione ceph.conf e il portachiavi di amministrazione Ceph. In genere, i comandi correlati a Ceph vengono eseguiti sul nodo admin.

Suggerimento
Suggerimento: Salt Master e nodo admin sullo stesso nodo

Negli ambienti eterogenei, dove tutti o quasi tutti gli host appartengono a SUSE Enterprise Storage, si consiglia di posizionare il nodo admin sullo stesso host del Salt Master.

Negli ambienti eterogenei dove un'infrastruttura Salt ospita più di un cluster, ad esempio SUSE Enterprise Storage insieme a SUSE Manager, non posizionare il nodo admin sullo stesso host del Salt Master.

Per specificare il nodo admin, eseguire il comando seguente:

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]
Suggerimento
Suggerimento: installazione di ceph.conf e del portachiavi di amministrazione su più nodi

È possibile installare il file di configurazione e il portachiavi di amministrazione Ceph su più nodi, se richiesto dalla distribuzione. Per motivi di sicurezza, evitare di installarli su tutti i nodi del cluster.

7.2.5 Specifica del primo nodo MON/MGR

È necessario specificare quale Salt Minion del cluster eseguirà il bootstrap del cluster. Questo minion diventerà il primo a eseguire i servizi Ceph Monitor e 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]

Inoltre, è necessario specificare l'indirizzo IP del MON di bootstrap sulla rete pubblica per assicurarsi che il parametro public_network sia impostato correttamente, ad esempio:

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

7.2.6 Specifica dei profili ottimizzati

È necessario specificare quali minion del cluster dispongono di profili ottimizzati attivamente. A questo scopo, aggiungere questi ruoli esplicitamente con i comandi seguenti:

Nota
Nota

Un minion non può ricoprire sia il ruolo latency che il ruolo throughput.

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 Generazione di una coppia di chiavi SSH

cephadm utilizza il protocollo SSH per comunicare con i nodi del cluster. L'account utente denominato cephadm viene creato automaticamente e utilizzato per la comunicazione SSH.

È necessario generare la parte privata e pubblica della coppia di chiavi 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 Configurazione del server dell'orario

L'orario di tutti i nodi del cluster deve essere sincronizzato con un'origine dell'orario affidabile. Sono previsti diversi scenari di approccio alla sincronizzazione dell'orario:

  • Se tutti i nodi del cluster sono già configurati sulla sincronizzazione dell'orario tramite un servizio NTP preferito, disabilitare del tutto la gestione del server dell'orario:

    root@master # ceph-salt config /time_server disable
  • Se il sito dispone già di un'origine dell'orario singola, specificare il nome host di tale origine:

     root@master # ceph-salt config /time_server/servers add time-server.example.com
  • In alternativa, ceph-salt è in grado di configurare uno dei Salt Minion nel ruolo di server dell'orario per il resto del cluster. In questi casi, si parla di "server dell'orario interno". In questo scenario, ceph-salt configurerà il server dell'orario interno (che deve essere uno dei Salt Minion) sulla sincronizzazione del suo orario con un server dell'orario esterno, come pool.ntp.org, e configurerà tutti gli altri minion per fare in modo che ricavino il proprio orario dal server dell'orario interno. È possibile eseguire questa operazione come segue:

    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

    L'opzione /time_server/subnet specifica la sottorete da cui i client NTP possono accedere al server NTP. Questa opzione è impostata automaticamente se si specifica /time_server/servers. Se è necessario modificarla o specificarla manualmente, eseguire:

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

Verificare le impostazioni del server dell'orario:

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]

All'indirizzo https://documentation.suse.com/sles/15-SP3/html/SLES-all/cha-ntp.html#sec-ntp-yast sono disponibili ulteriori informazioni sulla configurazione della sincronizzazione dell'orario.

7.2.9 Configurazione delle credenziali di login del Ceph Dashboard

Il Ceph Dashboard sarà disponibile in seguito alla distribuzione del cluster di base. Per accedervi, è necessario impostare un nome utente e una password validi, ad esempio:

root@master # ceph-salt config /cephadm_bootstrap/dashboard/username set admin
root@master # ceph-salt config /cephadm_bootstrap/dashboard/password set PWD
Suggerimento
Suggerimento: forzatura dell'aggiornamento della password

Per default, il primo utente del dashboard sarà forzato a modificare la password al primo login al dashboard. Per disabilitare questa funzione, eseguire il comando seguente:

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

7.2.10 Utilizzo del registro del container

Il cluster Ceph deve avere accesso a un registro del container per poter effettuare il download e la distribuzione dei servizi Ceph in container. Sono previsti due modi per accedere al registro:

  • Se il cluster può accedere al registro di default all'indirizzo registry.suse.com (direttamente o tramite proxy), è possibile puntare ceph-salt direttamente a tale URL senza creare un registro locale. Continuare seguendo i passaggi descritti nella Sezione 7.2.10.2, «Configurazione del percorso alle immagini del container».

  • Se il cluster non può accedere al registro di default, ad esempio per una distribuzione con air gap, è necessario configurare un registro container locale. Dopo che il registro locale è stato creato e configurato, è necessario puntare ceph-salt a tale registro.

7.2.10.1 Creazione e configurazione del registro locale (facoltativo)

Importante
Importante

Esistono diversi metodi per creare un registro locale. Le istruzioni fornite in questa sezione sono esempi di creazione di registri sicuri e non sicuri. Per informazioni generali sull'esecuzione di un registro delle immagini del container, fare riferimento a https://documentation.suse.com/sles/15-SP3/single-html/SLES-container/#sec-docker-registry-installation.

Suggerimento
Suggerimento: posizionamento e utilizzo della porta

Distribuire il registro su un computer accessibile da tutti i nodi del cluster. Si consiglia di utilizzare il nodo admin. Per default, il registro resta in ascolto sulla porta 5000.

Sul nodo del registro, utilizzare il seguente comando per assicurarsi che la porta sia libera:

ss -tulpn | grep :5000

Se altri processi (come iscsi-tcmu) sono già in ascolto sulla porta 5000, individuare un'altra porta libera utilizzabile per mappare la porta 5000 nel container del registro.

Procedura 7.1: creazione del registro locale
  1. Verificare che l'estensione Containers Module sia abilitata:

    > SUSEConnect --list-extensions | grep -A2 "Containers Module"
    Containers Module 15 SP3 x86_64 (Activated)
  2. Verificare che i seguenti pacchetti siano installati: apache2-utils (se si abilita un registro sicuro), cni, cni-plugins, podman, podman-cni-config e skopeo.

  3. Recuperare le seguenti informazioni:

    • Il nome di dominio completo dell'host del registro (REG_HOST_FQDN).

    • Un numero di porta disponibile utilizzabile per mappare la porta 5000 del container del registro (REG_HOST_PORT).

    • Se il registro sarà sicuro o non sicuro (insecure=[true|false]).

  4. Per avviare un registro non sicuro (senza cifratura SSL), seguire la procedura indicata di seguito:

    1. Configurare ceph-salt per il registro non sicuro:

      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. Avviare il registro non sicuro creando la directory necessaria (ad esempio, /var/lib/registry) e avviando il registro con il 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. Per avviare il registro dopo un riavvio, creare un file di unità systemd per il registro e abilitarlo:

      > sudo podman generate systemd --files --name registry
      > sudo mv container-registry.service /etc/systemd/system/
      > sudo systemctl enable container-registry.service
  5. Per avviare un registro sicuro, seguire la procedura indicata di seguito:

    1. Creare le directory necessarie:

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

      Impostare il valore di CN=[value] sul nome di dominio completo dell'host ([REG_HOST_FQDN]).

    3. Copiare il certificato su tutti i nodi del cluster e aggiornare la cache del certificato:

      # salt-cp '*' /var/lib/registry/certs/domain.crt \
       /etc/pki/trust/anchors/
      # salt '*' cmd.shell "update-ca-certificates"
    4. Generare una combinazione di nome utente e password per l'autenticazione al registro:

      # htpasswd2 -bBc /var/lib/registry/auth/htpasswd \
       REG_USERNAME REG_PASSWORD
    5. Avviare il registro sicuro. Utilizzare il flag REGISTRY_STORAGE_DELETE_ENABLED=true per poter eliminare in seguito le immagini con il 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. Effettuare un test dell'accesso sicuro al registro:

      > curl https://REG_HOST_FQDN:REG_HOST_PORT/v2/_catalog \
       -u REG_USERNAME:REG_PASSWORD
  6. Dopo aver creato il registro locale, è necessario sincronizzare le immagini del container dal registro ufficiale SUSE, disponibile all'indirizzo registry.suse.com con quello locale. A tale scopo, è possibile utilizzare il comando skopeo sync disponibile nel pacchetto skopeo. Per ulteriori dettagli, fare riferimento alla documentazione (man 1 skopeo-sync). Si considerino i seguenti esempi:

    Esempio 7.1: visualizzazione dei file manifest
    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
    Esempio 7.2: sincronizzazione con una directory

    Sincronizzare tutte le immagini Ceph:

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

    Sincronizzare solo le immagini più recenti:

    skopeo sync --src docker --dest dir registry.suse.com/ses/7.1/ceph/ceph:latest /root/images/
    Esempio 7.3: sincronizzazione delle immagini Grafana:
    skopeo sync --src docker --dest dir registry.suse.com/ses/7.1/ceph/grafana /root/images/

    Sincronizzare solo le immagini Grafana più recenti:

    skopeo sync --src docker --dest dir registry.suse.com/ses/7.1/ceph/grafana:latest /root/images/
    Esempio 7.4: sincronizzazione delle immagini Prometheus più recenti
    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/
Procedura 7.2: configurazione del registro locale e delle credenziali di accesso
  1. Configurare l'URL del registro locale:

    cephuser@adm > ceph-salt config /containers/registry_auth/registry set REG_HOST_URL
  2. Configurare il nome utente e la password per accedere al registro locale:

    cephuser@adm > ceph-salt config /containers/registry_auth/username set REG_USERNAME
    cephuser@adm > ceph-salt config /containers/registry_auth/password set REG_PASSWORD
Suggerimento
Suggerimento: cache del registro

Per evitare di ripetere la sincronizzazione del registro locale quando sono presenti nuovi container aggiornati, è possibile configurare una cache del registro.

7.2.10.2 Configurazione del percorso alle immagini del container

Importante
Importante

Questa sezione consente di configurare il percorso delle immagini del container del cluster di bootstrap (distribuzione della prima coppia Ceph Monitor e Ceph Manager). Il percorso non si applica alle immagini del container di servizi aggiuntivi, ad esempio dello stack di monitoraggio.

Suggerimento
Suggerimento: configurazione del proxy HTTPS

Se è necessario utilizzare un proxy per comunicare con il server del registro del container, eseguire la seguente procedura di configurazione su tutti i nodi del cluster:

  1. Copiare il file di configurazione per i container:

    > sudo cp /usr/share/containers/containers.conf /etc/containers/containers.conf
  2. Modificare il file appena copiato e aggiungere l'impostazione http_proxy alla rispettiva sezione [engine]; ad esempio:

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

È necessario che cephadm conosca un percorso URI valido per le immagini del container. Verificare l'impostazione di default eseguendo il comando:

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

Se non è necessario un registro locale o alternativo, specificare il registro del container SUSE di default:

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

Se la distribuzione richiede un percorso specifico, ad esempio un percorso a un registro locale, configurarlo nel modo seguente:

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

7.2.11 Abilitazione della cifratura in esecuzione dei dati (msgr2)

Il protocollo Messenger v2 (MSGR2) è il protocollo cablato di Ceph. Fornisce una modalità di sicurezza che cifra tutti i dati in transito sulla rete, l'incapsulamento dei payload di autenticazione e l'abilitazione dell'integrazione futura delle nuove modalità di autenticazione (come Kerberos).

Importante
Importante

msgr2 non è attualmente supportato dai client Ceph del kernel Linux, come CephFS e il dispositivo di blocco RADOS (RADOS Block Device, RBD).

I daemon Ceph possono eseguire l'associazione a più porte, consentendo ai client Ceph esistenti e ai nuovi client abilitati per v2 di connettersi allo stesso cluster. Per default, i MON eseguono adesso l'associazione alla nuova porta 3300 con assegnazione IANA (CE4h o 0xCE4) per il nuovo protocollo v2, oltre all'associazione alla precedente porta 6789 di default per il protocollo v1 legacy.

Il protocollo v2 (MSGR2) supporta due modalità di connessione:

crc mode

Un'autenticazione iniziale sicura quando viene stabilita la connessione e un controllo dell'integrità CRC32.

secure mode

Un'autenticazione iniziale sicura quando viene stabilita la connessione e una cifratura completa di tutto il traffico post-autenticazione, incluso un controllo dell'integrità crittografico.

Per la maggior parte delle connessioni, sono disponibili opzioni per controllare le modalità da utilizzare:

ms_cluster_mode

La modalità di connessione (o le modalità consentite) utilizzata per la comunicazione interna al cluster tra i daemon Ceph. Se sono elencate più modalità, sono preferite quelle nelle prime posizioni dell'elenco.

ms_service_mode

Un elenco delle modalità consentite che i client possono utilizzare durante la connessione al cluster.

ms_client_mode

Un elenco di modalità di connessione, in ordine di preferenza, che i client possono utilizzare (o consentire) durante la comunicazione con un cluster Ceph.

È presente un insieme di opzioni parallele che si applica specificamente ai monitor e che consente agli amministratori di impostare requisiti diversi (in genere più sicuri) per la comunicazione con i monitor.

ms_mon_cluster_mode

La modalità di connessione (o le modalità consentite) da utilizzare tra i monitor.

ms_mon_service_mode

Un elenco delle modalità consentite che i client o altri daemon Ceph possono utilizzare durante la connessione ai monitor.

ms_mon_client_mode

Un elenco delle modalità di connessione, in ordine di preferenza, che i client o i daemon diversi dai monitor possono utilizzare durante la connessione ai monitor.

Per abilitare la modalità di cifratura MSGR2 durante la distribuzione, è necessario aggiungere delle opzioni di configurazione alla configurazione ceph-salt prima di eseguire ceph-salt apply.

Per utilizzare la modalità secure, eseguire i comandi seguenti.

Aggiungere la sezione globale a ceph_conf nello strumento di configurazione ceph-salt:

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

Impostare le opzioni seguenti:

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

Assicurarsi che secure preceda crc.

Per forzare la modalità secure, eseguire i comandi seguenti:

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
Suggerimento
Suggerimento: aggiornamento delle impostazioni

Se si desidera modificare le impostazioni riportate sopra, impostare le modifiche alla configurazione nell'archivio di configurazione del monitor. A questo scopo, utilizzare il comando ceph config set.

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

Esempio:

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

Se si desidera selezionare il valore attuale, incluso quello di default, eseguire il comando seguente:

root@master # ceph config get CEPH_COMPONENT CONNECTION_OPTION

Ad esempio, per attivare la ms_cluster_mode per gli OSD, eseguire:

root@master # ceph config get osd ms_cluster_mode

7.2.12 Configurazione della rete di cluster

Se si esegue una rete di cluster separata, potrebbe essere necessario impostare l'indirizzo IP della rete di cluster seguito dalla porzione della maschera di sottorete dopo il simbolo della barra, ad esempio 192.168.10.22/24.

Eseguire i comandi seguenti per abilitare 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 Verifica della configurazione del cluster

La configurazione minima del cluster è stata completata. Analizzarla per individuare errori evidenti:

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]
Suggerimento
Suggerimento: stato della configurazione del cluster

È possibile verificare la validità della configurazione del cluster eseguendo il comando seguente:

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

7.2.14 Esportazione delle configurazioni del cluster

Dopo aver configurato il cluster di base e averne verificato la validità della configurazione, è consigliabile esportare tale configurazione in un file:

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

L'output dell'esportazione ceph-salt export include la chiave privata SSH. In caso di dubbi sulle implicazioni di sicurezza, non eseguire questo comando senza le appropriate precauzioni.

Se si dovesse interrompere la configurazione del cluster e fosse necessario ripristinarla a uno stato di backup precedente, eseguire:

root@master # ceph-salt import cluster.json

7.3 Aggiornamento dei nodi e bootstrap del cluster minimo

Prima di distribuire il cluster, aggiornare tutti i pacchetti software su tutti i nodi:

root@master # ceph-salt update

Se durante l'aggiornamento un nodo restituisce il messaggio che informa che è necessario eseguire il riavvio, vuol dire che i pacchetti importanti del sistema operativo (come il kernel) sono stati aggiornati a una versione più recente ed è necessario riavviare il nodo per applicare le modifiche.

Per riavviare tutti i nodi pertinenti, aggiungere l'opzione --reboot

root@master # ceph-salt update --reboot

Oppure, riavviarli in un passaggio separato:

root@master # ceph-salt reboot
Importante
Importante

Il Salt Master non viene mai riavviato dai comandi ceph-salt update --reboot o ceph-salt reboot. Se è necessario riavviare il Salt Master, occorre procedere manualmente.

In seguito all'aggiornamento dei nodi, eseguire il bootstrap del cluster minimo:

root@master # ceph-salt apply
Nota
Nota

Al termine del bootstrap, sul cluster saranno presenti un Ceph Monitor e un Ceph Manager.

Il comando riportato sopra consentirà di aprire un'interfaccia utente interattiva in cui è mostrato l'avanzamento di ogni minion.

Distribuzione di un cluster minimo
Figura 7.1: Distribuzione di un cluster minimo
Suggerimento
Suggerimento: modalità non interattiva

Se è necessario applicare la configurazione da uno script, è disponibile anche una modalità di distribuzione non interattiva, utile anche quando il cluster viene distribuito da un computer remoto, per evitare le distrazioni causate dall'aggiornamento continuo delle informazioni di avanzamento sulla schermata online:

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

7.4 Revisione dei passaggi finali

Al termine dell'esecuzione del comando ceph-salt apply, dovrebbe essere presente un Ceph Monitor e un Ceph Manager. Dovrebbe essere possibile eseguire correttamente il comando ceph status su uno dei minion a cui è stato assegnato il ruolo admin come root o utente cephadm tramite sudo.

I passaggi successivi riguardano l'uso di cephadm per la distribuzione di Ceph Monitor, Ceph Manager, OSD, stack di monitoraggio e gateway aggiuntivi.

Prima di continuare, rivedere le nuove impostazioni di rete del cluster. A questo punto, l'impostazione public_network è stata popolata in base ai valori immessi per /cephadm_bootstrap/mon_ip nella configurazione ceph-salt. Tuttavia, questa impostazione è stata applicata soltanto a Ceph Monitor. È possibile rivederla con il comando seguente:

root@master # ceph config get mon public_network

Si tratta della configurazione minima richiesta per il funzionamento di Ceph, ma si consiglia di configurare l'impostazione public_network come global, ovvero di applicarla a tutti i tipi di daemon Ceph e non soltanto ai MON:

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

Questo passaggio non è obbligatorio. Tuttavia, se si sceglie di non utilizzare questa impostazione, i Ceph OSD e altri daemon (ad eccezione di Ceph Monitor) resteranno in ascolto su tutti gli indirizzi.

Se si desidera che gli OSD comunichino tra di loro su una rete completamente separata, eseguire il comando seguente:

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

Eseguendo questo comando, gli OSD creati nella distribuzione utilizzeranno fin dall'inizio la rete di cluster designata.

Se sono stati impostati nodi dense per il cluster (più di 62 OSD per host), assicurarsi di assegnare un numero sufficiente di porte ai Ceph OSD. L'intervallo di default (6800-7300) attualmente non consente più di 62 OSD per host. Per un cluster con nodi dense, regolare l'impostazione ms_bind_port_max su un valore adeguato. Ogni OSD consumerà otto porte aggiuntive. Ad esempio, per un host impostato sull'esecuzione di 96 OSD, saranno necessarie 768 porte. L'impostazione ms_bind_port_max deve essere configurata su almeno 7568 tramite l'esecuzione del comando seguente:

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

A questo scopo, è necessario regolare le impostazioni del firewall di conseguenza. Consultare Section 13.7, “Firewall settings for Ceph” per maggiori informazioni.

7.5 Disabilitazione dei client non sicuri

Dalla versione v15.2.11 di Pacific, è stato introdotto un nuovo avviso sullo stato di integrità che informa che i client non sicuri possono unirsi al cluster. Per default, questo avviso è attivo. Il Ceph Dashboard mostrerà il cluster nello stato HEALTH_WARN e una verifica dello stato del cluster dalla riga di comando fornisce le seguenti informazioni:

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

L'avviso indica che i Ceph Monitor stanno ancora consentendo ai client meno recenti, e privi di patch, di connettersi al cluster. Questo assicura la possibilità di connessione dei client esistenti durante l'upgrade del cluster, ma segnala la presenza di un problema che deve essere risolto. Dopo aver completato l'upgrade del cluster e di tutti i client all'ultima versione di Ceph, disattivare i client privi di patch mediante il seguente comando:

cephuser@adm > ceph config set mon auth_allow_insecure_global_id_reclaim false