Как изменить имя узла ejabberd по умолчанию, которое является ejabberd@localhost?

Я хочу кластеризовать узел ejabberd, поэтому я хочу, чтобы каждый узел имел другое имя узла. Я искал в сети, везде говорится, что вы можете изменить имя узла в файле ejabberdctl.cfg, изменив ERLANG_NODE=ejabberd@desired_name.

Но в тот момент, когда я изменяю эту строку на любое другое имя, при запуске сервера он говорит: «Аварийный дамп записан в ……», а при остановке сервера с помощью ejabberdctl stop он говорит: «Ошибка подключения RPC к узлу». ejabberd@желаемое_имя: nodedown".

Может кто-нибудь сказать мне, как успешно изменить имя узла?

Заранее спасибо!!!


person user2323620    schedule 04.07.2013    source источник
comment
У вас могут быть проблемы с мнезией. Я не помню подробностей, но таблицы mnesia остаются заблокированными на локальном хосте узла. Если вам не нужно восстанавливать данные на mnesia, просто удалите каталог db и перезапустите сервер ejabberd.   -  person Nuno Freitas    schedule 04.07.2013


Ответы (4)


Какое бы имя хоста вы ни добавили к узлу Ejabberd, вам придется отразить его в файле hosts (/etc/hosts), поскольку ejabberd пытается разрешить доменное имя, которое вы добавляете, и если оно не разрешимо, произойдет сбой. будь таким простым и не более того.

person securecurve    schedule 02.11.2013

Хотя уже слишком поздно, но для тех, у кого возникла такая же проблема, вот что вы должны сделать:

  1. Найдите все запущенные процессы ejabberd и уничтожьте их.

    ps aux | grep ejabberd

    kill process_id_of_daemon

  2. Завершите все процессы, относящиеся к epmd, который является демоном, запускаемым средой выполнения erlang.

    ps aux | grep epmd

    kill process_id_of_daemon

  3. Перезапустить ejabberd

Проблема здесь в том, что если у вас также установлен erlang в вашей системе, демон epmd все еще работает, и ejabberd воспринимает это как дубликат экземпляра, пытающийся быть вызванным. (Отсюда ошибка дублирующего имени в журнале сбоев)

Остановка этих процессов и последующий запуск ejabberd приведет к повторному запуску epmd, поэтому он также не повлияет на erlang.

person Rohit Minni    schedule 19.05.2014

Только для записей. Вы можете использовать опцию, предоставляемую ejabberdctl. Все, что вам нужно сделать, это...

  1. запустить сервер со старым именем узла
  2. сделать резервную копию mnesia db
  3. остановить сервер и переместить все файлы мнений из /var/lib/ejabberd
  4. запустить сервер с новым именем узла
  5. изменить имя узла в резервной копии mnesia с помощью
    ejabberdctl mnesia_change_nodename $OLDNODE $NEWNODE $OLDFILE $NEWFILE
  6. установить новый файл в качестве резервного
    ejabberdctl install_fallback $NEWFILE
  7. остановить сервер и снова остановить

Весь процесс описан в документах ejabberd.

person Uday Sawant    schedule 03.02.2015

передняя часть ERLANG_NODE должна быть вашим именем. Часть после «@» — это домен/хост.

ERLANG_NODE=ваше-имя@хост

Очистить каталог mnesia на новых узлах (они не содержат никакой важной информации, поскольку вы никогда не кластеризовали)

person user425720    schedule 04.07.2013
comment
спасибо за ваш ответ, но где я могу найти каталог mnesia, чтобы удалить его. Я уже удалил все, что связано с ejabberd, выполнив поиск ejabberd* с помощью терминала. Тем не менее, после новой установки ejabberd, даже с локальным хостом, сервер не работает. - person user2323620; 04.07.2013
comment
он находится в YOURDIR/var/lib/* помимо файла cookie. Возможно, ваш каталог не «испорчен» плохим хостом, потому что mnesia может не запуститься. - person user425720; 04.07.2013
comment
После изменения имени узла в ejabberdctl.cfg сервер не запускается, хотя я полностью удалил каталог mnesia db, как вы указали. После сброса мода все работает. Что я делаю не так?? - person user2323620; 05.07.2013
comment
В нем говорится, что аварийный дамп был записан в: /home/...../var/log/ejabberd/erl_crash_20130705-170203.dump PID ядра завершен (application_controller) ({application_start_failure, kernel, {{shutdown, {failed_to_start_child, net_sup,{ shutdown, {failed_to_start_child, auth, {Ошибка при чтении /home/... Когда я попытался остановить ejabberdctl, он говорит, что RPC не удалось выполнить на узле ejabberd@srv: nodedown - person user2323620; 05.07.2013
comment
какой у тебя host -s ? Можете ли вы использовать это вместо «srv»? - person user425720; 06.07.2013