天天看点

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是否接替任务

继续阅读