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.serviceroot@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.
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-salt
ceph-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-salt
ls 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]
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 →|.
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.
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.
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]
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:
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 disableSe 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.comIn 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, comepool.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.comroot@master #
ceph-salt config /time_server/external_servers add pool.ntp.orgL'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 adminroot@master #
ceph-salt config /cephadm_bootstrap/dashboard/password set PWD
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 puntareceph-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) #
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.
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.
Verificare che l'estensione Containers Module sia abilitata:
>
SUSEConnect --list-extensions | grep -A2 "Containers Module" Containers Module 15 SP3 x86_64 (Activated)Verificare che i seguenti pacchetti siano installati: apache2-utils (se si abilita un registro sicuro), cni, cni-plugins, podman, podman-cni-config e skopeo.
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]
).
Per avviare un registro non sicuro (senza cifratura SSL), seguire la procedura indicata di seguito:
Configurare
ceph-salt
per il registro non sicuro: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
:5000Avviare il registro non sicuro creando la directory necessaria (ad esempio,
/var/lib/registry
) e avviando il registro con il 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:2Per 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
Per avviare un registro sicuro, seguire la procedura indicata di seguito:
Creare le directory necessarie:
#
mkdir -p /var/lib/registry/{auth,certs}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.crtNotaImpostare il valore di
CN=[value]
sul nome di dominio completo dell'host ([REG_HOST_FQDN
]).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"Generare una combinazione di nome utente e password per l'autenticazione al registro:
#
htpasswd2 -bBc /var/lib/registry/auth/htpasswd \REG_USERNAME
REG_PASSWORD
Avviare il registro sicuro. Utilizzare il flag
REGISTRY_STORAGE_DELETE_ENABLED=true
per poter eliminare in seguito le immagini con il 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:2Effettuare un test dell'accesso sicuro al registro:
>
curl https://REG_HOST_FQDN
:REG_HOST_PORT
/v2/_catalog \ -uREG_USERNAME
:REG_PASSWORD
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 comandoskopeo 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/
Configurare l'URL del registro locale:
cephuser@adm >
ceph-salt config /containers/registry_auth/registry set REG_HOST_URLConfigurare il nome utente e la password per accedere al registro locale:
cephuser@adm >
ceph-salt config /containers/registry_auth/username set REG_USERNAMEcephuser@adm >
ceph-salt config /containers/registry_auth/password set REG_PASSWORD
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 #
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.
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:
Copiare il file di configurazione per i container:
>
sudo
cp /usr/share/containers/containers.conf /etc/containers/containers.confModificare 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).
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"
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 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
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 globalroot@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]
È 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
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
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
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.
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)"
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