1. 程式人生 > >基於軟體的負載均衡(Nginx與ZooKeeper解析)

基於軟體的負載均衡(Nginx與ZooKeeper解析)

什麼是負載均衡

負載均衡(Load Balance)是分散式系統架構設計中必須考慮的因素之一,它通常是指,將請求/資料【均勻】分攤到多個操作單元上執行,負載均衡的關鍵在於【均勻】。常見網際網路分散式架構如上,分為客戶端層、反向代理nginx層、站點層、服務層、資料層。

現在使用最多的基於軟體的負載均衡是Nginx和ZooKeeper:
Nginx是著名的反向代理伺服器,也被廣泛的作為負載均衡伺服器
ZooKeeper是分散式協調服務框架,有時也被用來做負載均衡

那麼它們有什麼區別?我們還怎麼選擇

Nginx
這裡寫圖片描述

Nginx的負載均衡配置
(1)把多個web server配置到nginx中,使用者訪問Nginx時,就會自動被分配到某個web server。
(2)當網站規模變大,通常會進行服務拆分,各個服務獨立部署,通過遠端呼叫方式協同工作。
(3)為了保證穩定性,每個服務不會只使用一臺伺服器,也會作為一個叢集存在,那麼子叢集也可以使用Nginx負載均衡。

ZooKeeper
這裡寫圖片描述

ZooKeeper的負載均衡模式
(1)ZooKeeper作為一個服務的註冊中心,每個服務在其註冊中心登記,每臺伺服器知道自己是屬於哪個服務,在伺服器啟動時,自己向所屬服務進行登記
(2)服務的呼叫者到註冊中心裡面查詢:能提供所需服務的伺服器列表,然後自己根據負載均衡演算法,從中選取一臺伺服器進行連線。
(3)呼叫者取到伺服器列表後,就可以快取到自己內部,省得下次再取,當伺服器列表發生變化,例如某臺伺服器宕機下線,或者新加了伺服器,ZooKeeper會自動通知呼叫者重新獲取伺服器列表

使用場景

使用Nginx,隨著整個系統的演進, 服務 的數量會 增加 、每個服務叢集中的 伺服器 數量會 增加
這時就會有一些小麻煩,例如
(1)配置維護的成本變高,因為節點太多
(2)單點故障的風險增加了,因為熱點服務的訪問量很高,如果這個服務叢集內的負載均衡服務出現問題,這個服務將失效
第一個問題,可以通過自己開發程式解決,但只是降低複雜度,並沒有實際解決
第二個問題,可以通過雙機高可用部署方案,使用另一臺nginx負載均衡伺服器隨時待命,只是成本較高

而ZooKeeper作為服務的註冊和變更通知中心,解決了Nginx負載均衡方案帶來的問題。
但是ZooKeeper並沒有內建負載均衡策略,需要呼叫者自己實現,這個方案只是利用了ZooKeeper的樹形資料結構、watcher機制等特性。

相關推薦

基於軟體負載均衡NginxZooKeeper解析

什麼是負載均衡 負載均衡(Load Balance)是分散式系統架構設計中必須考慮的因素之一,它通常是指,將請求/資料【均勻】分攤到多個操作單元上執行,負載均衡的關鍵在於【均勻】。常見網際網路分散式架構如上,分為客戶端層、反向代理nginx層、站點層、服務層、

Nginx實現負載均衡nginx + tomcat應用分散式

一、       工具     nginx-1.8.0   apache-tomcat-6.0.33   二、    目標     實現高效能負載均衡的Tomcat

nginx反向代理負載均衡輪詢權重IPHash

-s 圖片服務器 後臺管理 session AI 需要 new 守護進程 weight 1 Nginx反向代理 1.1 實現圖片回顯 1.1.1 反向代理 說明:當用戶發出image.jt.com/2018/1.jpg時,首先將請求發往Nginx.經過Nginx內部

動態負載均衡Nginx+Consul+UpSync

Http動態負載均衡 什麼是動態負載均衡 傳統的負載均衡,如果Upstream引數發生變化,每次都需要重新載入nginx.conf檔案, 因此擴充套件性不是很高,所以我們可以採用動態負載均衡,實現Upstream可配置化、動態化,無需人工重新載入nginx.conf。 這類似分散式的配置中心 &nb

動態負載均衡Nginx+Consul+UpSync環境搭建

首先 安裝好 Consul upsync 然後:  1、配置安裝Nginx  需要做配置,包括分組之類的,建立目錄,有些外掛是需要存放在這些目錄的  groupadd nginx useradd -g nginx -s /sbin/nologin nginx

通過http、https域名訪問靜態網頁、nginx配置負載均衡nginx配置

很多場景下需要可以通過瀏覽器訪問靜態網頁,不想把伺服器ip地址直接暴露出來,通過nginx可以解決這個問題。 實現http域名訪問靜態網頁 1.域名解析配置(本文都是以阿里云為例,其他平臺,操作步驟類似) 進入阿里雲的域名解析頁面,配置域名指向的伺服器地址(記錄型別選擇A,記錄值填寫伺服器ip,記得把伺服器的

基於Nginx軟體負載均衡實現解讀

負載均衡涉及到以下的基礎知識。 (1) 負載均衡演算法 a. Round Robin: 對所有的backend輪訓傳送請求,算是最簡單的方式了,也是預設的分配方式; b. Least Connections(least_conn): 跟蹤和backend當前的活躍連線數目,最少的連線數目說明這個backen

基於Nginx負載均衡技術研究實現

一、下載安裝及使用 1、版本 日期 版本 CHANGES NGINX NGINX/WINDOWS 2018.6.27 MainLine(開發版) C

架構之路:nginxIIS服務器搭建集群實現負載均衡

原創 not c盤 鏈接 發布 原創文章 hang 實戰 負載均衡 【前言】 在《架構之路:nginx與IIS服務器搭建集群實現負載均衡(一)》中小編簡單的講解了Nginx的原理!俗話說:光說不練假把式。接下來,小編就和大家一起來做個小Demo來體會一下Nginx的

架構之路:nginxIIS服務器搭建集群實現負載均衡

blog 存儲 bsp 知識 exe ESS 步驟 校驗 con 參考網址:https://blog.csdn.net/zhanghan18333611647/article/details/50811980 【前言】 在《架構之路:nginx與IIS服務器搭建集群

Nginx實現七層的負載均衡LB Nginx

lb nginx Nginx實現七層的負載均衡調度到不同組後端服務器1. 動靜分離2. 網站進行分區=================================================================================拓撲結構

Nginx+keepalived做雙機熱備,實現負載均衡主主模式

nginx keepalive Keepalived: 簡介:Keepalived的作用是檢測服務器的狀態,如果有一臺web服務器宕機,或工作出現故障,Keepalived將檢測到,並將有故障的服務器從系統中剔除,同時使用其他服務器代替該服務器的工作,當服務器工作正常後Keepali

企業實戰4-實現基於Haproxy負載均衡集群的電子商務網站架構

haproxy keepalived 企業實戰:逐步實現企業各種情景下的需求企業情景四:隨著公司業務的發展,公司負載均衡服務已經實現四層負載均衡,但業務的復雜程度提升,公司要求把mobile手機站點作為單獨的服務提供,不在和pc站點一起提供服務,此時需要做7層規則負載均衡,運維總監要求,能否用一種服務

Nginx+Tomcat 配置實現負載均衡附安裝包

jsp color 一個 網頁 管理 密碼 bin pcr 解壓 實驗目的: Nginx 是一款輕量級的Web 服務器/反向代理服務器及電子郵件(IMAP/POP3)代理服務器,並在一個BSD-like 協議下發行。 其特點是占有內存少,並發能力強,事實上nginx的

2、Tomcat叢集,並用Nginx實現負載均衡win環境

1、Tomcat的配置 1、系統環境變數配置: 首先要實現Tomcat的叢集就得擁有多個tomcat,所以我在本地電腦下載了兩個Tomcat,我這裡使用的是Tomcat7,當然,配置與Tomcat的版本沒多大關係~ 下載之後我們先來配置好環境變數: 在我們的系統變數中增加上

Spring Cloud ---- 服務消費負載均衡Rest + Ribbon

  上一篇主要寫了基於Eurake的服務的註冊,主要就是建立註冊中心,建立服務者,將服務者註冊到註冊中心,完成服務的暴露。這一篇主要寫服務的消費與服務消費的負載均衡。   服務的呼叫方式有兩種,Rest + ribbon ,另一鍾是feign,feign集成了ribbon。這一篇主要說前者.   因為服務

Spring Cloud ---- 服務消費負載均衡feign

req 啟動文件 創建 code cli 負載均衡。 auto request 文件   feign是一個聲明式的偽客戶端,只需要創建一個接口並且註解,它具有可插拔的特性。feign集合了Ribbon,再與Eurake結合實現服務的註冊發現與負載均衡。結合Hystrix,具

網站集群架構實戰LVS負載均衡Nginx代理緩存、Nginx動靜分離、Rsync+Inotify全網備份、Zabbix自動註冊全網監控--技術流ken

.com auth 分發 發生 lnmp process daemon bytes sendfile 前言 最近做了一個不大不小的項目,現就刪繁就簡單獨拿出來web集群這一塊寫一篇博客。數據庫集群請參考《MySQL集群架構篇:MHA+MySQL-PROXY+LVS實現M

使用nginx實現負載均衡Docker版本

現在服務都要處理高併發的問題,如果將服務部署在一臺伺服器上,當很多人同時訪問可能會使伺服器記憶體過高而導致系統崩潰,所以就需要使用負載均衡來減輕伺服器的負擔。通過修改nginx配置可以實現負載均衡。 nginx文件連結:http://www.nginx.cn/doc/ 舉個例子:

網站叢集架構實戰LVS負載均衡Nginx代理快取、Nginx動靜分離、Rsync+Inotify全網備份、Zabbix自動註冊全網監控--技術流ken

前言 WEB叢集專案簡介 隨著網站訪問量的激增,勢必會導致網站的負載增加,現需求搭載一套高效能,高負載,高可用的網站叢集架構以保障網站的持續、高效、安全、穩定的執行。 針對以上需求,我們採用瞭如下的技術: 使用負載均衡技術來實現網站請求的排程分發,減小後端伺服器的壓力。 配置了KEEPALIVED解決