Oracle RAC – Cluster Synchronization Services (CSS) » Blog do Cauduro
Oracle RAC – Cluster Synchronization Services (CSS)
O Oracle RAC é composto de inúmeros daemons, com cada um tendo funções e responsabilidades especificas.
Um deles é o CSS, ou Cluster Synchronization Services.
Mas o que faz o CSS e por qual parâmetros ele é influenciado ?
Podemos dizer que o CSS é o deamon responsável por controlar os nós que pertecem ao Cluster.
Ele verifica e notifica quando um nó entra ou sai do Cluster.
Caso os nós percam a comunicação entre si, é esse mecanismo que esta envolvido no processo de identificação da falha.
Esse mecanismo é fundamental para evitar Split Brains.
E para verificar quais nós estão ativos no cluster o CSS faz uso de dois mecanismos de Heartbeat (regularmente o Oracle tenta enviar uma mensagem, como um pulso de coração, informando que aquele nó esta vivo):
Regularmente o Oracle escreve no Voting Disk informando que o Nó esta disponível.
Network Heartbeat por meio da Rede Privada (interconnect)
Regularmente o Oracle envia uma mensagem via Rede Privada informando que o Nó esta disponível.
Desta forma, se não for possível que o nó se comunique com o Cluster via Rede Privada durante certo período de tempo, ele poderá ser evitado (removido do cluster).
Se algum nó não acessar a maioria dos Voting Disks (50%+1) ele não poderá entrar no cluster, e caso já faça parte do cluster, ele será evitado.
Mas que parâmetros influenciam esse comportamento ?
O CSS possui alguns parâmetros que controlam e afetam o timeout do Heartbeat:
Tempo máximo em segundos que um heartbeat pode ocorrer. Caso demore mais que isso o nó poderá ser evitado.
Tempo máximo para que o nó seja reiniciado. Esse é o tempo que a maquina leva para dar shutdown.
Tempo máximo em segundos que a escrita em um voting disk pode ocorrer. Caso demore mais que isso o nó poderá ser evitado. Lembrando que no caso do Votink Disk, para que isso aconteça, ele teria que ter acesso a menos de 50% + 1 dos voting disks. Exemplificando, caso o Cluster tenha 3 voting disks e ele perca o acesso a 1 desses discos, ele não será evitado. Já caso ele perca o acesso a 2, ele poderá ser evitado. É preciso ter acesso a mais de 50% dos voting disks sempre.
Para obter os valores configurados desses parâmetros e para altera-los você pode fazer assim:
# crsctl set css misscount 90
# crsctl get css disktimeout
# crsctl set css disktimeout 600
Mas tome extremo cuidado ao alterar essas configurações.
Elas podem alterar o comportamento do seu cluster e você aumentar ou diminuir a necessidade de reconfiguração do cluster.
Esses parâmetros tem de ser definidos de ambiente para ambiente.
Normalmente quanto menor melhor, mas tem ambientes que tem um IO mais lento que o outro, e durante uma carga pesada, pode ser que por exemplo , o disktimeout de um ambiente tenha que ser maior que outro e assim por diante.
Por isso, tome cuidado e só altere esses parâmetros caso tenha certeza do que esta fazendo, e se esta ciente do seu comportamento.
Posted by Marcelo Cauduro at 10:43 pm
One Response to "Oracle RAC – Cluster Synchronization Services (CSS)"
Oracle RAC – Split Brain » Blog do Cauduro says:
julho 6, 2015 at 1:44 am
[…] Os nodes não sabem que estão sozinhos no cluster, daí os dois podem alterar os mesmos dados de uma tabela sem saber. Isso é chamado de Split Brain. É por isso que o Oracle tem um sensível mecanismo de verificação dos nós que compõe o Cluster, para evitar os Split Brains. Mas que tipo de verificação ele faz e como ela funciona ? Vamos ver isso num próximo post. […]