Пытаюсь настроить кластер из двух узлов ejabberd 1.1.2
Во-первых, уже был один узел, назывался xmpp, я переименовал hostname сервака где он работает в xmpp1 и в результате ejabberd перестал запускаться. В чём тут дело?
Временно потёр базы и запустил "с нуля" (разумеется, всё ок) и вылезла вторая проблема. Запускаю на втором серваке, который называется xmpp2, по инструкции:
erl -sname ejabberd -mnesia extra_db_nodes "['ejabberd@xmpp1']" -s mnesia
выпадаю в командную строку эрланга, запускаю mnesia:info(). и вижу что нифига не сработало:
running db nodes = [ejabberd@xmpp2]
stopped db nodes = [ejabberd@xmpp1]
проверяю пинг:
(ejabberd@xmpp2)4> net_adm:ping('ejabberd@xmpp2').
pong
(ejabberd@xmpp2)5> net_adm:ping('ejabberd@xmpp1').
pang
(ejabberd@xmpp2)6> inet:gethostbyname("xmpp1").
{ok,{hostent,"xmpp1.sportbox.ru",[],inet,4,[{192,168,***,***}]}}
(ejabberd@xmpp2)7> inet:gethostbyname("xmpp2").
{ok,{hostent,"xmpp2.sportbox.ru",["xmpp2"],inet,4,[{192,168,***,***}]}}
tcpdump на xmpp1 видит, что xmpp2 коннектится на порт 4369, они обмениваются данными нормально.
Чего делать?
Забить. От
Забить. От кластеризации в ejabberd больше проблем, чем пользы. Ко всему прочему, еще придется мучиться с рассинхронизацией базы на разных узлах.
совет
Забить.
"Хороший" совет, именно "специалиста"
Неужели так всё
Неужели так всё плохо? А при каких условиях рассинхронизируется база?
Если сетевой
Если сетевой канал между узлами пропадет ненадолго, то база рассинхронизируется и без вмешательства человека не восстановится (причем это вполне штатно, так как непонятно, как восстанавливать). А пропадание канала случается почаще, чем падение отдельных узлов сети. Так что к кластеру должен прилагаться оператор на полный рабочий день и ночь.
собственно
собственно что-то ты делал не по инструкции:
The command line parameters:
-sname ejabberd
The Erlang node will be identified using only the first part of the host name, i. e. other Erlang nodes outside this domain cannot contact this node. This is the preferable option in most cases.
-name ejabberd
The Erlang node will be fully identified. This is only useful if you plan to setup an ejabberd cluster with nodes in different networks.
ну и глянуть на одинаковость erlang.cookie
Там оказалось
Там оказалось что файрволом было закрыто...
Кластер поднялся, всё нормально работает. Осталось с muc разобраться, он же не кластеризуется :(
в 2.0
в 2.0 кластеризуется