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


















猜你喜欢

转载自yangchunhe.iteye.com/blog/1757197