Fencing

Fencing - это механизм, специально разработанный для исключения "поврежденного" узла из кластера Oracle. Fencing необходим потому, что нельзя отличить сбой узла от повреждения интерконнекта/SAN. Fencing, таким образом гарантирует, что узел будет не в состоянии выполнять операции  I/O и, следовательно, повредить данные.

Если узел не обновляет информацию в voting disk или не отвечает по interconnect в течении timeout, возникает потенциально ситуация (split brain), когда узлы кластера начнут несогласованно модифицировать данные (узлы каждую секунду пишут в voting файл и также каждую секунду читают kill block).

Начиная с Oracle 10g версии R2 существуют 3 параметра для управления механизмом  Fencing-га:

  • reboottime
  • misscount 
  • disktimeout  

Управлять этими параметрами можно с помощью $CRS_HOME/bin/crsctl get/set css
Однако необходимо помнить, что "Customers should not modify CSS settings unless guided by either Oracle support or Oracle development to do so"


Для осуществления голосования каждый узел должен иметь доступ как минимум к N/2+1 Voting disk, где N - число voting disks. Например если сконфигурировано 5 voting disks, в любой момент времени должно быть доступно не менее 3-х.
Для предотвращения данной ситуации, существует алгоритм, выделяющий подкластера, и подкластер с меньшим количеством узлов должен покинуть кластер. Для двуузлового кластера, выживает узел с меньшим номером.

Для выполнения fencing Oracle использует алгоритм STONITH (shoot the other node in the head). Oracle Clusterware реализует данный алгоритм посылая узлу команду "самоубийства" (commit suicide), и узел выполняет перезагрузку. В нижеследующей таблице описан алгоритм вызова STONITH.

Network Ping Disk Ping Reboot
Completes within misscount seconds Completes within Misscount seconds

N

Completes within Misscount seconds Takes more than misscount seconds but less than Disktimeout seconds

N

Completes within Misscount seconds Takes more than Disktimeout seconds

Y

Takes more than Misscount Seconds Completes within Misscount seconds

Y

 

 

 

 

 

 




Отмечу, что некоторые другие продавцы ПО (я точно знаю про Veritas) используют для fencing инструкции scsi persistent reservation (набор команд SCSI3). В это случае узлы "голосуют" через этот набор команд, кто из них должен "умереть". У этого подхода есть и достоинства и недостатки. Недостаток - диски должны поддерживать scsi3, достоинство - такой fencing драйвер работает в kernel mode, таким образом гарантируя, что I/O команды не пройдут.

Fencing драйвер Oracle напротив работает в user mode, но целостность данных дополнительно гарантируется внутренними механизмами RAC.

Таким образом, для  предотвращения перезагрузки кластерных  узлов все сетевое оборудование ( SAN-адаптеры, SAN-свичи и  сетевые карты) должно быть дублировано и необходимые драйвера установлены в операционных системах.

Вас заинтересует / Intresting for you:

Oracle и непроцедурный доступ ...
Oracle и непроцедурный доступ ... 7383 просмотров Antoni Tue, 21 Nov 2017, 13:32:50
Listener Oracle
Listener Oracle 14793 просмотров Stas Belkov Tue, 21 Nov 2017, 13:18:05
NULL в ORACLE и как с ним можн...
NULL в ORACLE и как с ним можн... 6075 просмотров Андрей Васенин Wed, 01 Jul 2020, 08:11:51
Язык SQL в Oracle
Язык SQL в Oracle 3290 просмотров Ирина Светлова Tue, 21 Nov 2017, 13:26:01
Войдите чтобы комментировать

ildergun аватар
ildergun ответил в теме #8039 07 фев 2017 13:24
Суперская статья! Автору +1 к Карме! )))