我想要使用状态集在 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 中有类似的东西。
我使用就绪探针来检查代理的 TCP 连接是否已启动并正在运行,并相应地路由流量。
readinessProbe:
tcpSocket:
port: 61616
initialDelaySeconds: 5
periodSeconds: 10