搭建Ejabberd Docker 集群环境,主机配置如下
IP | USER | HOSTNAME | OS |
---|---|---|---|
192.168.1.15 | root | cluster1 | Ubuntu 16.04 |
192.168.1.16 | root | cluster2 | Ubuntu 16.04 |
Ejabberd版本:23.04
docker-composer配置
192.168.1.15主机:
version: "3.7"
services:
ejabberd:
image: ejabberd/ecs
container_name: ejabberd
environment:
- ERLANG_NODE_ARG=ejabberd@m1.ejabberd.io
- ERLANG_COOKIE=1a5f7cbbe45b13082b0
- CTL_ON_CREATE=register 1000 m1.ejabberd.io 1000
extra_hosts:
- "m1.ejabberd.io:127.0.0.1"
network_mode: host
192.168.1.16主机:
version: "3.7"
services:
ejabberd:
image: ejabberd/ecs
container_name: ejabberd
environment:
- ERLANG_NODE_ARG=ejabberd@m2.ejabberd.io
- ERLANG_COOKIE=1a5f7cbbe45b13082b0
extra_hosts:
- "m2.ejabberd.io:127.0.0.1"
network_mode: host
注:一定一定注意docker 容器的network_mode类型,以及ERLANG_COOKIE要保持一致
修改配置ejabberd.yml
hosts:
- "m1.ejabberd.io"
acl:
admin:
user:
- "admin@m1.ejabberd.io"
注册管理员
$ bin/ejabberdctl --node ejabberd@m1.ejabberd.io register admin m1.ejabberd.io 123456;
加入集群节点
在192.168.1.15主机上执行以下命令:
$ bin/ejabberdctl --no-timeout join_cluster 'ejabberd@m2.ejabberd.io'
如果出现`no_ping`的错误,请仔细检查是否cookie 以及docker的桥接方式对不对。
如果没有错误返回,恭喜您,已经成功了!!!