先說些題外話,我記得51博客的號早就註冊了,以前只是不間斷上來看看別人寫的技術文章漲漲見識,本身後面開始接觸到運維這塊,就想到把平時學的一些相關技術記錄到博客上來,只是方便本身能夠隨時上網回顧,因爲多種因素影響(0。0其實主要是太懶),就沒事付出行懂,只是作放在了本地沒有寫成博客。如今受到一些新的事情影響(反正就是寫博客有好處),就決定付諸行動雖然感受寫出來很厲害的東西,可是主要仍是爲了本身之後可以隨時查看回顧,也算是技術路上的腳印記錄把!最近在學習高可用、負載均衡這一塊,因此將就就從這一塊開始寫!html
這一塊我會分紅幾個小塊博文來寫,爭取把我第一篇寫的更加詳細,把我本身對學過集羣負載均衡、高可用以及架構理解寫清楚,若是有理解有誤差的地方但願各位博友可以提出,我會及時更正。這一篇先來說我主要學習的幾個負載均衡的軟件,分別是:Nginx丶Haproxy、LVS,首先寫Nginx大佬。linux
1、NGINX反向代理原理
nginx
首先講的Nginx這款在國內比較火的開源軟件,主要由於Nginx不只能夠反向代理來實現負載均衡,並且還能夠在本地服務器作高速緩存,這個但是LVS和Haproxy不能實現的,後面咱們再作詳細的比較。我以爲無論學什麼技術,原理這塊是核心部分也是比較花時間的,運維也是如此。算法
因此我先來說述原理這塊,用Nginx反向代理功能來實現負載均衡,也就是把部客戶端的請求,讓Nginx暫時代理接收,接着經過某種算法從多臺內容服務器中選出一臺,而後再把請求轉發給算法選出來的內容服務器,而後被選出內容服務器接收到請求,返回應答仍是通過Nginx而後在轉發給客戶端,最後來自於Client請求被多臺內容服務器一塊兒消化掉,大概的過程看下圖。vim
2、虛擬機環境搭建舉例
緩存
一、搭建環境使用的軟件、系統、準備的軟件包丶IPbash
軟件:VMworkstation搭建虛擬機服務器
linux系統:CentOS Linux release 7.3架構
軟件包:nginx-1.13.6.tar.gz 負載均衡
IP:一臺反向代理服務器ip:10.0.0.32,兩臺內容服務器ip:10.0.0.五、10.0.0.6
二、YUM安裝依賴包、編譯安裝軟件包
yum install gcc make libssl-dev zlib zlib-devel openssl openssl-devel prce prce-deve [root@localhost src]#useradd nginx -s /sbin/nologin -M [root@localhost src]#tar zxvf nginx-1.13.6.tar.gz ... [root@localhost src]cd nginx-1.13.6 [root@localhost nginx-1.13.6]#./configure --user=nginx --group=nginx --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre [root@localhost nginx-1.13.6]#make && make install
三、配置nginx.conf
#在代理服務器:10.0.0.32 [root@direct1]#vim /usr/local/nginx/conf/nginx.conf #在http{}中加入upstream反向代理模塊,在location段加入proxy_pass 讓訪問重定向到backend中 #注意upstream模塊位置應該放在http模塊裏面 但必須是在server模塊的外面 upstream backend { server 10.0.0.5 max_fails=3 fail_timeout=10s ; server 10.0.0.6 max_fails=3 fail_timeout=10s ; } server { listen 80; server_name www.zhengsida1.com; location / { proxy_pass http://backend; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #上三行設置是讓內容服務器日誌顯示訪問IP爲客戶端IP,而不是反向代理服務器IP }
#server1:10.0.0.5,server2:10.0.0.6 nginx安裝再也不演示,只需在server2開啓index.html訪問用來測試 #兩臺內容服務器index.html中放入不一樣內容用來驗證 [root@server1]#vim /usr/local/nginx/conf/nginx.conf server { listen 80; server_name img.zsd.com location / { root html; index index.html index.htm; }
3、測試驗證
配置完成後用真機遊覽器進行訪問,記得在本地本機配置HOSTS文件,用來本地域名解析。
真機的請求被server一、server2均衡的分配了,這個這個調度是用的默認輪循算法。
測試結果如圖
在內容服務器上查看訪問access.log日誌,訪問IP是真機的IP,而不是代理服務器的IP
4、總結
這篇主要就是寫Nginx反向代理實現負載均衡過程原理,Nginx須要啓用那個模塊。NGINX經常使用模塊、調度算法等等..配置會在後面專門寫一篇。