我有一个在 1+1、1+2、1+3...虚拟机上运行的 Akka 应用程序,Akka 系统正在相互发现。
在AWS上我可以使用https://doc.akka.io/docs/akka-management/current/discovery/aws.html#discovery-method-aws-api-ec2-tag-based-discovery ,这样我就可以根据需要轻松更改 plus 节点的数量。
对于在 Azure 上运行相同的设置,我在列表中看不到任何好的选项: https://doc.akka.io/docs/akka/current/discovery/index.html
您能否建议一种不需要像 Consul 这样的额外托管服务的 Azure 安装解决方案?前往
最佳答案
我确认没有任何东西可以像 AWS 那样用于发现原始 Azure VM。
我的建议是使用基于 Azure 的 Kubernetes 解决方案,例如 ARO 或 AKS。 Kubernetes 也是大多数 Akka 部署的发展方向。发现只是众多功能之一。 (我从未见过 Consul 用于 Akka,确实有一个可用的发现模块,但我估计 2022 年编排平台上 99% 以上的 Akka 都是 Kubernetes。)
但是由于您的问题是如何在没有编排层的情况下做到这一点,因此您可以编写并贡献自己的发现模块,也可以使用种子节点。
- 对于第一个选项,发现模块实际上并不是非常复杂。他们所做的只是根据您拥有的 API(AWS、Azure、K8S 等)返回尝试连接的 IP/端口列表。这种方法的主要缺点是您将运行一个非常独特的实现。
- 另一个选项是运行种子节点。为了获得高可用性,我建议运行 2+n,而不是 1+n。只要您有两个稳定的节点,这并不是一个糟糕的选择。当然不如基于 Kubernetes 的解决方案那么动态或强大,但也不可怕。
关于azure - Azure 上的 Akka 发现(使用 VM),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72661859/