Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Aplica-se a:SQL Server em Linux
Este artigo explica como configurar o armazenamento iSCSI para uma instância de cluster de failover (FCI) no Linux.
Configurar iSCSI
iSCSI usa a rede para apresentar discos de um servidor, conhecido como alvo, a outros servidores. Os servidores que se conectam ao destino iSCSI exigem que um iniciador iSCSI esteja configurado. Os discos no destino recebem permissões explícitas para que apenas os iniciadores que devem ser capazes de acessá-los possam fazê-lo. O alvo em si deve ser altamente disponível e confiável.
Informações importantes sobre o alvo iSCSI
Embora esta seção não aborde como configurar um destino iSCSI, pois ele é específico para o tipo de origem que você usa, verifique se a segurança dos discos que serão usados pelos nós do cluster está configurada.
O destino nunca deve ser configurado em nenhum dos nós FCI se estiver usando um destino iSCSI baseado em Linux. Para desempenho e disponibilidade, as redes iSCSI devem ser separadas das redes usadas pelo tráfego de rede regular nos servidores de origem e cliente. As redes usadas para iSCSI devem ser rápidas. Lembre-se de que a rede consome alguma largura de banda do processador, portanto, planeje de acordo se estiver usando um servidor regular.
A coisa mais importante a garantir que seja concluída no destino é que os discos criados recebam as permissões adequadas para que apenas os servidores que participam da FCI tenham acesso a eles. Um exemplo é mostrado aqui a partir do destino Microsoft iSCSI onde linuxnodes1 é o nome criado e, neste caso, os endereços IP dos nós são atribuídos para que NewFCIDisk1.vhdx apareça para eles.
Instruções
Esta seção aborda como configurar um iniciador iSCSI nos servidores que servem como nós para a FCI. As instruções devem funcionar como está no Red Hat Enterprise Linux (RHEL) e no Ubuntu.
Para obter mais informações sobre o iniciador iSCSI para as distribuições suportadas, consulte os seguintes links:
Escolha um dos servidores que participarão da configuração da FCI. Não importa qual. O iSCSI deve estar em uma rede dedicada, portanto, configure o iSCSI para reconhecer e usar essa rede. Execute
sudo iscsiadm -m iface -I <iSCSIIfaceName> -o newonde<iSCSIIfaceName>é o nome exclusivo ou amigável para a rede. O exemplo a seguir usaiSCSINIC:sudo iscsiadm -m iface -I iSCSINIC -o newAqui está a saída esperada.
New interface iSCSINIC addedEditar
/var/lib/iscsi/ifaces/iSCSIIfaceName. Certifique-se de que tem os seguintes valores completamente preenchidos:-
iface.net_ifacenameé o nome da placa de rede como visto no sistema operacional. -
iface.hwaddressé o endereço MAC do nome exclusivo que será criado para a interface a seguir. iface.ipaddressiface.subnet_Mask
Veja o exemplo a seguir:
-
Localize o destino iSCSI.
sudo iscsiadm -m discovery -t sendtargets -I <iSCSINetName> -p <TargetIPAddress>:<TargetPort><iSCSINetName>é o nome exclusivo/amigável da rede,<TargetIPAddress>é o endereço IP do destino iSCSI e<TargetPort>é a porta do destino iSCSI.Aqui está a saída esperada.
10.181.182.1:3260,1 iqn.1991-05.com.contoso:dcl-linuxnodes1-target 10.201.202.1:3260,1 iqn.1991-05.com.contoso:dc1-linuxnodes1-target [2002:b4b5:b601::b4b5:b601]:3260,1 iqn.1991-05.com.contoso:dcl-linuxnodes1-target [2002:8c9:ca01::c8c9:ca01]:3260,1 iqn.1991-05.com.contoso:dcl-linuxnodes1-targetInicie sessão no destino.
sudo iscsiadm -m node -I <iSCSIIfaceName> -p TargetIPAddress -l<iSCSIIfaceName>é o nome exclusivo/amigável para a rede e<TargetIPAddress>é o endereço IP do destino iSCSI.Aqui está a saída esperada.
Logging in to [iface: iSCSINIC, target: ian.1991-05.com.contoso:dcl-linuxnodesl-tar get, portal: 10.181.182.1,3260] (multiple) Login to [iface: iSCSINIC, target: ian.1991-05.com.contoso:dcl-linuxnodesl-tar get, portal: 10.181.182.1,3260] successful.Verifique se há uma conexão com o destino iSCSI.
sudo iscsiadm -m sessionA saída é semelhante ao exemplo a seguir:
tcp: [1] 10.105.16.7:3260,1 iqn.1991-05.com.contoso:dcl-linuxnodes1-target (non-flash)Verifique os discos iSCSI ligados.
sudo grep "Attached SCSI" /var/log/messages
Crie um volume físico no disco iSCSI.
sudo pvcreate /dev/<devicename><devicename>é o nome do dispositivo da etapa anterior.Crie um grupo de volumes no disco iSCSI. Os discos atribuídos a um único grupo de volumes são vistos como um pool ou coleção.
sudo vgcreate <VolumeGroupName> /dev/devicename<VolumeGroupName>é o nome do grupo de volumes e<devicename>é o nome do dispositivo da Etapa 6.Crie e verifique o volume lógico do disco.
sudo lvcreate -Lsize -n <LogicalVolumeName> <VolumeGroupName><size>é o tamanho do volume a ser criado e pode ser especificado com G (gigabytes), T (terabytes), etc.,<LogicalVolumeName>é o nome do volume lógico e<VolumeGroupName>é o nome do grupo de volumes da etapa anterior.Aqui está a saída esperada.
Logical volume "FCIDataLV1" created.O exemplo a seguir cria um volume de 25 GB.
Execute
sudo lvspara ver o LVM que foi criado.Formate o volume lógico com um sistema de arquivos suportado. Para ext4, use o seguinte exemplo:
sudo mkfs.ext4 /dev/<VolumeGroupName>/<LogicalVolumeName><VolumeGroupName>é o nome do grupo de volumes da etapa anterior.<LogicalVolumeName>é o nome do volume lógico da etapa anterior.Para bancos de dados do sistema ou qualquer coisa armazenada no local de dados padrão, siga estas etapas. Caso contrário, pule para a Etapa 13.
Verifique se o SQL Server está parado no servidor em que você está trabalhando.
sudo systemctl stop mssql-server sudo systemctl status mssql-serverMude totalmente para ser o superusuário. Você não receberá nenhum reconhecimento se for bem-sucedido.
sudo -iMude para ser o utilizador n.º
mssql. Você não receberá nenhum reconhecimento se for bem-sucedido.su mssqlCrie um diretório temporário para armazenar os dados e os arquivos de log do SQL Server. Você não receberá nenhum reconhecimento se for bem-sucedido.
mkdir <TempDir><TempDir>é o nome da pasta. O exemplo a seguir cria uma pasta chamada /var/opt/mssql/TempDir.mkdir /var/opt/mssql/TempDirCopie os dados e os arquivos de log do SQL Server para o diretório temporário. Você não receberá nenhum reconhecimento se for bem-sucedido.
cp /var/opt/mssql/data/* <TempDir><TempDir>é o nome da pasta da etapa anterior.Verifique se os arquivos estão no diretório.
ls <TempDir><TempDir>é o nome da pasta das etapas anteriores.Exclua os arquivos do diretório de dados existente do SQL Server. Você não receberá nenhum reconhecimento se for bem-sucedido.
rm - f /var/opt/mssql/data/*Verifique se os arquivos foram excluídos. A imagem a seguir mostra um exemplo de toda a sequência de c a h.
ls /var/opt/mssql/dataDigite
exitpara voltar para o usuárioroot.Monte o volume lógico iSCSI na pasta de dados do SQL Server. Você não receberá nenhum reconhecimento se for bem-sucedido.
mount /dev/<VolumeGroupName>/<LogicalVolumeName> /var/opt/mssql/data<VolumeGroupName>é o nome do grupo de volumes e<LogicalVolumeName>é o nome do volume lógico que foi criado. A sintaxe de exemplo a seguir corresponde ao grupo de volumes e ao volume lógico do comando anterior.mount /dev/FCIDataVG1/FCIDataLV1 /var/opt/mssql/dataAltere o proprietário da montagem para
mssql. Você não receberá nenhum reconhecimento se for bem-sucedido.chown mssql /var/opt/mssql/dataAltere a propriedade do grupo do ponto de montagem para
mssql. Você não receberá nenhum reconhecimento se for bem-sucedido.chgrp mssql /var/opt/mssql/dataMude para o utilizador
mssql. Você não receberá nenhum reconhecimento se for bem-sucedido.su mssqlCopie os arquivos do diretório temporário
/var/opt/mssql/data. Você não receberá nenhum reconhecimento se for bem-sucedido.cp /var/opt/mssql/TempDir/* /var/opt/mssql/dataVerifique se os arquivos estão lá.
ls /var/opt/mssql/dataDigite
exitpara não sermssql.Digite
exitpara não serroot.Inicie o SQL Server. Se tudo foi copiado corretamente e a segurança aplicada corretamente, o SQL Server deve mostrar como iniciado.
sudo systemctl start mssql-server sudo systemctl status mssql-serverDesligue o SQL Server e confirme se ele foi encerrado.
sudo systemctl stop mssql-server sudo systemctl status mssql-server
Para coisas diferentes de bancos de dados do sistema, como bancos de dados de usuários ou backups, siga estas etapas. Se estiver usando apenas o local padrão, pule para a Etapa 14.
Torne-se o superusuário. Você não receberá nenhum reconhecimento se for bem-sucedido.
sudo -iCrie uma pasta a ser usada pelo SQL Server.
mkdir <FolderName><FolderName>é o nome da pasta. O caminho completo da pasta precisa ser especificado se não estiver no local certo. O exemplo a seguir cria uma pasta chamada /var/opt/mssql/userdata.mkdir /var/opt/mssql/userdataMonte o volume lógico iSCSI na pasta criada na etapa anterior. Você não receberá nenhum reconhecimento se for bem-sucedido.
mount /dev/<VolumeGroupName>/<LogicalVolumeName> <FolderName><VolumeGroupName>é o nome do grupo de volumes,<LogicalVolumeName>é o nome do volume lógico que foi criado e<FolderName>é o nome da pasta. Exemplo de sintaxe é mostrado aqui.mount /dev/FCIDataVG2/FCIDataLV2 /var/opt/mssql/userdataAltere a propriedade da pasta criada para
mssql. Você não receberá nenhum reconhecimento se for bem-sucedido.chown mssql <FolderName><FolderName>é o nome da pasta que foi criada. Um exemplo é mostrado aqui.chown mssql /var/opt/mssql/userdataAltere o grupo da pasta criada para
mssql. Você não receberá nenhum reconhecimento se for bem-sucedido.chown mssql <FolderName><FolderName>é o nome da pasta que foi criada. Um exemplo é mostrado aqui.chown mssql /var/opt/mssql/userdataDigite
exitpara não ser mais o superusuário.Para testar, crie um banco de dados nessa pasta. O script a seguir cria um banco de dados, alterna o contexto para ele, verifica se os arquivos existem no nível do sistema operacional e, em seguida, exclui o local temporário. Você pode usar o SSMS ou sqlcmd para executar esse script.
DROP DATABASE TestDB; GO CREATE DATABASE TestDB ON (NAME = TestDB_Data, FILENAME = '/var/opt/mssql/userdata/TestDB_Data.mdf') LOG ON (NAME = TestDB_Log, FILENAME = '/var/opt/mssql/userdata/TestDB_Log.ldf'); GO USE TestDB; GOExecute o seguinte comando no shell para ver os novos arquivos de banco de dados.
sudo ls /var/opt/mssal/userdataAqui está a saída esperada.
lost+found TestDB_Data.mdf TestDB_Log.ldfExclua o banco de dados para limpar.
DROP DATABASE TestDB; GOsudo ls /var/opt/mssal/userdataAqui está a saída esperada.
lost+foundDesmontar o compartilhamento
sudo umount /dev/<VolumeGroupName>/<LogicalVolumeName> <FolderName><VolumeGroupName>é o nome do grupo de volumes,<LogicalVolumeName>é o nome do volume lógico que foi criado e<FolderName>é o nome da pasta. Exemplo de sintaxe é mostrado aqui.sudo umount /dev/FCIDataVG2/FCIDataLV2 /var/opt/mssql/userdata
Configure o servidor para que apenas o Pacemaker possa ativar o grupo de volumes.
sudo lvmconf --enable-halvm --services -startstopservicesGere uma lista dos grupos de volumes no servidor. Qualquer coisa listada que não seja o disco iSCSI é usada pelo sistema, como para o disco do sistema operacional.
sudo vgsModifique a seção de configuração de ativação do arquivo /etc/lvm/lvm.conf. Configure a seguinte linha:
volume_list = [ <ListOfVGsNotUsedByPacemaker> ]<ListOfVGsNotUsedByPacemaker>é a lista de grupos de volumes do resultado da Etapa 20 que não são usados pela FCI. Coloque cada um entre aspas e separe por uma vírgula. Um exemplo é mostrado aqui.Quando o Linux é iniciado, ele monta o sistema de arquivos. Para garantir que apenas o Pacemaker possa montar o disco iSCSI, reconstrua a imagem do sistema de arquivos raiz.
Execute o seguinte comando, que pode levar alguns minutos para ser concluído. Você não receberá nenhuma mensagem de volta se for bem-sucedido.
sudo dracut -H -f /boot/initramfs-$(uname -r).img $(uname -r)Reinicie o servidor.
Em outro servidor que participará da FCI, execute as etapas 1 a 6. Isso apresenta o destino iSCSI para o SQL Server.
Gere uma lista dos grupos de volumes no servidor. Ele deve mostrar o grupo de volume criado anteriormente.
sudo vgsInicie o SQL Server e verifique se ele pode ser iniciado neste servidor.
sudo systemctl start mssql-server sudo systemctl status mssql-serverDesligue o SQL Server e confirme se ele foi encerrado.
sudo systemctl stop mssql-server sudo systemctl status mssql-serverRepita as etapas 1 a 6 em quaisquer outros servidores que participarão da FCI.
Agora você está pronto para configurar a FCI.