雙主模型的Nginx高可用負載均衡集群

雙主模型的Nginx高可用負載均衡集群

實驗目的:使用keepalived實現Nginx的雙主高可用負載均衡集群

實驗環境:兩臺Nginx proxy(雙主Nginx,各需要兩塊網卡,eth0連接內網,eth1連接外網)、兩臺web server(請求的負載均衡)、一臺client用于驗證結果。

注意:為了不影響實驗結果,在實驗開始前先關閉iptables和selinux

操作步驟:

一、配置IP

1.配置A主機的IP

# ip addr add dev eth0 192.168.10.2/24

2.配置B主機的IP

# ip addr add dev eth0 192.168.10.23/24

3.配置C主機的IP

# ip addr add dev eth0 192.168.10.3/24

4.配置D主機的IP

# ip addr add dev eth0 192.168.10.33/24

二、配置web服務(CD主機都做同樣配置,只需修改默認主頁中的IP地址為本機的IP即可,以示區別)

1.安裝apache

# yum -y install apache

2.創建默認主頁

# vim /var/www/html/index.html

<h1>192.168.10.3</h1>

3.啟動apache

# service httpd start

三、配置sorry_server(此服務配置于Nginx proxy主機上,兩臺Nginx proxy都做同樣配置,只需修改默認主頁中的IP地址為本機的IP即可,以示區別)

1.安裝apache

# yum -y install apache

2.創建默認主頁

# vim /var/www/html/index.html

<h1>sorry_server:192.168.10.2</h1>

3.修改監聽端口為8080,以免與nginx所監聽的端口沖突

# vim /etc/httpd/conf/httpd.conf

Listen 8080

4.啟動apache服務

四、配置代理(兩臺Nginx proxy都做同樣配置)

1.安裝nginx

# yum -y install nginx

2.定義upstream集群組,在http{}段中定義;

# vim /etc/nginx/nginx.conf

        http {

            upstream websrvs {

                server 192.168.10.3:80;

                server 192.168.10.33:80;

                server 127.0.0.1:8080 backup;

            }

        }

3.調用定義的集群組,在server{}段的location{}段中調用;

# vim /etc/nginx/conf.d/default.conf

        server {

            location / {

                proxy_pass http://wersrvs;

                index index.html;

            }

        }

4.啟動服務

# service nginx start

五、配置keepalived

A主機上操作

1.安裝keepalived

# yum -y install keepalived

2.編輯A主機的配置文件/etc/keepalived/keepalived.conf,作如下配置:

! Configuration File for keepalived

    global_defs {

    notification_email {

        root@localhost

    }

    notification_email_from keepalived@localhost

    smtp_server 127.0.0.1

    smtp_connect_timeout 30

    router_id centos6

    vrrp_mcast_group4 224.0.100.39

    }

    vrrp_script chk_down {

        script “[[ -f /etc/keepalived/down ]] && exit 1 || exit 0”

        interval 1

        weight -5

    }

    vrrp_script chk_nginx {

        script “killall -0 nginx && exit 0 || exit 1”

        interval 1

        weight -5

        fall 2

        rise 1

    }

    vrrp_instance ngx {

        state MASTER

        interface eth1

        virtual_router_id 14

        priority 100

        advert_int 1

        authentication {

            auth_type PASS

            auth_pass MDQ41fTp

        }

        virtual_ipaddress {

            192.168.20.100/24 dev eth1

        }

        track_script {

            chk_down

            chk_nginx

        }

    }

    vrrp_instance ngx2 {

        state BACKUP

        interface eth1

        virtual_router_id 15

        priority 98

        advert_int 1

        authentication {

            auth_type PASS

            auth_pass XYZ41fTp

        }

        virtual_ipaddress {

            192.168.20.200/24 dev eth1

        }

        track_script {

            chk_down

        chk_nginx

        }

    }

B主機也作同樣配置,稍作修改即可,需要修改的地方如下:

    vrrp_instance ngx {

        state BACKUP

        priority 98

    }

    vrrp_instance ngx2 {

        state MASTER

        priority 100

    }

六、模擬故障,驗證結果

1.啟動兩臺Nginx proxykeepalived服務

# service keepalived start

2.訪問192.168.20.100,結果應是后端的web server輪詢響應請求

雙主模型的Nginx高可用負載均衡集群

3.訪問192.168.20.200,結果應是后端的web server輪詢響應請求

雙主模型的Nginx高可用負載均衡集群

4.將后端的web server關閉一臺,訪問192.168.20.100192.168.20.200,響應請求的將只是另一臺正常運行web server的主機

雙主模型的Nginx高可用負載均衡集群

5.將后端的web server都關閉,此時訪問192.168.20.100192.168.20.200,響應請求的將只是Nginx proxy中定義的主server中的sorry_server

雙主模型的Nginx高可用負載均衡集群

6.關閉一臺Nginx proxy nginx服務,備server將把IP地址添加到本機,繼續提供服務,此時訪問192.168.20.100192.168.20.200并不會有任何察覺

雙主模型的Nginx高可用負載均衡集群

原創文章,作者:人字拖,如若轉載,請注明出處:http://www.www58058.com/75394

(0)
人字拖人字拖
上一篇 2017-05-13 21:36
下一篇 2017-05-13 21:43

相關推薦

  • Linux文本處理三劍客之一sed

    這周我們學習了文本處理工具三劍客之一的sed,對于之前學的grep同樣的重要,也同樣是一個難點。sed是針對一個文件或者多個文件一行一行處理的,它處理的時候,把當前處理的行存儲在模式空間,處理完成后,把緩沖區內容輸出到屏幕上,接著處理下一行。直到文件末尾。原文件并沒有經過更改。 1、sed一些常用的選項     -n …

    2017-08-26
  • vim文本編輯器使用

    vim文本編輯器使用

    2017-09-20
  • 解決線上服務器httpd無法反向代理resin的解決方法

    一、簡述   前兩天有后端的小伙伴跟我反映說使用httpd反向代理resin時遇到的問題,在做網站管理后臺的時候,發起的http的put,delete的請求無法經由resin傳遞到后面的dbserver。當時的第一反應就是httpd的反向代理設置出現的問題,但是關于httpd反代resin的內容在網上機會搜索不到。于是,查看httpd反代tomca…

    Linux干貨 2017-01-11
  • PHP高效率寫法(詳解原因)

    1.盡量靜態化:    如果一個方法能被靜態,那就聲明它為靜態的,速度可提高1/4,甚至我測試的時候,這個提高了近三倍。   當然了,這個測試方法需要在十萬級以上次執行,效果才明顯。   其實靜態方法和非靜態方法的效率主要區別在內存:靜態方法在程序開始時生成內存,實例方法在程序運行中生成內存,所以靜…

    Linux干貨 2015-05-28
  • 第四周作業

    1、復制/etc/skel目錄為/home/tuser1,要求/home/tuser1及其內部文件的屬組和其它用戶均沒有任何訪問權限。 [root@loalhost ~]# (umask 077; cp -r /etc/skel /home/user1) 2、編輯/etc/group文件,…

    Linux干貨 2016-09-06
  • iptables入門到進階

    netfilter/iptables:        netfilter是存在于內核中的一個防火墻框架,用來管理網絡數據包,netfilter在IP數據包處理流程中的5個關鍵位置放置了5個鉤子(hook)函數,當數據包流經相應的位置時,相應的鉤子函數會被調用,每個對應的鉤子上有對應的表,表中有對應的…

    Linux干貨 2017-05-02
欧美性久久久久