Нестабильность Oracle RAC из-за включенного межсетевого экрана межсетевого экрана (netfilter / iptables)

by itisgood

Oracle Clusterware может не запуститься (root.sh на втором узле завершается с ошибкой «Failure at final check of Oracle CRS stack») из-за брандмауэра (например, iptables в Linux), настроенного на межсоединении кластера.

Другие симптомы включают в себя проблемы с производительностью и стабильностью от умеренных до серьезных, напрямую связанные с такими брандмауэрами.

Примерами являются ложные выселения узлов, «IPC SEND / RECEIVE TIMEOUT» и низкая / неравномерная производительность.

Oracle RAC использует межсоединение кластера для отправки блоков буферного кэша между экземплярами, работающими на разных узлах.

Межсоединение кластера также используется для других важных сообщений меньшего размера, необходимых для стабильности и масштабируемости кластера. IPtables или аналогичные реализации брандмауэра являются методом фильтрации OSI эталонной модели уровня 3 (сети) и должны быть отключены на межсоединении кластера, так как по замыслу эта сеть является доверенной.

Межсоединение кластера должно быть полностью частной / изолированной (обработка пакетов уровня 2), не маршрутизируемой сети (единственные узлы, подключенные к нему, являются самими членами кластера). Поэтому безопасно и необходимо отключать любые подобные программные брандмауэры для этой сети.

Если безопасность по-прежнему вызывает беспокойство, используйте физически отдельный выделенный коммутатор для межсоединения кластера или настройте межсоединение кластера для использования виртуальной локальной сети (VLAN; уровень сети OSI 2), выделенной для частной подсети.

Это примечание относится ко всем платформам, на которых работает Oracle RAC, включая Windows со всеми версиями Unix и Linux.

Примеры команд в Linux:

1. Чтобы проверить, включены ли iptables и или ip6tables на любом уровне выполнения:

# chkconfig --list iptables
iptables 0:off 1:off 2:on 3:on 4:on 5:on 6:off

или на текущем уровне:

# service iptables status
Firewall is stopped.
2. Чтобы отключить iptables на всех уровнях запуска (для следующей загрузки):
# chkconfig iptables off
# chkconfig --list iptables
iptables 0:off 1:off 2:off 3:off 4:off 5:off 6:off

3. Чтобы остановить iptables в текущей работающей системе:

# service iptables stop
Flushing firewall rules: [ OK ]
Setting chains to policy ACCEPT: filter [ OK ]
Unloading iptables modules: [ OK ]
 4. Если вам все еще нужны iptables для управления другими интерфейсами, вам следует сбросить все правила:
# iptables --flush

и убедитесь, что вы создаете только те правила, которые не влияют на интерфейсы межсоединений кластера, протоколы и пространство сетевых адресов.

Повторите эти шаги на всех узлах RAC.

 

You may also like

Leave a Comment