天天看點

keepalived + nginx實作負載均衡

keepalived + nginx 實作負載均衡

keepalived 用途 

keepalived是一個類似于layer3, 4 & 5交換機制的軟體,也就是我們平時說的第3層、第4層和第5層交換。

Keepalived的作用是檢測web伺服器的狀态,如果有一台web伺服器當機,或工作出現故障,Keepalived将檢測到,

并将有故障的web伺服器從系統中剔除,當web伺服器工作正常後Keepalived自動将web伺服器加入到伺服器群中,

這些工作全部自動完成,不需要人工幹涉,需要人工做的隻是修複故障的web伺服器

環境說明:centos6

192.168.1.102(keepalived ==> nginx)  master

192.168.1.132(keepalived ==> nginx)  slave

192.168.1.100 虛拟ip

102安裝如下:

首先安裝keepalived

下載下傳位址:http://www.keepalived.org/download.html

Keepalived for Linux - Version 1.2.7 - August 29, 2012

下載下傳到檔案:keepalived-1.2.7.tar.gz

1.tar -xzvf keepalived-1.2.7.tar.gz

2.

cd keepalived-1.2.7

./configure --prefix=/home/soft/keepalived

錯誤1:

configure: error:

  !!! OpenSSL is not properly installed on your system. !!!

  !!! Can not include OpenSSL headers files.            !!!

解決:yum -y install openssl-devel

錯誤2:

configure: error: Popt libraries is required

解決:yum install popt-devel

如果編譯成功:

Keepalived configuration

------------------------

Keepalived version       : 1.2.7

Compiler                 : gcc

Compiler flags           : -g -O2

Extra Lib                : -lpopt -lssl -lcrypto

Use IPVS Framework       : Yes

IPVS sync daemon support : Yes

IPVS use libnl           : No

Use VRRP Framework       : Yes

Use VRRP VMAC            : Yes

SNMP support             : No

Use Debug flags          : No

make

提示:

Make complete

make[1]: Leaving directory `/home/soft/source/keepalived-1.2.7/genhash'

make install

3. 配置keepalived

cp /home/soft/keepalived/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/

cp /home/soft/keepalived/etc/sysconfig/keepalived /etc/sysconfig/

mkdir /etc/keepalived

cp /home/soft/keepalived/sbin/keepalived /usr/sbin/

vi /etc/keepalived/keepalived.conf

global_defs {

   notification_email {

      [email protected]

   }

   notification_email_from [email protected]

   smtp_server smtp.163.com

  # smtp_connect_timeout 30

   router_id LVS_DEVEL

}

# VIP1

vrrp_instance VI_1 {

    state MASTER             #備份伺服器上将MASTER改為BACKUP

    interface eth0

    lvs_sync_daemon_inteface eth0

    virtual_router_id 51

    priority 100    # 備份服務上将100改為90

    advert_int 5

    authentication {

        auth_type PASS

        auth_pass 1111

    }

    virtual_ipaddress {

        192.168.1.102

        #(如果有多個VIP,繼續換行填寫.)

    }

}

virtual_server 192.168.1.102 80 {

    delay_loop 6                  #(每隔10秒查詢realserver狀态)

    lb_algo wlc                  #(lvs 算法)

    lb_kind DR                  #(Direct Route)

    persistence_timeout 60        #(同一IP的連接配接60秒内被配置設定到同一台realserver)

    protocol TCP                #(用TCP協定檢查realserver狀态)

    real_server 192.168.1.132 80 {

        weight 100               #(權重)

        TCP_CHECK {

        connect_timeout 10       #(10秒無響應逾時)

        nb_get_retry 3

        delay_before_retry 3

        connect_port 80

        }

    }

    real_server 192.168.1.133 80 {

        weight 100

        TCP_CHECK {

        connect_timeout 10

        nb_get_retry 3

        delay_before_retry 3

        connect_port 80

        }

     }

}

4.service keepalived start|stop

5.啟動keepalived!,檢視虛拟IP是否綁定!

ip addr

6.nginx源碼安裝    看 nginx/nginx源碼安裝.txt

102配置完成

--------------------------------------

下面配置132

安裝keepalived 如上:

vi /etc/keepalived/keepalived.conf  這裡有變動,具體内容如下:

global_defs {

   notification_email {

      [email protected]

   }

   notification_email_from [email protected]

   smtp_server smtp.163.com

  # smtp_connect_timeout 30

   router_id LVS_DEVEL_2

}

# VIP1

vrrp_instance VI_1 {

    state BACKUP             #備份伺服器上将MASTER改為BACKUP

    interface eth0

    lvs_sync_daemon_inteface eth0

    virtual_router_id 51

    priority 90    # 備份服務上将100改為90

    advert_int 5

    authentication {

        auth_type PASS

        auth_pass 1111

    }

    virtual_ipaddress {

        192.168.1.100

        #(如果有多個VIP,繼續換行填寫.)

    }

}

virtual_server 192.168.1.100 80 {

    delay_loop 6                  #(每隔10秒查詢realserver狀态)

    lb_algo wlc                  #(lvs 算法)

    lb_kind DR                  #(Direct Route)

    persistence_timeout 60        #(同一IP的連接配接60秒内被配置設定到同一台realserver)

    protocol TCP                #(用TCP協定檢查realserver狀态)

    real_server 192.168.1.102 80 {

        weight 100               #(權重)

        TCP_CHECK {

        connect_timeout 10       #(10秒無響應逾時)

        nb_get_retry 3

        delay_before_retry 3

        connect_port 80

        }

    }

    real_server 192.168.1.132 80 {

        weight 100

        TCP_CHECK {

        connect_timeout 10

        nb_get_retry 3

        delay_before_retry 3

        connect_port 80

        }

     }

}

同樣安裝nginx

--------------------------

測試:102上執行 service keepalived stop

檢測132是否接替任務

繼續閱讀