作为在 GCP 中使用 ejabberd 集群的第一步,我尝试使用自述文件中提到的环境变量“ERLANG_NODE_ARG=ejabberd@main”来更改节点名称。
但我无法访问服务中的 ejabberd 服务器。我尝试使用 ejabberdctl 检查状态,start 命令返回节点已在运行消息,而 status 命令返回节点已关闭消息。在此处输入图像描述
我想创建一个 ejabberd 集群。下面是我的部署文件
apiVersion: apps/v1
kind: Deployment
metadata:
name: main
spec:
replicas: 1
selector:
matchLabels:
app: main
template:
metadata:
labels:
app: main
spec:
containers:
- name: main
image: ejabberd/ecs
env:
- name: ERLANG_NODE_ARG
value: ejabberd@main
# - name: ERLANG_COOKIE
# value: dummycookie123
# - name: CTL_ON_CREATE
# value: "register admin localhost asd"
ports:
- containerPort: 5222
- containerPort: 5269
- containerPort: 5280
- containerPort: 5443
我正在尝试通过定义服务来访问上述部署。如果我删除添加以更改节点名称的环境变量,我就可以访问该服务,但当我在 YAML 文件中包含该变量时,它会失败。
我使用 cloudshell 检查了容器内的 ejabberd.log 文件和 error.log 文件,error.log 中没有任何条目,ejabberd.log 中的所有注释都与本地机器上测试的 ejabberd 的日志相匹配。我找不到 GCP 中失败的原因。您能帮我找出此问题的原因并提出有关在 GCP 集群中部署 ejabberd 的指导方针吗?
答案1
ejabberd 节点命名格式似乎是问题所在。我按照GitHub 查询并使用以下格式的名称名称@(主机名/机器名/容器名)并且成功了。我能够使用提供的节点名称访问 ejabberd 服务。