Наконец, я нашел решение проблемы. Проблема заключается в том, что имя узла является именем узла главного имени FQ, но имя подчиненного узла не имеет домена. Также добавлены оба имени узла в файл / etc / hosts
Перед запуском настройте правильные записи в файлах / etc / hosts обоих узлов. то есть узлы должны разрешать друг друга, используя их имена хостов. задайте имя узла ejaberd в файле ejabberd.cfg, оба узла должны иметь разные имена узлов.
1.сконфигурируйте ejabberd в одном главном узле с правильным именем узла (либо полное доменное имя, либо просто имя вашего удобства)
2.конфигурируйте подчиненный узел с той же конфигурацией, что и у главного, т.е. бот-узлы должны иметь одинаковую конфигурацию в файле ejabberd.yml)
3.copy erlang.cookie от главного узла к подчиненному, и пользователь ejabberd должен иметь права на чтение файла cookie.
4. Запустите главный узел в режиме реального времени (ejabberdctl live)
5. Запустите подчиненный узел в режиме реального времени
6. Проверьте значение cookie в консоли erlang обоих узлов, используя команда 'erlang: get_cookie ().' оба узла должны иметь одинаковое значение.
7.Если бот-узлы имеют одинаковое значение, тогда выполните «ejabberdctl - not-timeout join_cluser ejabberd @ nodename» в ведомом устройстве. измените ejabberd @ nodename в соответствии с вашей средой. В моем случае я запустил ejabberd с пользователем 'ejabberd' с именем узла как ejabberd @ cluster-node1 (Если вы хотите, вы можете использовать также полное доменное имя, например, ejabberd@example.com)
8. Если выполнена команда abode без каких-либо ошибок узлы находятся в кластере
9. Подтвердите кластер в любой консоли erlang с помощью команды mnesia: info (). здесь вы получите подробности об узле в "running_db_nodes"
10. Ура, вы закончили ...
Для балансировки нагрузки кластера вы можете использовать HAProxy
Пожалуйста, обратитесь https://blog.onefellow.com/post/76702632637/haproxy-and-ejabberd за подробностями
Я не выполнил балансировку нагрузки, используя какой-либо аппаратный балансировщик нагрузки, нужно проверить это.
Если кто-то сделал это, пожалуйста, напишите здесь ..
Один способ сделать это состоит в том, чтобы использовать метод двойной буферизации: нарисуйте к внеэкранному битовому массиву, затем восстановите, затем блитируйте битовый массив на экран. Но на излишество кажется, что, если восстановление минимизированного окна является единственным сценарием, где это необходимо. Возможно, у других будут лучшие идеи?..
Кроме того, при рисовании всей клиентской области окна можно отключить WM_ERASEBKGND (или скорее сказать обработку его, но ничего не делайте) избегать ненужной последовательности fill-with-background-then-redraw.
Эта ссылка на MSDN объяснит, как Вы хотели бы обработать рисование окна в своем случае. События окна как окно обновляют или минимизируют/максимизируют, потребует перекрашивания Вашего окна или региона окна.
Счастливое кодирование!!
Я - OP..., случайно съел мой cookie.
Изученный, как окна flip3d и панель задач управляют этим немного ближе и они на самом деле перекрашивают окно, прежде чем они запустят анимацию ползунка. Попытайтесь минимизировать окно и затем восстановить его с flip3d, Вы будете видеть, что восстанавливается маленькое мигание на 3-м окне перед ним.
Попробованный то же самое моим приложением и это выглядит намного лучше, не идеальный но приемлемый:/