在 Ingress Nginx 中配置主/从路由

问题描述 投票:0回答:1

我想要使用状态集在 K8 集群上为 Artemis ActiveMQ 设置主/从。这就是我正在做的事情。 创建两个有状态集,为主站和从站提供服务。服务看起来是这样的

NAME                TYPE           CLUSTER-IP       EXTERNAL-IP   PORT(S)                          AGE
c1-artemis-master-svc    LoadBalancer   10.110.0.76      127.0.0.1     8161:30011/TCP,61616:31211/TCP   10s
c1-artemis-slave-svc   LoadBalancer   10.111.165.162   127.0.0.1     8261:30064/TCP,62616:30649/TCP   17s

现在使用 ingress nginx 公开 TCP 端口 61616 和 62616 https://mailazy.com/blog/exusing-tcp-udp-services-ingress/

因此,我已将 ingress 中的values.yaml 配置为

tcp:
  61625: "default/c1-artemis-master-svc:61616"
  61626: "default/c1-artemis-slave-svc:62616"

我可以使用 61625 作为主设备,61626 作为从设备。

但是我想要一个从 nginx 公开的端口,并且该端口根据可用性将请求转发到 61625 或 61626。

例如,我想连接到端口 9100,该端口会将请求转发到主服务器(如果正在运行)或从服务器。

有没有办法可以在 ingress nginx 中配置一些路由机制。

使用独立的主/从设置时(不是在 k8 集群中,而是仅运行 docker 映像,一个用于主,一个用于从),我设置了 HAProxy 来进行自动路由,如下所示 -

defaults
  mode tcp
  timeout client 10s
  timeout connect 5s
  timeout server 10s
  timeout http-request 10s
  timeout queue           1m
  timeout connect         10s
  timeout client          1m
  timeout server          1m
  timeout http-keep-alive 10s
  timeout check           10s
  maxconn                 3000

frontend myfrontend
  mode tcp
  bind 0.0.0.0:9100
  default_backend pairnode

backend pairnode
  mode tcp
  # check for master node
  server ndoe1 0.0.0.0:61616 check
  # check for slave node
  server ndoe2 0.0.0.0:62616 check backup

我想要在 ingress nginx 中有类似的东西。

kubernetes-ingress nginx-ingress activemq-artemis
1个回答
0
投票

我使用就绪探针来检查代理的 TCP 连接是否已启动并正在运行,并相应地路由流量。

readinessProbe:
  tcpSocket:
    port: 61616
  initialDelaySeconds: 5
  periodSeconds: 10
© www.soinside.com 2019 - 2024. All rights reserved.