我们已经创建了一个statefulset&无头服务。有两种方法可以定义应用程序中的对等ip:
- 在contactPoints中使用"cassandra headless service name">
- 从headless服务获取对等端ip;外部化对等端ip,并在初始化连接时读取这些ip。到目前为止还不错。如果一个/一些pod重新启动,而不是全部重新启动,以上内容将起作用。在这种情况下,驱动程序将自动更新新的ips
但是,在完全停机的情况下,这将如何工作?如果所有吊舱都放下&当他们回来时,如果所有的pods ip都被更改了(在Kubernetes中ip可以更改(,应用程序将如何连接到Cassandra?
在完全中断的情况下,您是对的,应用程序将没有任何有效的集群端点。在应用程序连接到Cassandra之前,这些内容需要刷新(并重新启动应用程序(。
我们实际上编写了一个RESTful API,我们可以通过集群查询当前有效的端点。这样,应用程序团队就可以随时找到集群的当前IP。我建议做一些类似的事情。