轉自:https://www.cnblogs.com/LiangSW/p/6243196.html
負載均衡
集群的配置已經搭建好了,代碼也成功跑通,成功做到了高可用,但是我們的程序連接節點並不會管哪個服務器在忙、哪個服務器空閑,完全看心情想連誰就連誰。而且代碼中要把每個ip的節點都手動的寫出來 ,既然是手動的就很有可能發現寫錯這種情況,同樣WEB UI 通常也不知道打開哪個好,因為每個服務器都有一個 WEB UI,可能有人說,既然哪個都行,你隨便打開一個就是了。但是如果不巧這個服務器后面崩了呢。
基於以前問題,我們就需要一個強大的負載均衡服務器來幫助我們完成這些事情。
這里選擇使用 haproxy,看官們可以根據心情來選擇自己想要的
這里記一個坑,博主之前想用windows系統做負載均衡服務器,但是實驗的時候總是會出錯,換到linux后,發現高版本的haproxy不可用!試了幾次 1.5.8是可以成功的。
准備工作就是 下載 haproxy,然后在linux下安裝
make TARGET=linux26 PREFIX=/usr/local/haproxy #將haproxy安裝到/usr/local/haproxy
make install PREFIX=/usr/local/haproxy
然后把haproxy.cfg拷貝到安裝目錄下sbin文件夾中,這里我做了一些配置。包括對WEB UI與集群的負載均衡
global log 127.0.0.1 local0 # log 127.0.0.1 local1 maxconn 4000 ulimit-n 8000 uid 0 gid 0 # chroot /tmp # nbproc 2 # daemon # debug # quiet
linsten rabbitm1_admin 0.0.0.0 35672
bind 0.0.0.0:35672
server rabbitmq1 ip1:15672
server rabbitm12 ip2:15672
listen rabbitmq_local_cluster 0.0.0.0:25672 #配置TCP模式 mode tcp option tcplog #簡單的輪詢 balance roundrobin #rabbitmq集群節點配置 server rabbitmq1 ip1:5672 check inter 5000 rise 2 fall 2 server rabbitmq2 ip2:5672 check inter 5000 rise 2 fall 2##服務器定義(check指健康狀況檢查,inter 2000指檢測頻率;rise 2指從離線狀態轉換至正常狀態需要成功檢查的次數;fall 2指失敗2次即認為服務器不可用) #配置haproxy web監控,查看統計信息 listen private_monitoring :8100 mode http option httplog stats enable #設置haproxy監控地址為http://localhost:8100/stats stats uri /stats stats refresh 30s #添加用戶名密碼認證 stats auth admin:1234
這時就已經完成了,打開管理界面就可以看到我們所做的負載均衡了
這時使用負載均衡的服務器ip登錄 web ui 是不是很爽快,我們只需要關心負載均衡就可以了,后面到底有多少台機器不用去了解,ip也不用去記,就是這么暢快
同樣可以到代碼中去改變一下創建連接方式了,在這里只需要填寫負載均衡服務器的ip就可以了,然后port為配置文件中的port
var factory = new ConnectionFactory() { HostName = "192.168.1.117", UserName = "admin", Password = "admin", AutomaticRecoveryEnabled = true, TopologyRecoveryEnabled = true, Port = 25672 };