使用nginx代理rocketmq多主多从集群

avatar 2024年6月8日18:37:52 评论 556 次浏览

我在k8s里部署好了rocketmq多主多从集群,并且在我的kubernetes集群中已经使用了,但是突然有要求在kubernetes集群外部也要用,这个就尴尬了。因为我的是线上环境如果外部访问就需要放在公网上,我这里在测试环境测试。刚开始我用的是一个代理,代理多个broker就会发现客户端生产和消费都是两条同样的消息,但是只是发了一条会产生聊天,弄了两天。一直郁闷。。。。。

后来我把一个代理换成两个代理,每个代理代理一个broker即可。我的nginx已经安装好了,看一下我的nginx配置。

 nginx73
 stream {
     upstream prod-eft-link-mq10909 {
         least_conn;
         server 192.168.6.236:32727;
     }
     upstream prod-eft-link-mq10911 {
         least_conn;
         server 192.168.6.237:32742;
     }
     upstream prod-eft-link-mq9876 {
         least_conn;
         server 192.168.6.236:30740;
     }
     server {
         listen 9876;#9876
         proxy_pass prod-eft-link-mq9876;
     }
    server {
         listen 10909;#10909
         proxy_pass prod-eft-link-mq10909;
     }
    server {
         listen 10911; #10911
         proxy_pass prod-eft-link-mq10911;
     }
 }
 nginx93
 stream {
     upstream prod-eft-link-mq10909 {
         least_conn;
         server 192.168.6.236:30532;
     }
     upstream prod-eft-link-mq10911 {
         least_conn;
         server 192.168.6.236:31213;
     }
     upstream prod-eft-link-mq9876 {
         least_conn;
         server 192.168.6.236:30740;
     }
     server {
         listen 9876;#9876
         proxy_pass prod-eft-link-mq9876;
     }
    server {
         listen 10909;#10909
         proxy_pass prod-eft-link-mq10909;
     }
    server {
         listen 10911; #10911
         proxy_pass prod-eft-link-mq10911;
     }
 }

stream是需要配置到nginx的http里的,所以安装的nginx要支持stream。另外需要配置一下broker主的配置,把两个主里增加brokerIP1 = 192.168.6.93和`brokerIP1 = 192.168.6.73`然后重启broker即可,下面看一下我的控制台变化

增加了两个代理的ip,这时我们需要在主题里创建一个topic然后发个消息,在消息里查看一下,是不是一条消息就可以了,另外在连接rocketmq时需要把93和73的9876端口都加上才可以,避免brocker之间不均衡。

avatar

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: