Para um projeto de faculdade, tenho que configurar uma instância RAC e um aplicativo, já consegui configurar meu laboratório RAC usando máquinas virtuais usando este vídeo guia , agora só preciso programar um aplicativo para conectar a minha instância RAC mas ... Eu não tenho certeza de como fazê-lo! Suponho que tenho que me conectar à rede SCAN? Mas eu tinha configurado como rede privada no adaptador de rede de cada máquina... Não configurei o DNS (fiquei travado por 4 dias e o vídeo guia não mostrava como configurar), então agora estou preso tentando se conectar a este banco de dados do DBeaver antes de programar meu aplicativo de nó.
Aqui estão algumas informações sobre o meu laboratório.
Eu tenho duas instâncias: node1 e node.
Status do serviço:
$ /crsctl check crs
CRS-4638: Oracle High Availability Services is online
CRS-4537: Cluster Ready Services is online
CRS-4529: Cluster Synchronization Services is online
CRS-4533: Event Manager is online
Configuração de digitalização?
$ ./srvctl config scan
SCAN name: node-scan, Network: 1
Subnet IPv4: 192.168.24.0/255.255.255.0/enp0s3, static
Subnet IPv6:
SCAN 1 IPv4 VIP: 192.168.24.41
SCAN VIP is enabled.
SCAN 2 IPv4 VIP: 192.168.24.42
SCAN VIP is enabled.
SCAN 3 IPv4 VIP: 192.168.24.43
SCAN VIP is enabled.
Ouvinte de varredura
$ ./srvctl config scan_listener
SCAN Listeners for network 1:
Registration invited nodes:
Registration invited subnets:
Endpoints: TCP:1521
SCAN Listener LISTENER_SCAN1 exists
SCAN Listener is enabled.
SCAN Listener LISTENER_SCAN2 exists
SCAN Listener is enabled.
SCAN Listener LISTENER_SCAN3 exists
SCAN Listener is enabled.
Como não há DNS, tive que configurar /etc/host assim para ambos os nós.
# Default
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
# Public
192.168.24.1 node1.localdomain node1
192.168.24.2 node2.localdomain node2
# Private
192.168.10.1 node-priv.localdomain node1-priv
192.168.10.2 node2-priv.localdomain node2-priv
# Virtual
192.168.24.31 node1-vip.localdomain node1-vip
192.168.24.32 node2-vip.localdomain node2-vip
# SCAN
192.168.24.41 node-scan.localdomain node-scan
192.168.24.42 node-scan.localdomain node-scan
192.168.24.43 node-scan.localdomain node-scan
IMHO você vai precisar de DNS.
O cliente Oracle primeiro executa a pesquisa de DNS para o endereço SCAN. Ele obterá todos os 3 IPs em ordem aleatória. Ele vai escolher o 1º. (PS: uma vez que algumas versões do cliente Oracle não usam o resolvedor fornecido pelo SO, mas sim o reselver incorporado).
Em seguida, o cliente Oracle se conecta a um dos ouvintes SCAN em execução nesse primeiro IP.
O ouvinte de varredura responde com uma mensagem de redirecionamento, apontando para um ouvinte VIP. Normalmente, ele redireciona você para o nó menos carregado. AFAIK, neste caso, a mensagem de redirecionamento não contém VIP, mas o nome do host do VIP.
Em seguida, o cliente Oracle resolve esse nome VIP via DNS e se conecta ao ouvinte VIP e executa a autenticação.
PS: Tente inserir todos os IPs em /etc/hosts na máquina cliente. Talvez funcione. O cluster de dois nós tem 7 IPs, em vez disso, coloque-os todos em /etc/hosts no cliente (e também em ambos os nós de banco de dados).
Se você tiver um DNS, a ideia é configurar três endereços IP no sistema round robin no servidor DNS. Se o cliente Oracle quiser se conectar usando o nome DNS da varredura, ele obterá uma lista dos três IPs em ordem aleatória, Ele os tentará um por um até conseguir. Isso torna o ouvinte SCAN altamente disponível, se um processo do ouvinte de varredura estiver inativo, dois outros ainda poderão estar disponíveis. O cluster cuida para que nenhum ouvinte seja executado em apenas um nó. Depois que o cliente alcançar um ouvinte SCAN, esse ouvinte o encaminhará para o ouvinte vip de um dos nós do cluster.
Se você não tiver DNS, você tem muitas possibilidades:
se possível, você pode definir os recursos fail_over/load_balance que normalmente seriam pelo servidor DNS no lado do cliente:
Aqui os endereços IP são os endereços do ouvinte SCAN. Este exemplo é do Oracle Whitepaper Oracle Single Client Access Name (SCAN), junho de 2013 , página 12p. Este artigo eu já citei nesta resposta que talvez também seja útil para você.
Mas você também pode se conectar apenas a um endereço IP SCAN, por exemplo, 133.22.67.192. Claro que você não pode se conectar se este IP estiver inativo.
Você também pode se conectar diretamente a um nó VIP, mas não terá balanceamento de carga nem failover se o servidor estiver inativo, por exemplo
Você pode evitar o ouvinte SCAN e ainda ter um balanceamento de carga e um failover se usar
Para cada uma dessas configurações há situações em que elas fazem sentido.