Назад | Перейти на главную страницу

Брандмауэр Opensuse 13.2: разрешить openmpi

Я пытаюсь запустить простой тест openmpi на двух серверах.

 mpirun --report-bindings --host serv1.cell,serv2.cell  -np 2 hostname

Оба сервера работают под управлением OpenSuse 13.2 и имеют аналогичную конфигурацию сетевого интерфейса:

Ens2f0 - подключение к Интернету, зона внешнего брандмауэра

Ens2f1 - подключение к локальной сети (192.168.0.0), зона внутреннего брандмауэра

Ens2f2 - подчиненное устройство связывания, зона внутреннего межсетевого экрана

Ens2f3 - подчиненное устройство связывания, зона внутреннего межсетевого экрана

bond0 - интерфейс соединения (192.168.6.0), другая подсеть, чем Ensf1, зона внутреннего брандмауэра

serv1.cell и serv2.cell определены в / etc / hosts как адреса в связывающей сети (192.168.6.0)

Openmpi был установлен из репозиториев по умолчанию с помощью zypper.

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

Если я выключу брандмауэр на serv1 и запустил его на serv2, openmpi будет работать на serv1:

serv1.cell:~ # mpirun --report-bindings --host serv1.cell,serv2.cell  -np 2 hostname
serv2.cell
serv1.cell

И не работает на serv2:

serv2.cell:~ # mpirun --report-bindings --host serv1.cell,serv2.cell  -np 2 hostname

Если я отключу брандмауэр на serv2 и запустил его на serv1, все будет наоборот: serv2 работает нормально, но serv1 зависает.

Я также попробовал простой тест с помощью netcat: оба брандмауэра включены, netcat прослушивает serv1, соединение и данные с serv2 в порядке, и наоборот, поэтому межсетевые экраны позволяют все, хотя и bond0. Отключение брандмауэров не является решением, поэтому как мне настроить OpenMPI (или брандмауэр), чтобы оба сервера работали правильно?

Наконец нашел, как указать OpenMPI использовать только указанные интерфейсы. в /path/to/openmpi/etc/openmpi-mca-params.conf вы должны описать сети и интерфейсы, добавив

btl_tcp_if_include = ifacename,0.0.0.0/24**
oob_tcp_if_include = ifacename,0.0.0.0/24**

что в моем случае просто

btl_tcp_if_include = bond0
oob_tcp_if_include = bond0

Теперь OpenMPI использует bond0 только.