Nginx、Haproxy、LVS負載均衡從原理到部署(一)

  先說些題外話,我記得51博客的號早就註冊了,以前只是不間斷上來看看別人寫的技術文章漲漲見識,本身後面開始接觸到運維這塊,就想到把平時學的一些相關技術記錄到博客上來,只是方便本身能夠隨時上網回顧,因爲多種因素影響(0。0其實主要是太懶),就沒事付出行懂,只是作放在了本地沒有寫成博客。如今受到一些新的事情影響(反正就是寫博客有好處),就決定付諸行動雖然感受寫出來很厲害的東西,可是主要仍是爲了本身之後可以隨時查看回顧,也算是技術路上的腳印記錄把!最近在學習高可用、負載均衡這一塊,因此將就就從這一塊開始寫!html

  這一塊我會分紅幾個小塊博文來寫,爭取把我第一篇寫的更加詳細,把我本身對學過集羣負載均衡、高可用以及架構理解寫清楚,若是有理解有誤差的地方但願各位博友可以提出,我會及時更正。這一篇先來說我主要學習的幾個負載均衡的軟件,分別是:Nginx丶Haproxy、LVS,首先寫Nginx大佬。linux


1、NGINX反向代理原理
nginx

  首先講的Nginx這款在國內比較火的開源軟件,主要由於Nginx不只能夠反向代理來實現負載均衡,並且還能夠在本地服務器作高速緩存,這個但是LVS和Haproxy不能實現的,後面咱們再作詳細的比較。我以爲無論學什麼技術,原理這塊是核心部分也是比較花時間的,運維也是如此。算法

  因此我先來說述原理這塊,用Nginx反向代理功能來實現負載均衡,也就是把部客戶端的請求,讓Nginx暫時代理接收,接着經過某種算法從多臺內容服務器中選出一臺,而後再把請求轉發給算法選出來的內容服務器,而後被選出內容服務器接收到請求,返回應答仍是通過Nginx而後在轉發給客戶端,最後來自於Client請求被多臺內容服務器一塊兒消化掉,大概的過程看下圖。vim

da8f4c46664f56bfb7d2b6e042fcf783.png-wh_


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均衡的分配了,這個這個調度是用的默認輪循算法。

測試結果如圖

2208b6c7d11aa070a3ec7f670f625205.png-wh_

在內容服務器上查看訪問access.log日誌,訪問IP是真機的IP,而不是代理服務器的IP

9d777c57cdea57c9178bf90833f59bbe.png-wh_

  

4、總結

  這篇主要就是寫Nginx反向代理實現負載均衡過程原理,Nginx須要啓用那個模塊。NGINX經常使用模塊、調度算法等等..配置會在後面專門寫一篇。

相關文章
相關標籤/搜索