負載均衡(Load Balance)是分佈式系統架構設計中必須考慮的因素之一,它一般是指,將請求/數據【均勻】分攤到多個操做單元上執行,負載均衡的關鍵在於【均勻】。常見互聯網分佈式架構如上,分爲客戶端層、反向代理nginx層、站點層、服務層、數據層。nginx
Nginx web
Nginx的負載均衡配置
(1)把多個web server配置到nginx中,用戶訪問Nginx時,就會自動被分配到某個web server。
(2)當網站規模變大,一般會進行服務拆分,各個服務獨立部署,經過遠程調用方式協同工做。
(3)爲了保證穩定性,每一個服務不會只使用一臺服務器,也會做爲一個集羣存在,那麼子集羣也可使用Nginx負載均衡。算法
ZooKeeper 緩存
ZooKeeper的負載均衡模式
(1)ZooKeeper做爲一個服務的註冊中心,每一個服務在其註冊中心登記,每臺服務器知道本身是屬於哪一個服務,在服務器啓動時,本身向所屬服務進行登記
(2)服務的調用者到註冊中內心面查找:能提供所需服務的服務器列表,而後本身根據負載均衡算法,從中選取一臺服務器進行鏈接。
(3)調用者取到服務器列表後,就能夠緩存到本身內部,免得下次再取,當服務器列表發生變化,例如某臺服務器宕機下線,或者新加了服務器,ZooKeeper會自動通知調用者從新獲取服務器列表服務器
使用Nginx,隨着整個系統的演進, 服務 的數量會 增長 、每一個服務集羣中的 服務器 數量會 增長
這時就會有一些小麻煩,例如
(1)配置維護的成本變高,由於節點太多
(2)單點故障的風險增長了,由於熱點服務的訪問量很高,若是這個服務集羣內的負載均衡服務出現問題,這個服務將失效
第一個問題,能夠經過本身開發程序解決,但只是下降複雜度,並無實際解決
第二個問題,能夠經過雙機高可用部署方案,使用另外一臺nginx負載均衡服務器隨時待命,只是成本較高架構
ZooKeeper安裝負載均衡
下載:zookeeper-3.3.6.tar.gz框架
解壓複製到三個文件夾分佈式
修改配置網站
vi ../../zookeeper1/conf/zoo.cfg
initLimit=5 syncLimit=2 tickTime=2000 dataDir=/home/xupp/zookeeper/zookeeper0/data_default/ dataLogDir=/home/xupp/zookeeper/zookeeper0/log_default/ clientPort=4180 server.0=192.168.20.90:8001:7770 server.1=192.168.20.90:8002:7771 server.2=192.168.20.90:8003:7772
initLimit=5 syncLimit=2 tickTime=2000 dataDir=/home/xupp/zookeeper/zookeeper1/data_default/ dataLogDir=/home/xupp/zookeeper/zookeeper1/log_default/ clientPort=4181 server.0=192.168.20.90:8001:7770 server.1=192.168.20.90:8002:7771 server.2=192.168.20.90:8003:7772
initLimit=5 syncLimit=2 tickTime=2000 dataDir=/home/xupp/zookeeper/zookeeper2/data_default/ dataLogDir=/home/xupp/zookeeper/zookeeper2/log_default/ clientPort=4182 server.0=192.168.20.90:8001:7770 server.1=192.168.20.90:8002:7771 server.2=192.168.20.90:8003:7772
建立對應文件夾data_default和log_default
建立myid文件 寫入對應的服務編號 server.0 對應 0
啓動
../../zookeeper2/bin/zkServer.sh start
中止
../../zookeeper2/bin/zkServer.sh stop
鏈接服務
../bin/zkCli.sh -server 127.0.0.1:4180
參考:http://blog.csdn.net/lan12334321234/article/details/70049945 http://blog.csdn.net/zhangyu_ad/article/details/68942158