Série de artigos sobre Instalação do Oracle RAC:

Instalação do Oracle RAC 10g Release 2 – Parte 1: Pré-requisitos
Instalação do Oracle RAC 10g Release 2 – Parte 2: Criação da VM
Instalação do Oracle RAC 10g Release 2 – Parte 3: Instalação do Linux
Instalação do Oracle RAC 10g Release 2 – Parte 4: Configuração do Linux
Instalação do Oracle RAC 10g Release 2 – Parte 5: Clonagem da VM
Instalação do Oracle RAC 10g Release 2 – Parte 6: Pré-instalação do RAC
Instalação do Oracle RAC 10g Release 2 – Parte 7: Instalação do Oracle Clusterware
Instalação do Oracle RAC 10g Release 2 – Parte 8: Instalação do Patchset 10.2.0.4 no Clusterware
Instalação do Oracle RAC 10g Release 2 – Parte 9: Instalação do Oracle Database
Instalação do Oracle RAC 10g Release 2 – Parte 10: Instalação do Patchset 10.2.0.4 no Oracle Database
Instalação do Oracle RAC 10g Release 2 – Parte 11: Criação do Listener no Cluster
Instalação do Oracle RAC 10g Release 2 – Parte 12: Criação do ASM no Cluster
Instalação do Oracle RAC 10g Release 2 – Parte 13: Criação do Banco de Dados no Cluster
Instalação do Oracle RAC 10g Release 2 – Parte 14: Criação do Serviço para Load Balance e Failover

Conforme prometido, série de artigos para adição de um nó ao cluster:

Adição/Remoção de Nó – Parte 1: Pré-requisitos de software
Adição/Remoção de Nó – Parte 2: Criação da 3ª Máquina Virtual
Adição/Remoção de Nó – Parte 3: Instalação do Linux

Adição/Remoção de Nó – Parte 4: Configuração do Linux

===================================
Olá pessoal!
Falta pouco para que iniciemos de fato a adição do nó mvrac3 ao cluster!
Neste artigo de hoje, veremos os seguintes itens:

  • Criação de equivalência de usuários para acesso SSH entre os 3 nós;
  • Scan dos discos ASM no servidor mvrac3;
  • Criação de block devices no servidor mvrac3.

Vamos lá!

Com o servidor mvrac3 desligado, precisaremos pegar as referências dos discos attachados aos servidores mvrac1 e mvrac2 que desempenham o papel de disco do storage.

Pelo Windows Explorer, vá em G:\VMware\mvrac1.

Procure por um arquivo com a extensão VMX e abra-o num editor de textos, selecione e copie o seguinte trecho do arquivo:

scsi1.present = "TRUE"
scsi1:0.present = "TRUE"
scsi1:0.fileName = "G:\VMWARE\SharedDisks\sdisk01.vmdk"
scsi1:0.mode = "independent-persistent"
scsi1:1.present = "TRUE"
scsi1:1.fileName = "G:\VMWARE\SharedDisks\sdisk02.vmdk"
scsi1:1.mode = "independent-persistent"
scsi1:2.present = "TRUE"
scsi1:2.fileName = "G:\VMWARE\SharedDisks\sdisk03.vmdk"
scsi1:2.mode = "independent-persistent"
scsi1.virtualDev = "lsilogic"

Cole este trecho no final do arquivo com a extensão VMX no diretório G:\VMWare\mvrac3. Salve o arquivo e mande iniciar a máquina virtual.

Como já citado anteriormente, fizemos a instalação dos produtos em sistemas de arquivos (file systems) locais. Como havíamos criado chaves SSH para o usuário oracle dos nós mvrac1 e mvrac2, deixamos estabelecida a equivalência de usuário entre este usuário nos servidores já citados. A equivalência de usuário também é chamada de relação de confiança. Nesta relação de confiança, a comunicação entre os servidores ocorre sem a solicitação de senha, isto é um pré-requisito para ambientes em Cluster Oracle, pois o Oracle Universal Installer (OUI), dbca, netca, emca, OPatch, dentre outras ferramentas, sempre realizarão cópias de arquivos entre os nós do cluster. A equivalência de usuário poderá ocorrer através de duas maneiras:

  • rsh/rcp;
  • ssh/scp.

A configuração por rsh/rcp é mais simples de ser feita, no entanto, não é a recomendada, já que não é segura. Já no ssh/scp, os dados são enviados pela rede de forma criptografada, o que aumenta a segurança. Inclusive, em muitas empresas, as portas utilizadas em rsh/rcp nem são liberadas no firewall por motivos de segurança. A configuração do ssh/scp é um pouco mais chata, mas é a que veremos aqui por ser a mais segura.

Para realizar a configuração da equivalência de usuários para acesso via SSH, é necessário criar as chaves SSH de acesso ao usuário. Como a equivalência de usuários já existe entre os servidores mvrac1 e mvrac2 para o usuário oracle, os passos serão esses:

  • Criação das chaves do usuário oracle do servidor mvrac3;
  • Criação das chaves do usuário oracle do servidor mvrac2;
  • Append do arquivo de chaves autorizadas no servidor mvrac1, incluindo as chaves SSH do usuário oracle do servidor mvrac3. Inclusão do servidor mvrac3 num arquivo de hosts conhecidos para não mais confirmar o acesso via SSH e isso ser feito automaticamente entre os servidores.

Então, vamos para o primeiro passo, criar as chaves do usuário oracle no servidor mvrac3. Com o usuário oracle a partir do servidor mvrac3:

[oracle@mvrac3 ~]$ cd /home/oracle
[oracle@mvrac3 ~]$ mkdir .ssh
[oracle@mvrac3 ~]$ cd .ssh
[oracle@mvrac1 .ssh]$ ssh-keygen -t dsa

Pressionar [ENTER] até voltar para o shell.

[oracle@mvrac3 .ssh]$ ssh-keygen -t rsa

Pressionar [ENTER] até voltar para o shell.

Vamos verificar o tamanho do arquivo de chaves autorizadas. No servidor mvrac1:

[oracle@mvrac1 .ssh]$ ls -l authorized_keys
-rw-r--r-- 1 oracle oinstall 2072 Aug 16 19:43 authorized_keys

Observem que o arquivo authorized_keys tem 2072 bytes de tamanho, pois, por enquanto, só possui as chaves do servidor mvrac1 e mvrac2. Agora, colocaremos dentro desse mesmo arquivo, o conteúdo das chaves públicas do usuário oracle do servidor mvrac3:

[oracle@mvrac1 .ssh]$ ssh mvrac3 cat `pwd`/*.pub >> authorized_keys
The authenticity of host 'mvrac3 (172.23.10.13)' can't be established. RSA key fingerprint is ee:df:af:11:67:a9:b5:0a:e0:8f:3d:69:2a:3f:ef:6e. Are you sure you want to continue connecting (yes/no)? yes

Observem que eu tive que confirmar com yes e em seguida, terei que colocar a senha do usuário oracle do servidor mvrac3:

oracle@mvrac3's password:

Vamos verificar o tamanho do arquivo de chaves autorizadas após a inclusão das chaves do servidor mvrac3. No servidor mvrac1:

[oracle@mvrac1 .ssh]$ ls -l authorized_keys
-rw-r--r-- 1 oracle oinstall 3108 Sep 18 20:43 authorized_keys

Observem que o arquivo authorized_keys tem 3108 bytes de tamanho, e, desta forma, podemos concluir que o mesmo aumentou de tamanho. Logo, as chaves do servidor mvrac3 também estão no arquivo.

Esta versão de arquivo (com as chaves dos servidores mvrac1, mvrac2 e mvrac3 ainda existe somente no servidor mvrac1. Devemos copiá-lo para o servidor mvrac2 e também no servidor mvrac3, nesse mesmo diretório, /home/oracle/.ssh. Como este arquivo ainda não existe no servidor mvrac3, a senha para este servidor será solicitada:

[oracle@mvrac1 .ssh]$ scp -p authorized_keys mvrac2:`pwd`
authorized_keys         100% 3108     2.0KB/s   00:00
[oracle@mvrac1 .ssh]$ scp -p authorized_keys mvrac3:`pwd`
oracle@mvrac3's password:
authorized_keys         100% 3108     2.0KB/s   00:00

Bom, como no servidor mvrac1 eu estava no diretório /home/oracle/.ssh. E o arquivo authorized_keys tem que ir para o mesmo diretório no servidor mvrac2 e também no servidor mvrac3, observem que eu usei um comando do Linux dentro do comando scp. O comando foi o pwd. E sempre que quisermos usar um comando dentro de outro comando, deveremos colocá-lo entre crases: `pwd`. Dessa forma, ele executará o comando pwd no servidor mvrac1 e com base na saída do comando (/home/oracle/.ssh), jogará o arquivo dentro desse diretório no outro servidor. Se o diretório não existisse, teríamos um erro.

Vamos testar para ver se a equivalência de usuários está funcionando?

[oracle@mvrac1 .ssh]$ ssh mvrac3.viniciusdba.com.br date
The authenticity of host 'mvrac3.viniciusdba.com.br (172.23.10.13)' can't be established.
RSA key fingerprint is ee:df:af:11:67:a9:b5:0a:e0:8f:3d:69:2a:3f:ef:6e.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'mvrac3.viniciusdba.com.br' (RSA) to the list of known hosts.
Wed Sep 18 20:52:38 BRT 2012

Observem que eu tive que digitar yes. Mas não precisei mais digitar a senha. Porque?

Não precisei digitar mais a senha porque a equivalência de usuários funcionou. Mas, o host mvrac3.viniciusdba.com.br ainda não é um host conhecido para o SSH. Dessa forma, no servidor mvrac1, com o usuário oracle, deveremos fazer o seguinte:

ssh mvrac3 date
ssh mvrac3-priv date
ssh mvrac3.viniciusdba.com.br date
ssh mvrac3-priv.viniciusdba.com.br date

Em todos as saídas, deveremos sempre confirmar com yes:

Are you sure you want to continue connecting (yes/no)? yes

Quando executar as linhas acima, para confirmar se está tudo OK, basta refazer o comando incluindo todos os servidores:

ssh mvrac1 date
ssh mvrac1-priv date
ssh mvrac1.viniciusdba.com.br date
ssh mvrac1-priv.viniciusdba.com.br date
ssh mvrac2 date
ssh mvrac2-priv date
ssh mvrac2.viniciusdba.com.br date
ssh mvrac2-priv.viniciusdba.com.br date
ssh mvrac3 date
ssh mvrac3-priv date
ssh mvrac3.viniciusdba.com.br date
ssh mvrac3-priv.viniciusdba.com.br date

Ele não deverá mais pedir confirmação para nenhum host:

[oracle@mvrac1 .ssh]$ ssh mvrac3 date
Wed Sep 18 20:54:00 BRT 2012
[oracle@mvrac1 .ssh]$ ssh mvrac1-priv date
Wed Sep 18 20:54:00 BRT 2012
[oracle@mvrac1 .ssh]$ ssh mvrac1.viniciusdba.com.br date
Wed Feb 18 20:54:00 BRT 2012
[oracle@mvrac1 .ssh]$ ssh mvrac1-priv.viniciusdba.com.br date
Wed Feb 18 20:54:01 BRT 2012
[oracle@mvrac1 .ssh]$ ssh mvrac2 date
Wed Feb 18 20:54:01 BRT 2012
[oracle@mvrac1 .ssh]$ ssh mvrac2-priv date
Wed Feb 18 20:54:02 BRT 2012
[oracle@mvrac1 .ssh]$ ssh mvrac2.viniciusdba.com.br date
Wed Feb 18 20:54:02 BRT 2012
[oracle@mvrac1 .ssh]$ ssh mvrac2-priv.viniciusdba.com.br date
Wed Sep 18 20:54:03 BRT 2012
[oracle@mvrac1 .ssh]$ ssh mvrac3 date
Wed Feb 18 20:54:04 BRT 2012
[oracle@mvrac1 .ssh]$ ssh mvrac3-priv date
Wed Feb 18 20:54:05 BRT 2012
[oracle@mvrac1 .ssh]$ ssh mvrac3.viniciusdba.com.br date
Wed Feb 18 20:54:06 BRT 2012
[oracle@mvrac1 .ssh]$ ssh mvrac3-priv.viniciusdba.com.br date
Wed Sep 18 20:54:07 BRT 2012

Isso atualizará no servidor mvrac1, dentro do diretório corrente, /home/oracle/.ssh, o arquivo known_hosts (hosts conhecidos):

[oracle@mvrac1 .ssh]$ ls -l known_hosts
-rw-r--r-- 1 oracle oinstall 4869 Sep 20 20:54 known_hosts

Agora basta copiar esse arquivo para o outro servidor:

[oracle@mvrac1 .ssh]$ scp -p known_hosts mvrac2:`pwd`
known_hosts             100% 4869     3.2KB/s   00:00
[oracle@mvrac1 .ssh]$ scp -p known_hosts mvrac3:`pwd`
known_hosts             100% 4869     3.2KB/s   00:00

Pronto! Equivalência de usuários devidamente configurada!

Agora checar o particionamento de discos.

Como vocês se lembram, temos 4 discos disponibilizados:

  • 1 disco de 12GB (disco local);
  • 3 discos de 5GB (discos storage).

Não mexeremos nas partições do disco local, pois essas já foram configuradas durante a instalação do Linux.

Temos 3 discos de 5GB. Para instalarmos o Oracle RAC precisamos do seguinte:

  • 3 partições para armazenar Voting Disk;
  • 2 partições para armazenar OCR;
  • 3 partições que serão os discos ASM.

Vamos consultar os discos existentes no servidor mvrac3? Como root:

[root@mvrac3 ~]# fdisk -l

Disk /dev/sda: 12.8 GB, 12884901888 bytes
255 heads, 63 sectors/track, 1566 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1        1435    11526606   83  Linux
/dev/sda2            1436        1566     1052257+  82  Linux swap / Solaris

Disk /dev/sdb: 5368 MB, 5368709120 bytes
255 heads, 63 sectors/track, 652 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         652     5237158+   5  Extended
/dev/sdb5               1          32      256977   83  Linux
/dev/sdb6              33          64      257008+  83  Linux
/dev/sdb7              65          96      257008+  83  Linux
/dev/sdb8              97         128      257008+  83  Linux
/dev/sdb9             129         652     4208998+  83  Linux

Disk /dev/sdc: 5368 MB, 5368709120 bytes
255 heads, 63 sectors/track, 652 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sdc1               1         652     5237158+   5  Extended
/dev/sdc5               1          32      256977   83  Linux
/dev/sdc6              33          64      257008+  83  Linux
/dev/sdc7              65          96      257008+  83  Linux
/dev/sdc8              97         128      257008+  83  Linux
/dev/sdc9             129         652     4208998+  83  Linux

Disk /dev/sdd: 5368 MB, 5368709120 bytes
255 heads, 63 sectors/track, 652 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sdd1               1         652     5237158+   5  Extended
/dev/sdd5               1          32      256977   83  Linux
/dev/sdd6              33          64      257008+  83  Linux
/dev/sdd7              65         652     4723078+  83  Linux

As partições foram listadas!

Agora, faremos o SCAN dos discos ASM.

Para fazermos as partições dos discos ASM, basta usarmos a ASMLib com o usuário root:

[root@mvrac3 oracle]# /etc/init.d/oracleasm scandisks
Scanning the system for Oracle ASMLib disks:               [  OK  ]

Agora precisamos verificar se os discos foram realmente enxergados:

[root@mvrac3 oracle]# /etc/init.d/oracleasm listdisks
ASMDISK1
ASMDISK2
ASMDISK3

Pronto! Discos do ASM listados!

Agora falta apenas criar os block devices. Usaremos o utilitário chamado UDEV para isso. Para criarmos esses dispositivos, criaremos um arquivo com as regras necessárias no diretório /etc/udev/rules.d. O arquivo precisa ter a extensão .rules.

Agora criaremos o arquivo que criará os block devices:

[root@mvrac3 oracle]# vi 63-oracle-block.rules

O conteúdo do arquivo 63-oracle-block.rules será:

KERNEL=="sdb6", NAME="ocr1", OWNER="root", GROUP="dba", MODE="0640"
KERNEL=="sdb8", NAME="voting1", OWNER="oracle", GROUP="dba", MODE="0640"
KERNEL=="sdc6", NAME="ocr2", OWNER="root", GROUP="dba", MODE="0640"
KERNEL=="sdc8", NAME="voting2", OWNER="oracle", GROUP="dba", MODE="0640"
KERNEL=="sdd6", NAME="voting3",OWNER="oracle",GROUP="dba", MODE="0640"

Após isso, faremos o restart do serviço udev:

[root@mvrac3 rules.d]# start_udev
Starting udev:                                             [  OK  ]

Agora verificaremos se os devices foram criados:

[root@mvrac3 rules.d]# ls -l /dev/ocr* /dev/voting*
brw-r----- 1 oracle dba   8, 22 Sep 18 21:34 /dev/ocr1
brw-r----- 1 oracle dba   8, 38 Sep 18 21:35 /dev/ocr2
brw-r----- 1 root   dba   8, 24 Sep 18 21:34 /dev/voting1
brw-r----- 1 root   dba   8, 40 Sep 18 21:35 /dev/voting2
brw-r----- 1 oracle dba   8, 54 Sep 18 21:35 /dev/voting3

Os dispositivos foram criados!

Nesse momento estamos prontos para iniciar a adição do Nó ao Cluster!

Nos veremos no próximo post, semana que vem!

Um abraço!

Vinicius

——————————-

PS:

Observação:

Apenas para ficar claro, sobre as partições de discos, num ambiente corporativo eu costumo pedir o seguinte:

  • 1 disco (LUN) de 2GB para utilizar as partições raw devices (esse disco posteriormente será eliminado);
  • 2 discos (LUN’s) de 512MB para utilizar as partições block devices;
  • 1 disco (LUN) de 256MB para utilizar a partição block device;
  • Quantidade “X de discos para ASM, aí vai depender do tamanho do banco de dados.