背景
我正在尝试在几个长生不老药节点之间设置集群。我的理解是我可以通过修改release vm.args来设置它。我正在使用 Distillery 构建版本,并遵循此处的文档:https ://hexdocs.pm/distillery/config/runtime.html 。
我的 rel/vm.args 文件如下:
-name <%= release_name %>@${HOSTNAME}
-setcookie <%= release.profile.cookie %>
-smp auto
-kernel inet_dist_listen_min 9100 inet_dist_listen_max 9155
-kernel sync_nodes_mandatory '[${SYNC_NODES_MANDATORY}]'
我有一个运行 Ubuntu 18.04 的构建服务器和两个运行 Ubuntu 18.04 的网络服务器。我正在构建服务器上构建版本,将存档复制到网络服务器,然后取消存档并从那里开始。
在服务器上,两个 vm.args 文件计算为:
-name hifyre_platform@10.10.10.100
-setcookie wefijow89236wj289*PFJ#(*98j3fj()#J()#niof2jio
-smp auto
-kernel inet_dist_listen_min 9100 inet_dist_listen_max 9155
-kernel sync_nodes_mandatory '["\'my_app@10.10.10.100\'","\'my_app@10.10.10.200\'"]'
和
-name hifyre_platform@10.10.10.200
-setcookie wefijow89236wj289*PFJ#(*98j3fj()#J()#niof2jio
-smp auto
-kernel inet_dist_listen_min 9100 inet_dist_listen_max 9155
-kernel sync_nodes_mandatory '["\'my_app@10.10.10.100\'","\'my_app@10.10.10.200\'"]'
这些版本通过 systemd 运行,配置如下:
[Unit]
Description=My App
After=network.target
[Service]
Type=simple
User=ubuntu
Group=ubuntu
WorkingDirectory=/opt/app
ExecStart=/opt/app/bin/my_app foreground
Restart=on-failure
RestartSec=5
Environment=PORT=8080
Environment=LANG=en_US.UTF-8
Environment=REPLACE_OS_VARS=true
Environment=HOSTNAME=10.10.10.100
SyslogIdentifier=my_app
RemainAfterExit=no
[Install]
WantedBy=multi-user.target
问题
两个服务器上的发布都很好,但是当我打开远程控制台并运行时Node.list()
,结果是一个空列表,除非我手动连接两个节点。
如果我手动运行,Node.connect(:"my_app@10.10.10.200")
我会在每个节点上运行时看到另一个节点Node.list()
,但这不会在启动时自动发生。