雙主模型的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
下一篇 2017-05-13

相關推薦

  • LInux用戶和組管理詳解

    一、用戶和組的概念 Linux系統是多任務、多用戶的分時操作系統。用戶要使用系統資源,需要向管理員驗證身份,由管理員進行認證和授權,并對用戶的行為進行追蹤和審計,以保障系統資源的合理分配以及系統的安全。 要達到賬號管理的目的,需要對用戶和用戶組進行管理。下面分別來介紹用戶管理和用戶組管理。 每個用戶都有唯一的一個編號來標識,這個標識號叫Uid,每個用戶至少屬…

    Linux干貨 2016-08-02
  • 密碼保護:ansible書籍部分目錄

    無法提供摘要。這是一篇受保護的文章。

    Linux干貨 2015-12-14
  • Linux之進程和計劃任務

    進程的概念     內核的功用:進程管理、文件系統、網絡功能、內存管理、驅動程序、 安全功能等     Process: 運行中的程序的一個副本,是被載入內存的一個指令集合進程ID(Process ID,PID)號碼被用來標記各個進程    &nbs…

    Linux干貨 2016-10-09
  • 馬哥教育網絡班21期+第八周課程練習

    1、請描述網橋、集線器、二層交換機、三層交換機、路由器的功能、使用場景與區別。 網橋:也叫做橋接器,工作在OSI七層中第二層數據鏈路層,主要是用來連接兩個局域網的一種存儲或者轉發設備,它能將一個大的LAN分隔      為多個網段,也可以將多個LAN互聯為一個邏輯LAN,網橋是在數據層上實現的局域網互聯;即使…

    Linux干貨 2016-09-08
  • 20160808課堂練習(sed工具)

    練習: 1、  刪除/etc/grub2.conf文件中所有以空白開頭的行行首的空白字符 # sed 's@^[[:space:]]\+@@' /etc/grub2.cfg                    2、刪除/etc/…

    Linux干貨 2016-08-10
  • DNS轉發、ACL以及VIEW

    DNS全稱是Domain Name System的簡稱,即域名系統。因特網上作為域名和IP地址相互映射的一個分布式數據庫,能夠使用戶更方便的訪問互聯網,而不用去記住能夠被機器直接讀取的IP數串。通過主機名,最終得到該主機名對應的IP地址的過程叫做域名解析(或主機名解析)。DNS協議運行在UDP/TCP協議之上,使用端口號53。 DNS轉發、ACL以及VIEW…

    Linux干貨 2016-12-08
欧美性久久久久