7 Implantando o cluster de boot usando ceph-salt
#
Esta seção orienta você pelo processo de implantação de um cluster básico do Ceph. Leia as subseções a seguir com atenção e execute os comandos incluídos na ordem indicada.
7.1 Instalando ceph-salt
#
O ceph-salt
inclui ferramentas para implantar clusters do Ceph gerenciados pelo cephadm. O ceph-salt
usa a infraestrutura do Salt para executar o gerenciamento de OS; por exemplo, atualizações de software ou sincronização de horário, e definir funções para os Minions Salt.
No Master Salt, instale o pacote ceph-salt:
root@master #
zypper install ceph-salt
O comando acima instalou ceph-salt-formula como uma dependência que modificou a configuração do Master Salt inserindo arquivos adicionais no diretório /etc/salt/master.d
. Para aplicar as mudanças, reinicie o salt-master.service
e sincronize os módulos do Salt:
root@master #
systemctl restart salt-master.serviceroot@master #
salt \* saltutil.sync_all
7.2 Configurando as propriedades do cluster #
Use o comando ceph-salt config
para configurar as propriedades básicas do cluster.
O arquivo /etc/ceph/ceph.conf
é gerenciado pelo cephadm e os usuários não devem editá-lo. Os parâmetros de configuração do Ceph devem ser definidos usando o novo comando ceph config
. Consulte o Seção 28.2, “Banco de dados de configuração” para obter mais informações.
7.2.1 Usando o shell do ceph-salt
#
Se você executar o config
sem nenhum caminho ou subcomando, digitará um shell interativo do ceph-salt
ceph-salt. O shell é prático se você precisa configurar várias propriedades em um lote e não deseja digitar a sintaxe completa do 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 você pode ver na saída do comando ceph-salt
ls do
, a configuração do cluster está organizada em uma estrutura de árvore. Para configurar uma propriedade específica do cluster no shell do ceph-salt
, você tem duas opções:
Execute o comando a partir da posição atual e digite o caminho absoluto para a propriedade como o primeiro 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.Mude para o caminho com a propriedade que você precisa configurar e execute o 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]
Enquanto estiver em um shell do ceph-salt
, você poderá usar o recurso de preenchimento automático semelhante ao do shell normal do Linux (Bash). Ele preenche os caminhos de configuração, subcomandos ou nomes de Minion Salt. Ao preencher automaticamente um caminho de configuração, você tem duas opções:
Para permitir que o shell termine um caminho relativo à sua posição atual, pressione a tecla TAB →| duas vezes.
Para permitir que o shell termine um caminho absoluto, digite / e pressione a tecla TAB →| duas vezes.
Se você digitar cd
no shell do ceph-salt
sem nenhum caminho, o comando imprimirá uma estrutura de árvore da configuração do cluster com a linha do caminho atual ativo. Você pode usar as teclas do cursor para cima e para baixo para navegar pelas linhas individuais. Depois de confirmar com Enter, o caminho de configuração mudará para o último caminho ativo.
Para manter a documentação consistente, usaremos uma única sintaxe de comando sem inserir o shell do ceph-salt
. Por exemplo, você pode listar a árvore de configuração do cluster usando o seguinte comando:
root@master #
ceph-salt config ls
7.2.2 Adicionando minions Salt #
Inclua todos ou um subconjunto de Minions Salt que implantamos e aceitamos na Capítulo 6, Implantando o Salt na configuração do cluster do Ceph. Você pode especificar os Minions Salt usando os nomes completos ou as expressões glob “*” e “?” para incluir vários Minions Salt de uma vez. Use o subcomando add
no caminho /ceph_cluster/minions
. O seguinte comando inclui todos os Minions Salt aceitos:
root@master #
ceph-salt config /ceph_cluster/minions add '*'
Verifique se os Minions Salt especificados foram adicionados:
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 Especificando minions Salt gerenciados pelo cephadm #
Especifique os nós que pertencerão ao cluster do Ceph e serão gerenciados pelo cephadm. Inclua todos os nós que executarão os serviços do Ceph e também o Nó de Admin:
root@master #
ceph-salt config /ceph_cluster/roles/cephadm add '*'
7.2.4 Especificando o nó de admin #
O Nó de Admin é o nó em que o arquivo de configuração ceph.conf
e o chaveiro admin do Ceph estão instalados. Geralmente, você executa os comandos relacionados ao Ceph no Nó de Admin.
Em um ambiente homogêneo onde todos ou a maioria dos hosts pertencem ao SUSE Enterprise Storage, recomendamos manter o Nó de Admin no mesmo host que o Master Salt.
Em um ambiente heterogêneo onde uma infraestrutura do Salt hospeda mais de um cluster, por exemplo, o SUSE Enterprise Storage junto com o SUSE Manager, não coloque o Nó de Admin no mesmo host que o Master Salt.
Para especificar o Nó de Admin, execute o seguinte comando:
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 o chaveiro admin em vários nósVocê pode instalar o arquivo de configuração do Ceph e o chaveiro admin em vários nós, se sua implantação exigir isso. Por motivos de segurança, evite instalá-los em todos os nós do cluster.
7.2.5 Especificando o primeiro nó MON/MGR #
Você precisa especificar qual dos Minions Salt do cluster inicializará o cluster. Esse minion será o primeiro a executar os serviços 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]
Além disso, você precisa especificar o endereço IP do MON de boot na rede pública para garantir que o parâmetro public_network
seja definido corretamente, por exemplo:
root@master #
ceph-salt config /cephadm_bootstrap/mon_ip set 192.168.10.20
7.2.6 Especificando perfis ajustados #
Você precisa especificar quais dos minions do cluster têm os perfis ajustados ativamente. Para fazer isso, adicione estas funções explicitamente com os seguintes comandos:
Um minion não pode ter as duas funções latency
e 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 Gerando um par de chaves SSH #
O cephadm usa o protocolo SSH para se comunicar com os nós do cluster. Uma conta do usuário chamada cephadm
é criada automaticamente e usada para comunicação por SSH.
Você precisa gerar a parte particular e a pública do par de chaves 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 Configurando o servidor de horário #
Todos os nós do cluster precisam ter o horário sincronizado com uma fonte de horário confiável. Há vários cenários para realizar a sincronização de horário:
Se todos os nós do cluster já estiverem configurados para sincronizar o horário usando um serviço NTP de sua escolha, desabilite completamente o processamento do servidor de horário:
root@master #
ceph-salt config /time_server disableSe o seu site já tiver uma fonte de horário única, especifique o nome de host dessa fonte:
root@master #
ceph-salt config /time_server/servers add time-server.example.comSe preferir, o
ceph-salt
pode configurar um dos Minions Salt para agir como o servidor de horário para o restante do cluster. Esse recurso às vezes é chamado de “servidor de horário interno”. Nesse cenário, oceph-salt
configura o servidor de horário interno (que deve ser um dos Minions Salt) para sincronizar seu horário com um servidor de horário externo, comopool.ntp.org
, e configura todos os outros minions para obter o horário do servidor de horário interno. Isso pode ser feito da seguinte maneira:root@master #
ceph-salt config /time_server/servers add ses-master.example.comroot@master #
ceph-salt config /time_server/external_servers add pool.ntp.orgA opção
/time_server/subnet
especifica a sub-rede da qual os clientes NTP têm permissão para acessar o servidor NTP. Ela é definida automaticamente quando você especifica/time_server/servers
. Se você precisar mudá-la ou especificá-la manualmente, execute:root@master #
ceph-salt config /time_server/subnet set 10.20.6.0/24
Verifique as configurações do servidor de horário:
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]
Encontre mais informações sobre como configurar a sincronização de horário em https://documentation.suse.com/sles/15-SP3/html/SLES-all/cha-ntp.html#sec-ntp-yast.
7.2.9 Configurando as credenciais de login do Ceph Dashboard #
O Ceph Dashboard estará disponível após a implantação do cluster básico. Para acessá-lo, você precisa definir um nome de usuário e uma senha válidos, por exemplo:
root@master #
ceph-salt config /cephadm_bootstrap/dashboard/username set adminroot@master #
ceph-salt config /cephadm_bootstrap/dashboard/password set PWD
Por padrão, o primeiro usuário do painel de controle será forçado a mudar sua senha ao efetuar o primeiro login. Para desabilitar esse recurso, execute o seguinte comando:
root@master #
ceph-salt config /cephadm_bootstrap/dashboard/force_password_update disable
7.2.10 Usando o registro do container #
O cluster do Ceph precisa ter acesso a um registro de container para que possa fazer download e implantar os serviços do Ceph em container. Há duas maneiras de acessar o registro:
Se o cluster puder acessar o registro padrão em
registration.suse.com
(diretamente ou por proxy), você poderá apontar oceph-salt
diretamente para esse URL sem criar um registro local. Continue seguindo as etapas na Seção 7.2.10.2, “Configurando o caminho para imagens de container”.Se o cluster não puder acessar o registro padrão, por exemplo, para uma implantação isolada (air-gapped), você precisará configurar um registro de container local. Depois que o registro local for criado e configurado, você precisará apontar o
ceph-salt
para ele.
7.2.10.1 Criando e configurando o registro local (opcional) #
Há vários métodos de criação de um registro local. As instruções nesta seção são exemplos de criação de registros seguros e não seguros. Para obter informações gerais sobre a execução de um registro de imagem de container, consulte https://documentation.suse.com/sles/15-SP3/single-html/SLES-container/#sec-docker-registry-installation.
Implante o registro em uma máquina acessível a todos os nós no cluster. Recomendamos o Nó de Admin. Por padrão, o registro escuta na porta 5000.
No nó de registro, use o seguinte comando para garantir que a porta esteja livre:
ss -tulpn | grep :5000
Se outros processos (como iscsi-tcmu
) já estiverem escutando na porta 5000, determine outra porta livre que possa ser usada para mapear para a porta 5000 no container de registro.
Verifique se a extensão Containers Module está habilitada:
>
SUSEConnect --list-extensions | grep -A2 "Containers Module" Containers Module 15 SP3 x86_64 (Activated)Verifique se os seguintes pacotes estão instalados: apache2-utils (no caso de habilitar um registro seguro), cni, cni-plugins, podman, podman-cni-config e skopeo.
Colete as seguintes informações:
Nome de domínio completo e qualificado do host de registro (
REG_HOST_FQDN
).Um número de porta disponível usado para mapear para a porta 5000 do container de registro (
REG_HOST_PORT
).Se o registro será seguro ou não seguro (
insecure=[true|false]
).
Para iniciar um registro não seguro (sem criptografia SSL), siga estas etapas:
Configure o
ceph-salt
para o registro não 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 o registro não seguro criando o diretório necessário (por exemplo,
/var/lib/registry
) e iniciando o registro com o 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 o registro seja iniciado após uma reinicialização, crie um arquivo da unidade
systemd
para ele e habilite-o:>
sudo
podman generate systemd --files --name registry>
sudo
mv container-registry.service /etc/systemd/system/>
sudo
systemctl enable container-registry.service
Para iniciar um registro seguro, siga estas etapas:
Crie os diretórios necessários:
#
mkdir -p /var/lib/registry/{auth,certs}Gere um 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 o valor
CN=[value]
como o nome de domínio completo e qualificado do host ([REG_HOST_FQDN
]).Copie o certificado para todos os nós do cluster e atualize o cache do certificado:
#
salt-cp '*' /var/lib/registry/certs/domain.crt \ /etc/pki/trust/anchors/#
salt '*' cmd.shell "update-ca-certificates"Gere uma combinação de nome de usuário e senha para autenticação no registro:
#
htpasswd2 -bBc /var/lib/registry/auth/htpasswd \REG_USERNAME
REG_PASSWORD
Inicie o registro seguro. Use o flag
REGISTRY_STORAGE_DELETE_ENABLED=true
para que você possa apagar imagens posteriormente com o 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:2Teste o acesso seguro ao registro:
>
curl https://REG_HOST_FQDN
:REG_HOST_PORT
/v2/_catalog \ -uREG_USERNAME
:REG_PASSWORD
Quando o registro local é criado, você precisa sincronizar as imagens de container do registro oficial do SUSE em
registry.suse.com
com o registro local. Você pode usar o comandoskopeo sync
incluído no pacote skopeo para essa finalidade. Para obter mais detalhes, consulte a página de manual (man 1 skopeo-sync
). Considere estes exemplos:Exemplo 7.1: Vendo arquivos de manifesto #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
Exemplo 7.2: Sincronizar com um diretório #Sincronizar todas as imagens do Ceph:
skopeo sync --src docker --dest dir registry.suse.com/ses/7.1/ceph/ceph /root/images/
Sincronizar apenas as imagens mais recentes:
skopeo sync --src docker --dest dir registry.suse.com/ses/7.1/ceph/ceph:latest /root/images/
Exemplo 7.3: Sincronizar as imagens do Grafana: #skopeo sync --src docker --dest dir registry.suse.com/ses/7.1/ceph/grafana /root/images/
Sincronizar apenas as imagens mais recentes do Grafana:
skopeo sync --src docker --dest dir registry.suse.com/ses/7.1/ceph/grafana:latest /root/images/
Exemplo 7.4: Sincronizar as imagens mais recentes do 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 o URL do registro local:
cephuser@adm >
ceph-salt config /containers/registry_auth/registry set REG_HOST_URLConfigure o nome de usuário e a senha para acessar o 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 a ressincronização do registro local quando novos containers atualizados forem exibidos, você pode configurar um cache de registro.
7.2.10.2 Configurando o caminho para imagens de container #
Esta seção ajuda você a configurar o caminho para as imagens de container do cluster de boot (implantação do primeiro par de Ceph Monitor e Ceph Manager). O caminho não se aplica a imagens de container de serviços adicionais, por exemplo, a pilha de monitoramento.
Se você precisa usar um proxy para se comunicar com o servidor de registro do container, execute as seguintes etapas de configuração em todos os nós do cluster:
Copie o arquivo de configuração dos containers:
>
sudo
cp /usr/share/containers/containers.conf /etc/containers/containers.confEdite o arquivo recém-copiado e adicione a configuração
http_proxy
a esta seção[engine]
, por exemplo:>
cat /etc/containers/containers.conf [engine] http_proxy=proxy.example.com [...]
O cephadm precisa saber um caminho de URI válido para as imagens de container. Verifique a configuração padrão executando:
root@master #
ceph-salt config /cephadm_bootstrap/ceph_image_path ls
Se você não precisa de um registro alternativo ou local, especifique o registro de container do SUSE padrão:
root@master #
ceph-salt config /cephadm_bootstrap/ceph_image_path set registry.suse.com/ses/7.1/ceph/ceph
Se a implantação exigir um caminho específico, por exemplo, um caminho para um registro local, configure-o da seguinte maneira:
root@master #
ceph-salt config /cephadm_bootstrap/ceph_image_path set LOCAL_REGISTRY_PATH
7.2.11 Habilitando a criptografia de dados em trânsito (msgr2) #
O Messenger v2 (MSGR2) é o protocolo on-wire do Ceph. Ele oferece um modo de segurança que criptografa todos os dados que passam pela rede, encapsulamento de payloads de autenticação e habilitação da integração futura de novos modos de autenticação (como Kerberos).
Atualmente, o msgr2 não é suportado pelos clientes Ceph do kernel do Linux, como CephFS e Dispositivo de Blocos RADOS.
Os daemons do Ceph podem se vincular a várias portas, permitindo que os clientes Ceph legados e os novos clientes compatíveis com a versão 2 se conectem ao mesmo cluster. Por padrão, os MONs agora se vinculam à nova porta 3300 atribuída pela IANA (CE4h ou 0xCE4) para o novo protocolo v2 e também à porta antiga padrão 6789 para o protocolo v1 legado.
O protocolo v2 (MSGR2) suporta dois modos de conexão:
- modo crc
Uma autenticação inicial forte quando a conexão é estabelecida e uma verificação de integridade CRC32C.
- modo seguro
Uma autenticação inicial forte quando a conexão é estabelecida e a criptografia completa de todo o tráfego pós-autenticação, incluindo uma verificação de integridade criptográfica.
Para a maioria das conexões, há opções que controlam os modos que são usados:
- ms_cluster_mode
O modo de conexão (ou modos permitidos) usado para comunicação intracluster entre os daemons do Ceph. Se houver vários modos na lista, a preferência será dos que forem listados primeiro.
- ms_service_mode
Uma lista de modos permitidos para os clientes usarem na conexão com o cluster.
- ms_client_mode
Uma lista de modos de conexão, em ordem de preferência, para os clientes usarem (ou permitirem) na comunicação com um cluster do Ceph.
Há um conjunto paralelo de opções que se aplicam especificamente aos monitores, permitindo que os administradores definam requisitos diferentes (geralmente mais seguros) para comunicação com os monitores.
- ms_mon_cluster_mode
O modo de conexão (ou modos permitidos) que será usado entre os monitores.
- ms_mon_service_mode
Uma lista de modos permitidos para clientes ou outros daemons do Ceph usarem na conexão com monitores.
- ms_mon_client_mode
Uma lista de modos de conexão, em ordem de preferência, para clientes ou daemons que não são de monitor usarem na conexão com monitores.
Para habilitar o modo de criptografia MSGR2 durante a implantação, você precisa adicionar algumas opções à configuração do ceph-salt
antes de executar o ceph-salt apply
.
Para usar o modo secure
, execute os comandos a seguir.
Adicione a seção global ao ceph_conf
na ferramenta de configuração do ceph-salt
:
root@master #
ceph-salt config /cephadm_bootstrap/ceph_conf add global
Defina as seguintes opções:
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"
Certifique-se de que secure
venha antes de crc
.
Para forçar o modo secure
, execute os seguintes comandos:
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
Para mudar qualquer uma das configurações acima, defina as mudanças de configuração no armazenamento de configuração do monitor. Isso é feito usando o comando ceph config set
.
root@master #
ceph config set global CONNECTION_OPTION CONNECTION_MODE [--force]
Por exemplo:
root@master #
ceph config set global ms_cluster_mode "secure crc"
Para verificar o valor atual, incluindo o valor padrão, execute o seguinte comando:
root@master #
ceph config get CEPH_COMPONENT CONNECTION_OPTION
Por exemplo, para obter o ms_cluster_mode
dos OSD's, execute:
root@master #
ceph config get osd ms_cluster_mode
7.2.12 Configurando a rede do cluster #
Opcionalmente, se você executar uma rede de cluster separada, talvez seja necessário definir o endereço IP da rede do cluster seguido pela parte da máscara de sub-rede após a barra, por exemplo, 192.168.10.22/24
.
Execute os seguintes comandos 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 Verificando a configuração do cluster #
A configuração mínima do cluster foi concluída. Verifique se há erros óbvios:
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]
Você pode verificar se a configuração do cluster é válida executando o seguinte comando:
root@master #
ceph-salt status
cluster: 5 minions, 0 hosts managed by cephadm
config: OK
7.2.14 Exportando as configurações do cluster #
Depois de configurar o cluster básico e sua configuração estiver válida, convém exportá-la para um arquivo:
root@master #
ceph-salt export > cluster.json
A saída do comando ceph-salt export
inclui a chave privada SSH. Se você estiver preocupado com as implicações de segurança, não execute esse comando sem tomar as devidas precauções.
Caso você danifique a configuração do cluster e tenha de reverter para um estado de backup, execute:
root@master #
ceph-salt import cluster.json
7.3 Atualizando os nós e o cluster mínimo de boot #
Antes de implantar o cluster, atualize todos os pacotes de software em todos os nós:
root@master #
ceph-salt update
Se um nó relatar que a Reinicialização é necessária
durante a atualização, os pacotes importantes do OS, como o kernel, foram atualizados para uma versão mais recente, e você precisa reinicializar o nó para aplicar as mudanças.
Para reinicializar todos os nós que exigem reinicialização, anexe a opção --reboot
root@master #
ceph-salt update --reboot
Se preferir, reinicialize-os em uma etapa separada:
root@master #
ceph-salt reboot
O Master Salt nunca é reinicializado pelos comandos ceph-salt update --reboot
ou ceph-salt reboot
. Se o Master Salt precisar ser reinicializado, você deverá reinicializá-lo manualmente.
Após a atualização dos nós, inicialize o cluster mínimo:
root@master #
ceph-salt apply
Quando a inicialização for concluída, o cluster terá um Ceph Monitor e um Ceph Manager.
O comando acima abrirá uma interface do usuário interativa que mostra o andamento atual de cada minion.
Se você precisa aplicar a configuração de um script, também há um modo de implantação não interativo. Ele também é útil para implantar o cluster de uma máquina remota, porque a atualização constante das informações de andamento na tela pela rede pode provocar distração:
root@master #
ceph-salt apply --non-interactive
7.4 Revisando as etapas finais #
Após a conclusão do comando ceph-salt apply
, você deverá ter um Ceph Monitor e um Ceph Manager. Você deve conseguir executar o comando ceph status
com êxito em qualquer um dos minions que receberam a função admin
como root
ou o usuário cephadm
por meio do sudo
.
As próximas etapas envolvem o uso do cephadm para implantar mais Ceph Monitor, Ceph Manager, OSDs, Pilha de Monitoramento e Gateways.
Antes de continuar, revise as novas configurações de rede do cluster. Neste ponto, a configuração public_network
foi preenchida com base no que foi inserido para /cephadm_bootstrap/mon_ip
na configuração do ceph-salt
. No entanto, essa configuração foi aplicada apenas ao Ceph Monitor. Você pode revisá-la com o seguinte comando:
root@master #
ceph config get mon public_network
Esse é o mínimo necessário para o Ceph funcionar, mas recomendamos tornar essa configuração public_network
global
, o que significa que ela será aplicada a todos os tipos de daemons do Ceph, e não apenas aos MONs:
root@master #
ceph config set global public_network "$(ceph config get mon public_network)"
Essa etapa não é obrigatória. No entanto, se você não usar essa configuração, os Ceph OSDs e outros daemons (exceto o Ceph Monitor) escutarão em todos os endereços.
Para que seus OSDs se comuniquem entre si usando uma rede completamente separada, execute o seguinte comando:
root@master #
ceph config set global cluster_network "cluster_network_in_cidr_notation"
A execução desse comando garante que os OSDs criados em sua implantação usem a rede de cluster pretendida desde o início.
Se o cluster estiver definido para ter nós densos (mais de 62 OSDs por host), atribua portas suficientes aos Ceph OSDs. Atualmente, a faixa padrão (6800-7300) não permite mais do que 62 OSDs por host. Para um cluster com nós densos, ajuste a configuração ms_bind_port_max
para um valor adequado. Cada OSD consumirá oito portas adicionais. Por exemplo, um host definido para executar 96 OSDs requer 768 portas. ms_bind_port_max
deve ser definido, no mínimo, como 7568 executando o seguinte comando:
root@master #
ceph config set osd.* ms_bind_port_max 7568
Você precisará ajustar as configurações de firewall de acordo para que isso funcione. Consulte o Section 13.7, “Firewall settings for Ceph” para obter mais informações.
7.5 Desabilitar clientes não seguros #
Desde o Pacific v15.2.11, um novo aviso de saúde foi implementado para informar a você que clientes não seguros têm permissão para ingressar no cluster. Por padrão, esse aviso está ativado. O Ceph Dashboard mostrará o cluster no status HEALTH_WARN
, e a verificação do status do cluster na linha de comando informará o seguinte:
cephuser@adm >
ceph status
cluster:
id: 3fe8b35a-689f-4970-819d-0e6b11f6707c
health: HEALTH_WARN
mons are allowing insecure global_id reclaim
[...]
Esse aviso significa que os Ceph Monitors ainda permitem que clientes antigos e sem patch se conectem ao cluster. Isso garante que os clientes existentes ainda consigam se conectar durante o upgrade do cluster, mas avisa você de que há um problema que precisa ser resolvido. Quando o upgrade do cluster e de todos os clientes for feito para a versão mais recente do Ceph, execute o seguinte comando para não permitir os clientes sem patch:
cephuser@adm >
ceph config set mon auth_allow_insecure_global_id_reclaim false