Я пытаюсь запустить простой тест 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
только.