Docker Kubernetes-我的2个应用程序部署仅在一个方面不同”;args";-能给我一个能同时引用他们两个的服务吗?
我想我有一个有趣的用例,所以我想听听有更多知识的人的建议。 我有我的应用程序(“广告””),它在Kubernetes中运行,没有任何问题。它在端口9000上运行。 它具有具有实例名称(Docker Kubernetes-我的2个应用程序部署仅在一个方面不同”;args";-能给我一个能同时引用他们两个的服务吗?,docker,kubernetes,azure-aks,Docker,Kubernetes,Azure Aks,我想我有一个有趣的用例,所以我想听听有更多知识的人的建议。 我有我的应用程序(“广告””),它在Kubernetes中运行,没有任何问题。它在端口9000上运行。 它具有具有实例名称(serverName)的参数,并且在服务器列表中,它还引用了所有其他服务器(servers),以便以性能原因所需的所谓的伴随模式运行这些服务器。 请记住,这不是一个WEB服务器,简单的副本将不用于我们需要实现的目标,即让多个ADS服务器以所谓的呼叫伴随模式工作,在这种模式下,主服务器将缓存的数据发送到另一台服务器,
serverName
)的参数,并且在服务器列表中,它还引用了所有其他服务器(servers
),以便以性能原因所需的所谓的伴随模式运行这些服务器。
请记住,这不是一个WEB服务器,简单的副本将不用于我们需要实现的目标,即让多个ADS服务器以所谓的呼叫伴随模式工作,在这种模式下,主服务器将缓存的数据发送到另一台服务器,以便服务器也具有最新的数据,并且可以在失败的案例
从第一个ADS YAML文件中提取:
-在serverName
中,我们指定服务器实例的名称
-在servers
arg中,我们指定常规ADS服务器地址及其端口
args:
....
"-serverName", "ads"
"-servers", "{ { ads , ads-test:9000 }, { ads2 , ads-test2:9000}"]
ports:
- containerPort: 9000
..................
kind: Service
metadata:
name: ads-test
spec:
type: ClusterIP
ports:
- protocol: TCP
port: 9000
selector:
app: ads-test
因此,在参数列表中,我们指定了一个服务,通过该服务,我们应该使用TCP连接(而不是HTTP连接)通过ADS test:9000访问ADS实例。由于这是一个集装箱化的应用程序,我不知道除了“ServiceName:port”之外还能指定什么作为服务器地址,因为这个应用程序的开发并没有假设集装箱化的应用程序
因此,第二个YAML应该只与serverName
info不同。
我还添加了附加服务ads-test2
args:
....
"-serverName", "ads2"
"-servers", "{ { ads , ads-test:9000 }, { ads2 , ads-test2:9000}"]
ports:
- containerPort: 9000
..................
kind: Service
metadata:
name: ads-test2
spec:
type: ClusterIP
ports:
- protocol: TCP
port: 9000
selector:
app: ads-test2
因为这实际上是同一个应用程序,但其配置中只有一个参数不同(serverName
)我想知道是否有什么方法可以简化这一点,并使用单一服务来访问两个ADS服务器,但在server
参数中有这种配置,它实际上激活了这种伴生模式,这是出于性能原因使用不同的服务器所需要的,但是两台服务器上的信息都是最新的
谢谢不,您不能为两个逻辑上不同的POD提供单一服务。服务通常在副本吊舱之间进行负载平衡。所以用户对你的吊舱的请求将被服务自动路由到任何一个吊舱。所以在你的情况下,你不希望发生这种情况。ads的请求可以通过ads2服务器吊舱发出。
推荐的方法是为你们的吊舱提供两种不同的服务,或者你们可以在一个吊舱内有多个容器,在这种情况下,只提供一种服务。
服务器名称的参数可以从环境中获取。
环境:
关键:
值:ads应用程序实例是否作为主动副本和被动副本工作?这样,只有一个可以是活动的,它接受所有写入,而另一个(被动)只有在第一个复制失败的情况下才存在?或者它们可以同时处于活动状态并处理请求?我的一个想法是使用这个应用,但因为我不知道这个应用,我不确定这是否是最好的解决方案。我需要更多information@Matt谢谢你的反馈。现在的情况是,我们有两个应用程序——我们把它们称为ADS和ADS2。它们同时工作——主要是出于性能原因。如果没有伴随模式,ADSE无法复制,因为ADS的核心目的之一是将数据库更改主动传播到其连接的客户端。如果没有伴随模式,ADS2将不知道由ADS1执行的数据库写入,因此无法将它们传播到其客户端,从而使这些客户端变得不同步。