主要观点:作者用 Kamal 部署 Elixir 应用,该应用曾在 Fly.io 部署并依赖 Erlang VM 的集群能力,需在 Hetzner 部署上实现。经历一些努力完成集群设置并记录过程,目前设置仍非完美,欢迎建议。
关键信息:
- 初始设置(无集群):利用
mix生成 Dockerfile,创建包含web和pipeline两个角色的服务器设置,创建 Hetzner 私有网络。 libcluster_hcloud:使用libcluster_hcloud设置 Hetzner 云集群策略,需注意标签选择器等配置。- 设置分发:在
rel/env.sh.eex中设置RELEASE_DISTRIBUTION和RELEASE_NODE,禁用 EPMD 并发布分发端口,通过traefik暴露端口 6789,使libcluster能连接节点。
重要细节: - 初始设置中创建的私有网络用于后续集群设置。
libcluster_hcloud设置中需确保 VM 上设置了配置中的标签。- 禁用 EPMD 时遇到连接
iex远程的问题,采用 EPMD 较少的方法。 - 在
deploy.yml中添加配置以发布端口,这是 Kamal 的一个限制,需通过traefik暴露端口。最终可使libcluster连接节点,节点列表可通过Node.list()查看。作者正在寻找下一份工作,欢迎推荐。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。