CRIANDO UM CLUSTER DO SQL SERVER 2014 + WINDOWS SERVER 2008 R2 EM HYPER-V

Pessoal, tranquilo? Espero que sim! 

Bom, antes de qualquer coisa quero dizer que estou muito contente de finalmente estar postando algo mais detalhado sobre o SQL Server 2014. Neste post irei mostrar como se cria um ambiente completo de alta disponibilidade em Hyper-V utilizando um cluster Microsoft de 2 nós com Domain Controller e Storage, rodando o SQL Server 2014 CTP em cima do Windows Server 2008 R2. Apesar de já ter revisado o post peço que me informem sobre qualquer coisa que não estiver claro ou estiver incorreto. Muito obrigado!

PRÉ REQUISITOS:

-ROLE HYPER-V HABILITADA NA MÁQUINA QUE IRA MANTER O AMBIENTE VIRTUAL.
-ISO DO WINDOWS SERVER 2008 R2.
-ISO DO SQL SERVER 2014 CTP.
-MÍNIMO DE 512 RAM POR MÁQUINA VIRTUAL.

Obs.: No post estou supondo que você já sabe instalar o Windows Server 2008 R2, portanto me atentei mais ao que deve ser configurado e habilitado nas máquinas virtuais depois que o sistema operacional já estiver instalado.


MÁQUINA VIRTUAL (DOMAIN CONTROLLER e SIMULADOR STORAGE)

Sistema Operacional: Windows Server 2008 R2 SP1

Roles: Habilitar Active Directory Domain Services
Features: Habilitar .NET 3.5.1

Nas configurações do adaptador de rede configure o IPv4 conforme abaixo:

IP Address: 10.0.0.2
Subnet Mask: 255.255.255.0
Default Gateway: 10.0.0.2

Preferred DNS Server: 10.0.0.2
Alternate DNS Server: Deixe em branco.

MÁQUINA VIRTUAL (NÓ 1)

Sistema Operacional: Windows Server 2008 R2 SP1

Roles: Habilitar Hyper-V, faça isso subindo um prompt de comando com privilégios de administrador e execute os comandos abaixo na sequência:

a) DISM /Online /Enable-Feature /FeatureName: Microsoft-Hyper-V

Obs.: Não reinicie ainda o servidor.

b) DISM /Online /Enable-Feature /FeatureName: Microsoft-Hyper-V-Management-Clients

Obs.: Agora pode reiniciar o servidor.

Features: Habilitar .NET 3.5.1

Nas configurações do adaptador de rede configure o IPv4 conforme abaixo:

IP Address: 10.0.0.3
Subnet Mask: 255.255.255.0
Default Gateway: 10.0.0.2

Preferred DNS Server: 10.0.0.2
Alternate DNS Server: Deixe em branco.

MÁQUINA VIRTUAL (NÓ 2)

Sistema Operacional: Windows Server 2008 R2 SP1

Roles: Habilitar Hyper-V, faça isso subindo um prompt de comando com privilégios de administrador e execute os comandos abaixo na sequência:

a) DISM /Online /Enable-Feature /FeatureName: Microsoft-Hyper-V

Obs.: Não reinicie ainda o servidor.

b) DISM /Online /Enable-Feature /FeatureName: Microsoft-Hyper-V-Management-Clients

Obs.: Agora pode reiniciar o servidor.

Features: Habilitar .NET 3.5.1

Nas configurações do adaptador de rede configure o IPv4 conforme abaixo:

IP Address: 10.0.0.4
Subnet Mask: 255.255.255.0
Default Gateway: 10.0.0.2

Preferred DNS Server: 10.0.0.2
Alternate DNS Server: Deixe em branco.

CONFIGURANDO O STORAGE:

Iremos precisar de uma ferramenta chamada iSCSI Software Target 3.3, você pode baixar a mesma através do link abaixo:


Gere uma ISO dela e carregue ela na VM, quando descompactar os arquivos, você irá observar que um deles possui mais de 5 MB, este é o arquivo que você deverá instalar no servidor.

Uma vez instalada, navegue até as ferramentas administrativas, vamos criar agora nossos discos a serem usados pelo cluster.

Clique com o direito em iSCSI Targets, Next, escolha um nome da sua preferência, Next, nesta etapa temos que definir quais servidores poderão acessar e utilizar os discos em nosso storage, clique em "Advanced...", "Add...", No identifier Type troque para "Ip Address", e em valor adicione o IP dos nossos nós, no caso 10.0.0.3 e 10.0.0.4, Next, Finish.

Agora vamos criar nossos discos virtuais, vamos criar dois discos, um para ser o Witness/Quorum do cluster, e um para armazenar os arquivos de dados e log das bases do SQL Server que será posteriormente instalado:

Tamanho disco Quorum: 1 GB
Tamanho disco Dados: 10 GB

Para os dois discos acima faça o procedimento a seguir: clique com o direito no Target que você acabou de criar, e clique em "Create Virtual Disk For iSCSI Target", Next, de o caminho do novo disco virtual, nome dele e extensão deixe como "VHD", algo como "c:\meus discos\dados.vhd", se o caminho não existir não se preocupe que ele irá criar, Next, agora defina seu tamanho em MB (Conforme citado acima), Next, a descrição é opcional, Next, Finish.

CONFIGURANDO O DOMAIN CONTROLLER (MESMA VM DO STORAGE):

Vamos agora criar nosso domínio, vá no menu iniciar, executar e digite DCPROMO.EXE, aguarde o wizard surgir, Next, Next, selecione "Create a new domain in a new forest", Next, agora você devera inserir o nome do seu novo domínio, no meu caso utilizei “SQL2014.net”, Next, vamos agora escolher o nível funcional da Floresta, escolha "Windows Server 2008 R2", Next, confirme que o "DNS Server" está selecionado, Next, um “warning” ira aparecer com relação ao DNS, apenas clique em "Yes", na próxima etapa de diretórios apenas deixe como está e clique em Next, defina agora a senha da conta do administrador do Domínio, clique em Next, clique em Next mais uma vez, aguarde a instalação e configuração do novo domínio, perceba que você tem como marcar a opção para que um boot seja feito automaticamente ao término da mesma, fica a seu critério, contudo o boot deverá ser feito. Após o boot seu domínio já estará configurado e pronto para ser utilizado!

COLOCANDO OS NÓS NO DOMINIO.

Primeiramente vamos colocar nossos servidores em domínio, pois do contrário não conseguiremos trabalhar com eles em modo cluster. Execute nos dois servidores. Clique com o direito em Computer, “Properties”, "Change Settings",  "Change", mude o nome do computador para algo mais simples, no meu caso utilizei a nomenclatura Win2k8-1 e Win2k8-2 e em Domain especifique o nome do domínio que você criou, no meu caso, “SQL2014”, clique em “OK”, se a comunicação das máquinas estiver ok (Nó x DC), será solicitado um usuário e senha que tenha privilégio administrativo no domínio para configurar a máquina, insira o usuário e senha, confirme e aguarde, deverá aparecer algo como "Bem Vindo ao domínio XXX", reinicie a máquina conforme solicitado e quando ela subir faça o login já usando uma conta do domínio.

ASSOCIANDO DISCOS DO STORAGE AOS NÓS DO CLUSTER.

Teremos que associar os discos do storage em nossos dois nós, para isso, navegue até as Ferramentas Administrativas, localize o "iSCSI Initiator", em "Target" digite o IP do Storage e clique em "Quick Connect", se der tudo certo, uma nova janela irá abrir com uma mensagem dizendo que a conexão foi bem sucedida, clique em "Done", vá na aba "Volumes and Devices" e clique em "Auto Configure", se tudo der certo seus discos do storage serão listados na "Volume List", clique em "Apply" e feche o "iSCSI Initiator".

INICIANDO DISCOS - EXECUTE APENAS EM UM DOS NÓS.

Escolha um dos nós para este procedimento, ele não pode ser feito nos dois nós, clique com o direito em Computador, "Manage", expanda "Storage" e clique em "Disk Management", perceba que os discos criados no storage estarão lá, coloque eles online, inicialize os mesmos como GPT, crie o novo volume com os devidos tamanhos sem associar uma letra a eles.

VALIDANDO A CONFIGURAÇÃO E CRIANDO O CLUSTER.

Agora vamos configurar os nós para que eles suportem trabalhar em cluster, execute nos dois nós. Abra o Server Manager, vá até Features e habilite a feature chamada "Failover Clustering".

VALIDANDO A CONFIGURAÇÃO DO CLUSTER.

Instalada a feature do passo anterior em ambos nós, vamos validar nosso cluster. Em um dos nós, vá ao menu iniciar, executar, e digite cluadmin.msc ou navegue até as ferramentas administrativas e abra o "Failover Cluster Manager", clique com o direito em "Failover Cluster Manager", clique em "Validade a Configuration...", Next, digite o nome do nó 1 no campo "Enter Server Name:" ou então faça uma busca pelo nome do mesmo no domínio clicando em "Browse...", adicionado o nome do nó 1, faça o mesmo para o nó 2, depois de adicionados os dois nós, clique em Next, selecione “Run all tests (reccomended)”, Next, o “wizard” irá verificar se os discos estão offline para os testes serem executados, se algum disco estiver online você tem a opção de deixar eles desta forma e os testes nos mesmos não serão executados ou você pode escolher a segunda opção, para que os discos sejam colocados em offline e os testes sejam então executados nos mesmos, escolhida uma delas clique em Next, a próxima tela é apenas um resumo das escolhas anteriores, clique em Next, aguarde a validação, ao término da mesma clique em Finish.

CRIANDO O CLUSTER.

Agora vamos de fato criar nosso cluster. Em um dos nós, vá ao menu iniciar, executar, e digite cluadmin.msc ou navegue até as ferramentas administrativas e abra o "Failover Cluster Manager", clique com o direito em "Failover Cluster Manager", clique em "Create Cluster...", Next, digite o nome do nó 1 no campo "Enter Server Name:" ou então faça uma busca pelo nome do mesmo no domínio clicando em "Browse...", adicionado o nome do nó 1, faça o mesmo para o nó 2, depois de adicionados os dois nós, clique em Next, defina um IP para o cluster, utilizei o IP 10.0.0.5, Next, Next, Finish. Aguarde o término da configuração do cluster. Automaticamente o cluster ira varrer o storage em busca do disco com menor capacidade para que ele seja o Quorum, caso sejam discos de mesmo tamanho ele irá utilizar a ordem de apresentação do discos como critério.

Em Storage, verifique que os discos estarão lá, para o disco que não é o Quorum, configure uma letra para ele, feito isso perceba que ele irá aparecer em Computador.

SETUP DO SQL SERVER 2014 CTP.

1. Insira a mídia do SQL Server 2014 CTP no nó win2k8-1.
2. Rode o “setup.exe”.
3. Na esquerda, clique em “Installation” > “New SQL Server failover cluster installation”.
4. Na tela Setup “Support Rules”, clique em “OK” após as verificações.
5. Na tela “Product Updates” desmarque o “Include SQL Server product updates” e clique em “Next”.
6. Na tela “Install Setup Files”, aguarde o término da instalação.
7. Na tela “Setup Support Rules”, clique em “Next” após as verificações.
8. Na tela “Product Key”, em “Specify a free edition:” selecione “Evaluation” e clique em “Next”.
9. Na tela “License Terms”, selecione “I accept the license terms”, desmarque a segunda opção e clique em “Next”.
10. Na tela “Setup Role”, selecione “SQL Server Feature Installation” e clique em “Next”.
11. Na tela de “Feature Selection”, escolha as features que desejár, no meu caso escolhi “Database Engine Services”, “Client Tools Connectivity”, “Documentation Components” e “Management Tools – Basic”. Para os diretórios mantive o padrão “C:\Program Files\Microsoft SQL Server\” e “C:\Program Files (x86)\microsoft SQL Server”, clique em “Next”.
12. Na tela “Feature Rules”, aguarde as verificações e clique em “Next”.
13. Na tela “Instance Configuration”, em “SQL Server Network Name:” defina o nome do seu SQL Server na rede, no meu caso irei utilizar “CLUSQL14”, selecione “Default instance” para a instalação de uma instância “default” ou “Named Instance:” para a instalação de uma instância nomeada, no meu caso irei utilizar nomeada e minha instância irá se chamar “MSSQL2014”, em “Instance root directory:”, deixei o diretório padrão “C:\Program Files\Microsof SQL Server”, clique em “Next”.
14. Na tela “Disk Space Requirements” aguarde as verificações e clique em “Next”.
15. Na tela “Cluster Resource Group”, em “SQL Server cluster resource group name:” coloque qual será o nome do grupo do SQL no cluster, no meu caso irei colocar “SQL14GROUP”, clique em “Next”.
16. Na tela “Cluster Disk Selection”, selecione os discos a serem utilizados pelo cluster, no caso deste guia, teremos apenas um disco para ser selecionado, clique em “Next”.
17. Na tela “Cluster Network Configuration”, marque “IPv4” e em “Address” digite qual será o IP do SQL Server, no caso irei utilizar “10.0.0.6”, clique em “Next”.
18. Na tela “Server Configuration”, defina as contas a serem utilizadas para os serviços, irei utilizar uma conta que criei como “domain admin” em meu domínio, chamada SQLUSER, coloque a senha da conta e mude para a aba “Collation”, defina qual será o “collation” da sua instância, irei utilizar “SQL_Latin1_General_CP1_CI_AI”, clique em “Next”.
19. Na tela “Database Engine Configuration”, defina a forma de autenticação do SQL Server, no meu caso irei selecionar “Mixed Mode” e definir uma senha para o usuário S.A., também irei clicar em “Add Current User” para que o usuário no qual estou logado no Windows seja também um administrador da instância, feito estas customizações, mude para a aba “Data Directories”, em “Data root directory:”, deixei apenas meu disco do cluster “G:\”, em “User database directory:” deixei como “G:\SQLDATA”, em “User databaselog directory:” deixe como “G:\SQLTLOG”, em “Temp DB directory:” deixei como “G:\SQLDATA”, em “Temp DB log directory:” deixei como “G:\SQLTLOG”, em “Backup directory:”, deixei como “G:\BACKUP”, clique em “Next”.
20. Na tela “Error Reporting”, deixei desmarcado a opção e cliquei em “Next”.
21. Na tela “Cluster Installation Rules”, aguarde as verificações e clique em “Next”.
22. Na tela “Ready to Install”, verifique se tudo está de acordo com o que você configurou e clique em “Install”.
23. Ao término da instalação clique em “Close”.

Vamos agora adicionar o outro nó do cluster em nossa instalação do SQL Server 2014 CTP...

1. Insira a mídia do SQL Server 2014 CTP no nó win2k8-2.
2. Rode o “setup.exe”.
3. Na esquerda, clique em “Installation” > “Add node to a SQL Server failover cluster”.
4. Na tela “Setup Support Rules”, aguarde as verificações e clique em “OK”.
5. Na tela “Product Updates”, clique em “Next”.
6. Na tela “Install Setup Files”, aguarde o término da instalação.
7. Na tela “Setup Support Rules”, aguarde as verificações e clique em “Next”.
8. Na tela “Product Key”, em “Specify a free edition:” selecione “Evaluation” e clique em “Next”.
9. Na tela “License Terms”, selecione “I accept the license terms”, desmarque a segunda opção e clique em “Next”.
10. Na tela “Cluster Node Configuration”, perceba que ele já ira detectar nossa instância instalada no nó 1 automaticamente, basta clicar em “Next”.
11. Na tela “Cluster Network Configuration”, perceba que ele já ira detectar o ip do SQL Server que instalamos automaticamente, basta clicar em “Next”.
12. Na tela “Service Accounts”, adicione a senha para as contas de serviço que você definiu durante a instalação da instância no nó 1, feito isso clique em “Next”.
13. Na tela “Error Reporting”, deixei desmarcado a opção e cliquei em “Next”.
14. Na tela “Add Node Rules”, aguarde as verificações e clique em “Next”.
15. Na tela “Ready to Add Node”, verifique se tudo está de acordo com o que você configurou e clique em “Install”.
16. Ao término da instalação clique em “Close”.

Pessoal é isso! Espero que o post tenha sido útil a vocês e até a próxima!

11 comentários:

  1. André, boa noite.

    Parabéns, fantástico, um dos melhores posts sobre cluster que eu já tive a oportunidade de ler.

    ResponderExcluir
    Respostas
    1. Vlw pelo feedback Junior Galvão! Você é um dos grandes nomes na comunidade e fico muito feliz com seu elogio! Um abraço!

      Excluir
  2. André,

    Cara este post me deixou louco, estou acabando de montar o mesmo ambiente só que utilizando VMs rodando no Azure.

    Show de bola.

    ResponderExcluir
    Respostas
    1. Boa! Depois nos conta o resultado final!!!

      Um abraço!

      Excluir
  3. Excelente André. Aqui na empresa estamos justamente debatendo como realizar esse procedimento. Teu tutorial foi uma luz. Muito bom!! Obrigado!!

    ResponderExcluir
    Respostas
    1. Fabiano muito obrigado! Que bom que o post foi útil a você! Boa sorte!

      Excluir
  4. Perfeito as suas explicações no post André. Lhe digo que me esclareceu algumas dúvidas que tinha sobre cluster, até porque tenho tido pouco contato com a tecnologia. Só um detalhe, é possível utilizar no lugar do Hyper-V o VirtualBox pra montar a mesma estrutura?

    Abraços e Parabéns!

    ResponderExcluir
    Respostas
    1. Jeferson, boa noite! Obrigado pelo elogio ao material, fico feliz que tenha sido útil para você. Quanto a utilização de outro soft. de virtualização não vejo grandes problemas, acredito que só a questão da rede que deva ser um pouco diferente. Abraço!

      Excluir
  5. André, essa solução é somente para alta disponibilidade ou serve como balanceamento também?
    Grata!!!

    ResponderExcluir
    Respostas
    1. Olá Wanessa!

      O foco aqui foi mostrar um ambiente de alta disponibilidade utilizando hyper-v + SQL em um windows cluster, como só temos uma instância, ela rodará apenas em um unico nó por vez, se fossem duas instâncias o ideal seria uma rodando em cada nó com seus recursos devidamente configurados para não excederem a capacidade do hardware, isso seria sim uma espécie de balanceamento.

      Um abraço!

      Excluir
  6. Bom dia André,
    Parabéns pelo post, excelente tutorial!
    Estava pensando em utilizar o tema como TCC da pós, gostaria de comparar algumas características desse ambiente "fisico" com um ambiente em nuvem.
    Sabe se tem algum material disponivel, ou qual seria o melhor ambiente (Azure, Eucalyptus) para eu estudar mais a respeito e desenvolver tal comparação.

    Abraço.

    ResponderExcluir