真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

怎么理解HAProxy負(fù)載均衡下的RabbitMQ

這篇文章主要介紹“怎么理解HAProxy負(fù)載均衡下的RabbitMQ”,在日常操作中,相信很多人在怎么理解HAProxy負(fù)載均衡下的RabbitMQ問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對(duì)大家解答”怎么理解HAProxy負(fù)載均衡下的RabbitMQ”的疑惑有所幫助!接下來,請(qǐng)跟著小編一起來學(xué)習(xí)吧!

在武川等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都網(wǎng)站制作、成都網(wǎng)站建設(shè) 網(wǎng)站設(shè)計(jì)制作定制網(wǎng)站設(shè)計(jì),公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),成都品牌網(wǎng)站建設(shè),成都營銷網(wǎng)站建設(shè),成都外貿(mào)網(wǎng)站制作,武川網(wǎng)站建設(shè)費(fèi)用合理。

具體錯(cuò)誤信息:

2018-05-04 11:21:48.116 ERROR 60848 --- [.168.0.202:8001] o.s.a.r.c.CachingConnectionFactory       : Channel shutdown: connection error 2018-05-04 11:21:48.116 ERROR 60848 --- [.168.0.202:8001] o.s.a.r.c.CachingConnectionFactory       : Channel shutdown: connection error 2018-05-04 11:21:48.125  INFO 60848 --- [nge.consumer1-8] o.s.a.r.l.SimpleMessageListenerContainer : Restarting Consumer@5196e177: tags=[{amq.ctag-d_wIlZIGxM3f0fsxkmYQfA=my_test_exchange.consumer1}], channel=Cached Rabbit Channel: AMQChannel(amqp://admin@192.168.0.202:8001/,1), conn: Proxy@25a73de1 Shared Rabbit Connection: SimpleConnection@25fca927 [delegate=amqp://admin@192.168.0.202:8001/, localPort= 56258], acknowledgeMode=AUTO local queue size=0 2018-05-04 11:21:48.126  INFO 60848 --- [nge.consumer1-9] o.s.a.r.c.CachingConnectionFactory       : Attempting to connect to: [manager1:8001] 2018-05-04 11:21:48.393  INFO 60848 --- [nge.consumer1-9] o.s.a.r.c.CachingConnectionFactory       : Created new connection: rabbitConnectionFactory#2b8bd14b:12/SimpleConnection@3fb9795a [delegate=amqp://admin@192.168.0.202:8001/, localPort= 56260] 2018-05-04 11:21:49.059  INFO 60848 --- [nge.consumer1-8] o.s.a.r.l.SimpleMessageListenerContainer : Restarting Consumer@58b42519: tags=[{amq.ctag-T1HyrOd5Ykr_VQZDwxRslA=stream_exchange.consumer1}], channel=Cached Rabbit Channel: AMQChannel(amqp://admin@192.168.0.202:8001/,2), conn: Proxy@25a73de1 Shared Rabbit Connection: SimpleConnection@3fb9795a [delegate=amqp://admin@192.168.0.202:8001/, localPort= 56260], acknowledgeMode=AUTO local queue size=0

Spring Boot 配置 RabbitMQ(使用 HAProxy 負(fù)載均衡):

spring:   application:     name: stream-rabbitmq-producer   rabbitmq:     host: manager1     port: 8001     username: admin     password: admin123456

怎么理解HAProxy負(fù)載均衡下的RabbitMQ

最近使用 RabbitMQ 集群的時(shí)候(HAProxy 負(fù)載均衡),頻繁的出現(xiàn)上面錯(cuò)誤信息,但是消息可以正常被消費(fèi)掉,如果只使用單機(jī)版 RabbitMQ 的話(不使用 HAProxy),是沒有任何錯(cuò)誤的。

被這個(gè)問題困擾了很久,Google 找了很多資料,也沒有找到解決方案,無意間找到一篇文章:RabbitMQ and HAProxy: a timeout issue

文章說,如果使用 HAProxy 配置 RabbitMQ 高可用集群的話,則會(huì)遇到客戶端連接超時(shí)問題。

為什么會(huì)出現(xiàn)此問題呢?因?yàn)?HAProxy 配置了客戶端連接超時(shí)參數(shù)(timeout client ms),如果客戶端連接超過配置的此參數(shù),那么 HAProxy 將會(huì)刪除這個(gè)客戶端連接。

RabbitMQ 客戶端使用***連接到代理,從不超時(shí),那為什么還會(huì)出現(xiàn)問題?因?yàn)槿绻?RabbitMQ 在一段時(shí)間內(nèi)處于非活動(dòng)狀態(tài),那么 HAProxy 將自動(dòng)關(guān)閉連接(有點(diǎn)坑呀??)。

那如何解決這個(gè)問題呢?我們看到 HAProxy 提供了一個(gè)clitcpka參數(shù)配置,它可以從客戶端發(fā)送TCP keepalive數(shù)據(jù)包。

我們就使用它,但發(fā)現(xiàn)配置了之后,還是出現(xiàn)了上面的問題。

為什么呢?

[…]the exact behaviour of tcp keep-alive is determined by the underlying OS/Kernel configuration[…]

什么意思?意思就是TCP keepalive數(shù)據(jù)包的發(fā)送,取決于操作系統(tǒng)/內(nèi)核配置。

我們可以使用命令查看(HAProxy 所在服務(wù)器中的tcp_keepalive_time配置):

[root@manager1 ~]# cat /proc/sys/net/ipv4/tcp_keepalive_time 7200

tcp_keepalive_time默認(rèn)配置時(shí)間 2 個(gè)小時(shí),表示發(fā)送TCP keepalive數(shù)據(jù)包的間隔時(shí)間是 2 個(gè)小時(shí),或者說每隔 2 個(gè)小時(shí)發(fā)送TCP keepalive數(shù)據(jù)包。

這么說就清楚了吧,雖然我們?cè)?HAProxy 中,配置了clitcpka參數(shù),但因?yàn)橄到y(tǒng)發(fā)送TCP keepalive數(shù)據(jù)包的間隔時(shí)間過長,遠(yuǎn)遠(yuǎn)超過 HAProxy 中的 timeout client超時(shí)時(shí)間(默認(rèn)好像是 2 秒),所以客戶端連接每隔 2 秒,就被 HAProxy 無情的給刪除掉,然后不斷的被重建。

說了那么多,我們?cè)撛趺唇鉀Q此問題呢?

兩種方案:

修改系統(tǒng)的tcp_keepalive_time配置,間隔時(shí)間低于 HAProxy 配置的timeout client超時(shí)時(shí)間(因?yàn)橛锌赡苡绊懫渌到y(tǒng)服務(wù),不推薦)。

修改 HAProxy 中的timeout client超時(shí)時(shí)間,配置大于系統(tǒng)的tcp_keepalive_time間隔時(shí)間(推薦)

因?yàn)橄到y(tǒng)tcp_keepalive_time發(fā)送TCP keepalive數(shù)據(jù)包間隔時(shí)間是 2 個(gè)小時(shí),所以,我們將 HAProxy 中的timeout client超時(shí)時(shí)間,設(shè)置為 3 個(gè)小時(shí):

timeout client  3h timeout server  3h

完整示例配置:

[root@manager1 ~]# cat /etc/haproxy/haproxy.cfg global     log     127.0.0.1  local0 info global     log     127.0.0.1  local1 notice     daemon global     maxconn 4096  defaults     log     global     mode    tcp     option  tcplog     option  dontlognull     retries 3     option  abortonclose     maxconn 4096     timeout connect  5000ms     timeout client  3000ms global     timeout server  3000ms     balance roundrobin  listen private_monitoring     bind    0.0.0.0:8000     mode    http     option  httplog     stats   refresh  5s     stats   uri  /stats     stats   realm   Haproxy     stats   auth  admin:admin  listen rabbitmq_admin     bind    0.0.0.0:8002     server  manager1 manager1:15672     server  manager2 manager2:15672     server  manager3 manager3:15672  listen rabbitmq_cluster     bind    0.0.0.0:8001     mode    tcp     option  tcplog     balance roundrobin     timeout client  3h     timeout server  3h     server  manager1  manager1:5672  check  inter  5000  rise  2  fall  3     server  manager2  manager2:5672  check  inter  5000  rise  2  fall  3     server  manager3  manager3:5672  check  inter  5000  rise  2  fall  3

重新運(yùn)行 HAProxy,然后 RabbitMQ 測試成功:

怎么理解HAProxy負(fù)載均衡下的RabbitMQ

到此,關(guān)于“怎么理解HAProxy負(fù)載均衡下的RabbitMQ”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!


網(wǎng)站標(biāo)題:怎么理解HAProxy負(fù)載均衡下的RabbitMQ
網(wǎng)頁URL:http://weahome.cn/article/jdgijs.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部