gpt4 book ai didi

java - 将自动缩放的应用程序和数据库服务器与领事配对

转载 作者:行者123 更新时间:2023-11-30 10:35:39 25 4
gpt4 key购买 nike

目前,我有两个 GCE 自动缩放服务器组,由厨师引导。第一个 - Redis 服务器(db),第二个 - java 服务器(app)。

任何 app 服务器都可以与任何 db 服务器通信。每个 db 都需要由 app 服务器提供服务,并且不应该出现一个 app 服务器连接到两个单独的 db 的情况 服务器。

所以,我需要弄清楚我是否可以使用 consul 将新创建的应用程序服务器与新创建的数据库服务器(都在同一网络中)连接起来。

总而言之,我需要通过在命令中添加适当的 db 服务器 IP 或主机名来自动配对新的升级服务器,在 app 上启动 java服务器。

我对服务发现和其他东西还很陌生,所以非常感谢任何帮助。

最佳答案

编辑后回答:

因此,如果我对您的理解正确,任何 应用程序服务器都可以与任何 redis 服务器通信,但是一旦他们选择了要与之通信的数据库服务器,他们就应该坚持下去与该服务器。

我可以通过 consul 看到一些实现这一目标的方法:

  1. 将每个应用服务器 1 对 1 映射到一个 Redis 服务器,并将每个服务器作为不同的服务在 consul 中公开,域名如下:app1.service.consulredis1.service .consul.这里的缺点是您无法独立于您的 Redis 服务器扩展您的应用服务器。
  2. 使用Redis Sentinel并让它为您抽象数据分片,并在 consul 中将其公开在一个域名下:redis.service.consul

我建议研究第二个选项,因为它允许您独立扩展应用程序和数据库服务器。

旧答案:

听起来您的网络中有两项服务:app 服务和 db 服务。然后,您通常会让 consul 充当它们两者的 DNS 服务器。

这可以通过为它们中的每一个创建一个服务文件来实现。在运行您的应用程序的服务器上,您将在 /usr/local/etc/consul.d/my_app.json 中创建一个服务文件:

{
"service": {
"name": "my_app",
"port": 1234
}
}

port 替换为您的应用正在监听的端口。然后,您需要使用 consul reload 重新加载 consul。您可以通过运行 consul monitor 检查更改是否正确应用。

现在应该可以从内部网络上的 my_app.service.consul 访问您的应用。

您可以通过使用 dig my_app.service.consul 发出 DNS 查询来检查这一点。这应该会在 DNS 响应的 ANSWER 部分返回应用服务器的 IP 地址。

然后您必须在您的数据库服务器上重复这些步骤,您需要使用适当的端口和服务名称为数据库创建另一个服务文件。

关于java - 将自动缩放的应用程序和数据库服务器与领事配对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41015416/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com