Esta seção descreve como exportar o CephFS por meio de um compartilhamento Samba/CIFS. É possível usar compartilhamentos Samba com clientes Windows*.
A partir do SUSE Enterprise Storage 5, a exportação de compartilhamentos Samba é considerada uma versão Technology Preview e não é suportada.
A exportação do CephFS é uma versão Technology Preview e não é suportada. Para exportar um compartilhamento Samba, você precisa instalar manualmente o Samba em um nó de cluster e configurá-lo. É possível fornecer a funcionalidade de failover com o CTDB e a SUSE Linux Enterprise High Availability Extension.
Verifique se já existe um CephFS em execução no cluster. Para obter os detalhes, consulte o Capítulo 11, Instalação do CephFS.
Crie um chaveiro específico do Gateway do Samba no master Salt e copie-o para o nó do gateway do Samba:
root@master #
ceph
auth get-or-create client.samba.gw mon 'allow r' \ osd 'allow *' mds 'allow *' -o ceph.client.samba.gw.keyringroot@master #
scp
ceph.client.samba.gw.keyring SAMBA_NODE:/etc/ceph/
Substitua SAMBA_NODE pelo nome do nó do gateway do Samba.
As etapas a seguir são executadas no nó do gateway do Samba. Instale o daemon do Samba no nó do gateway do Samba:
root #
zypper
in samba samba-ceph
Edite o /etc/samba/smb.conf
e adicione a seguinte seção:
[SHARE_NAME] path = / vfs objects = ceph ceph:config_file = /etc/ceph/ceph.conf ceph: user_id = samba.gw read only = no
Inicie e habilite o daemon do Samba:
root #
systemctl
start smb.serviceroot #
systemctl
enable smb.serviceroot #
systemctl
start nmb.serviceroot #
systemctl
enable nmb.service
Esta seção apresenta um exemplo de como definir uma configuração de dois nós de alta disponibilidade dos servidores Samba. A configuração requer a SUSE Linux Enterprise High Availability Extension. Os dois nós são denominados earth
(192.168.1.1
) e mars
(192.168.1.2
).
Para obter detalhes sobre a SUSE Linux Enterprise High Availability Extension, consulte https://www.suse.com/documentation/sle-ha-12/.
Além disso, dois endereços IP virtuais flutuantes permitem aos clientes se conectarem ao serviço independentemente do nó físico no qual está sendo executado. 192.168.1.10
é usado para administração do cluster com Hawk2, e 192.168.2.1
é usado exclusivamente para exportações CIFS. Isso facilita aplicar as restrições de segurança mais tarde.
O procedimento a seguir descreve a instalação de exemplo. Mais detalhes podem ser encontrados em https://www.suse.com/documentation/sle-ha-12/install-quick/data/install-quick.html.
Crie um chaveiro específico do Gateway do Samba no master Salt e copie-o para os dois nós:
root@master #
ceph
auth get-or-create client.samba.gw mon 'allow r' \ osd 'allow *' mds 'allow *' -o ceph.client.samba.gw.keyringroot@master #
scp
ceph.client.samba.gw.keyringearth
:/etc/ceph/root@master #
scp
ceph.client.samba.gw.keyringmars
:/etc/ceph/
Prepare o earth
e o mars
para hospedar o serviço do Samba:
Verifique se os seguintes pacotes estão instalados antes de continuar: ctdb, tdb-tools e samba (necessário para os recursos smb e nmb).
root #
zypper
in ctdb tdb-tools samba samba-ceph
Verifique se os serviços ctdb
, smb
e nmb
estão parados e desabilitados:
root #
systemctl
disable ctdbroot #
systemctl
disable smbroot #
systemctl
disable nmbroot #
systemctl
stop smbroot #
systemctl
stop nmb
Abra a porta 4379
do seu firewall em todos os nós. Isso é necessário para o CTDB se comunicar com outros nós do cluster.
Crie um diretório para o bloqueio do CTDB no sistema de arquivos compartilhado:
root #
mkdir
-p /srv/samba/
No earth
, crie os arquivos de configuração para o Samba. Mais tarde, eles serão sincronizados automaticamente com o mars
.
Em /etc/ctdb/nodes
, insira todos os nós que contêm todos os endereços IP privados de cada nó no cluster:
192.168.1.1 192.168.1.2
Configure o Samba. Adicione as seguintes linhas à seção [global]
do /etc/samba/smb.conf
. Use o nome de host de sua escolha em vez de "CTDB-SERVER" (todos os nós no cluster aparecerão como um nó grande com esse nome, efetivamente):
[global] netbios name = CTDB-SERVER clustering = yes idmap config * : backend = tdb2 passdb backend = tdbsam ctdbd socket = /var/lib/ctdb/ctdb.socket
Para obter detalhes sobre o csync2
, consulte https://www.suse.com/documentation/sle-ha-12/singlehtml/book_sleha/book_sleha.html#pro.ha.installation.setup.csync2.start.
Instale e inicialize o cluster da SUSE Linux Enterprise High Availability.
Registre a SUSE Linux Enterprise High Availability Extension no earth
e no mars
.
root@earth #
SUSEConnect
-r ACTIVATION_CODE -e E_MAIL
root@mars #
SUSEConnect
-r ACTIVATION_CODE -e E_MAIL
Instale o ha-cluster-bootstrap nos dois nós:
root@earth #
zypper
in ha-cluster-bootstrap
root@mars #
zypper
in ha-cluster-bootstrap
Inicialize o cluster no earth
:
root@earth #
ha-cluster-init
Permita que o mars
ingresse no cluster:
root@mars #
ha-cluster-join
-c earth
Verifique o status do cluster. Você deve ver dois nós adicionados ao cluster:
root@earth #
crm
status 2 nodes configured 1 resource configured Online: [ earth mars ] Full list of resources: admin-ip (ocf::heartbeat:IPaddr2): Started earth
Execute os seguintes comandos no earth
para configurar o recurso CTDB:
root@earth #
crm
configurecrm(live)configure#
primitive
ctdb ocf:heartbeat:CTDB params \ ctdb_manages_winbind="false" \ ctdb_manages_samba="false" \ ctdb_recovery_lock="!/usr/lib64/ctdb/ctdb_mutex_ceph_rados_helper ceph client.samba.gw cephfs_metadata ctdb-mutex" ctdb_socket="/var/lib/ctdb/ctdb.socket" \ op monitor interval="10" timeout="20" \ op start interval="0" timeout="90" \ op stop interval="0" timeout="100"crm(live)configure#
primitive
nmb systemd:nmb \ op start timeout="60" interval="0" \ op stop timeout="60" interval="0" \ op monitor interval="60" timeout="60"crm(live)configure#
primitive
smb systemd:smb \ op start timeout="60" interval="0" \ op stop timeout="60" interval="0" \ op monitor interval="60" timeout="60"crm(live)configure#
group
g-ctdb ctdb nmb smbcrm(live)configure#
clone
cl-ctdb g-ctdb meta interleave="true"crm(live)configure#
commit
O binário /usr/lib64/ctdb/ctdb_mutex_ceph_rados_helper
na opção de configuração ctdb_recovery_lock
tem os parâmetros CLUSTER_NAME CEPHX_USER CEPH_POOL CEPHX_USER, nessa ordem.
Adicione um endereço IP em cluster:
crm(live)configure#
primitive
ip ocf:heartbeat:IPaddr2 params ip=192.168.2.1 \ unique_clone_address="true" \ op monitor interval="60" \ meta resource-stickiness="0"crm(live)configure#
clone
cl-ip ip \ meta interleave="true" clone-node-max="2" globally-unique="true"crm(live)configure#
colocation
col-with-ctdb 0: cl-ip cl-ctdbcrm(live)configure#
order
o-with-ctdb 0: cl-ip cl-ctdbcrm(live)configure#
commit
Se unique_clone_address
for definido como true
, o agente de recurso IPaddr2 adicionará um ID de clone ao endereço especificado, resultando em três endereços IP diferentes. Geralmente, eles não são necessários, mas ajudam no equilíbrio de carga. Para obter mais informações sobre este tópico, consulte https://www.suse.com/documentation/sle-ha-12/book_sleha/data/cha_ha_lb.html.
Verifique o resultado:
root@earth #
crm
status Clone Set: base-clone [dlm] Started: [ factory-1 ] Stopped: [ factory-0 ] Clone Set: cl-ctdb [g-ctdb] Started: [ factory-1 ] Started: [ factory-0 ] Clone Set: cl-ip [ip] (unique) ip:0 (ocf:heartbeat:IPaddr2): Started factory-0 ip:1 (ocf:heartbeat:IPaddr2): Started factory-1
Faça o teste de uma máquina cliente. Em um cliente Linux, execute o seguinte comando para ver se você pode copiar arquivos do sistema e para o sistema:
root #
smbclient
//192.168.2.1/myshare