卡迈勒 + Hetzner 部署上的 Elixir 集群

主要观点:作者用 Kamal 部署 Elixir 应用,该应用曾在 Fly.io 部署并依赖 Erlang VM 的集群能力,需在 Hetzner 部署上实现。经历一些努力完成集群设置并记录过程,目前设置仍非完美,欢迎建议。
关键信息:

  • 初始设置(无集群):利用mix生成 Dockerfile,创建包含webpipeline两个角色的服务器设置,创建 Hetzner 私有网络。
  • libcluster_hcloud:使用libcluster_hcloud设置 Hetzner 云集群策略,需注意标签选择器等配置。
  • 设置分发:在rel/env.sh.eex中设置RELEASE_DISTRIBUTIONRELEASE_NODE,禁用 EPMD 并发布分发端口,通过traefik暴露端口 6789,使libcluster能连接节点。
    重要细节:
  • 初始设置中创建的私有网络用于后续集群设置。
  • libcluster_hcloud设置中需确保 VM 上设置了配置中的标签。
  • 禁用 EPMD 时遇到连接iex远程的问题,采用 EPMD 较少的方法。
  • deploy.yml中添加配置以发布端口,这是 Kamal 的一个限制,需通过traefik暴露端口。最终可使libcluster连接节点,节点列表可通过Node.list()查看。作者正在寻找下一份工作,欢迎推荐。
阅读 14
0 条评论