91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么理解HAProxy負載均衡下的RabbitMQ

發布時間:2021-12-17 14:39:42 來源:億速云 閱讀:240 作者:iii 欄目:服務器

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

具體錯誤信息:

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 負載均衡):

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

怎么理解HAProxy負載均衡下的RabbitMQ

最近使用 RabbitMQ 集群的時候(HAProxy 負載均衡),頻繁的出現上面錯誤信息,但是消息可以正常被消費掉,如果只使用單機版 RabbitMQ 的話(不使用 HAProxy),是沒有任何錯誤的。

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

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

為什么會出現此問題呢?因為 HAProxy 配置了客戶端連接超時參數(timeout client ms),如果客戶端連接超過配置的此參數,那么 HAProxy 將會刪除這個客戶端連接。

RabbitMQ 客戶端使用***連接到代理,從不超時,那為什么還會出現問題?因為如果 RabbitMQ 在一段時間內處于非活動狀態,那么 HAProxy 將自動關閉連接(有點坑呀??)。

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

我們就使用它,但發現配置了之后,還是出現了上面的問題。

為什么呢?

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

什么意思?意思就是TCP keepalive數據包的發送,取決于操作系統/內核配置。

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

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

tcp_keepalive_time默認配置時間 2 個小時,表示發送TCP keepalive數據包的間隔時間是 2 個小時,或者說每隔 2 個小時發送TCP keepalive數據包。

這么說就清楚了吧,雖然我們在 HAProxy 中,配置了clitcpka參數,但因為系統發送TCP keepalive數據包的間隔時間過長,遠遠超過 HAProxy 中的 timeout client超時時間(默認好像是 2 秒),所以客戶端連接每隔 2 秒,就被 HAProxy 無情的給刪除掉,然后不斷的被重建。

說了那么多,我們該怎么解決此問題呢?

兩種方案:

修改系統的tcp_keepalive_time配置,間隔時間低于 HAProxy 配置的timeout client超時時間(因為有可能影響其他系統服務,不推薦)。

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

因為系統tcp_keepalive_time發送TCP keepalive數據包間隔時間是 2 個小時,所以,我們將 HAProxy 中的timeout client超時時間,設置為 3 個小時:

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

重新運行 HAProxy,然后 RabbitMQ 測試成功:

怎么理解HAProxy負載均衡下的RabbitMQ

到此,關于“怎么理解HAProxy負載均衡下的RabbitMQ”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

晴隆县| 西安市| 合肥市| 肃北| 施秉县| 三门县| 德昌县| 平山县| 东乡县| 乃东县| 麟游县| 小金县| 焉耆| 星子县| 丹阳市| 麦盖提县| 阿勒泰市| 攀枝花市| 韶关市| 鹿邑县| 安远县| 宽城| 烟台市| 科技| 铅山县| 金秀| 芜湖县| 赫章县| 寿阳县| 郑州市| 石家庄市| 确山县| 泸水县| 阿坝| 措勤县| 延庆县| 濉溪县| 金寨县| 稷山县| 永昌县| 晋城|