Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Docker Kubernetes-我的2个应用程序部署仅在一个方面不同”;args";-能给我一个能同时引用他们两个的服务吗?_Docker_Kubernetes_Azure Aks - Fatal编程技术网

Docker Kubernetes-我的2个应用程序部署仅在一个方面不同”;args";-能给我一个能同时引用他们两个的服务吗?

Docker Kubernetes-我的2个应用程序部署仅在一个方面不同”;args";-能给我一个能同时引用他们两个的服务吗?,docker,kubernetes,azure-aks,Docker,Kubernetes,Azure Aks,我想我有一个有趣的用例,所以我想听听有更多知识的人的建议。 我有我的应用程序(“广告””),它在Kubernetes中运行,没有任何问题。它在端口9000上运行。 它具有具有实例名称(serverName)的参数,并且在服务器列表中,它还引用了所有其他服务器(servers),以便以性能原因所需的所谓的伴随模式运行这些服务器。 请记住,这不是一个WEB服务器,简单的副本将不用于我们需要实现的目标,即让多个ADS服务器以所谓的呼叫伴随模式工作,在这种模式下,主服务器将缓存的数据发送到另一台服务器,

我想我有一个有趣的用例,所以我想听听有更多知识的人的建议。 我有我的应用程序(“广告””),它在Kubernetes中运行,没有任何问题。它在端口9000上运行。 它具有具有实例名称(
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执行的数据库写入,因此无法将它们传播到其客户端,从而使这些客户端变得不同步。