lvs+keepalived实现高可用群集配置详解
lvs有三种工作模式NAT(地址转换),IP Tunneling(IP隧道)、Direct Routing(直接路由)。
工作效率最低的是NAT模式,但NAT模式可以用于各种系统,各种环境的负载均衡,只需要一个公网ip即可实现
IP Tunneling模式调度器将连接分发到不同的后端real server,然后由real server处理请求直接相应给用户,大大提高了调度器的调度效率,后端real server没有物理位置和逻辑关系的限制,后端real server可以在Lan/Wlan,但是后端real server必须支持IP隧道协议.
DR(Direct Routing)是效率最高的,与IP Tunneling类似,都是处理一般连接,将请求给后端real server,然后由real server处理请求直接相应给用户,Direct Routing与IP Tunneling相比,没有IP封装的开销,但由于采用物理层,所以DR模式的调度器和后端real server必须在一个物理网段里,中间不能过路由器(也就是一个交换机相连).

lvs支持8种不同的调度算法轮叫(rr)、加权轮叫(wrr)、最小连接(lc)、加权最小连接(wlc)、基于局部性最小连接(lblc)、带复制的基于局部性最少链接(lblcr)、目标地址散列(dh)和源地址散列(sh).
下面就介绍如何来安装和配置lvs+keepalived
本文使用环境:
操作系统:CentOS 5.4  32bit
vip(virtual ip):192.168.1.180
主调度器:192.168.1.50/24   eth1 10.10.10.10
备调度器:192.168.1.60/24    eth1  10.10.10.20
后端real server: 192.168.1.200/24    192.168.1.250/24
首先配置ip save和master 机器均为双网
yum -y install ipvsadm
我们查看lvs是否支持: modprobe -l| grep ip_vs
01
vi /etc/sysctl.conf
02
net.ipv4.ip_forward = 1 # 此参数改为1
03
sysctl -p # 使修改生效
__________________________________________________________________________________________
 
yum -y instll kernel-devel   
yum -y install gcc gcc-c++ 
yum -y instll openssl openssl-devel
__________________________________________________________________________________________
 
然后开始安装keepalived
 
# 下载并安装keepalived
07
08
tar -zxvf keepalived-1.1.19.tar.gz
09
cd keepalived-1.1.19
10
./configure --prefix=/ \            # 安装在默认位置(配置文件,二进制文件,启动脚本放到默认位置)
11
--mandir=/usr/local/share/man/ \
make && make install
 
ipvsadm设置好后开始配置 keepalived
 
#!/bin/bash
VIP=192.168.2.10
/sbin/ifconfig eth0:0 $VIP broadcast $VIP netmask 255.255.255.255 up
/sbin/route add -host $VIP dev eth0:0
脚本写入
____________________________________________________________________________________________
 
vi/etc/keepalived/keepalived.conf
 
! Configuration File for keepalived
global_defs {
   notification_email {
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}
vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.1.180
    }
}
virtual_server 192.168.1.180 80 {
    delay_loop 6
    lb_algo rr
    lb_kind NAT
    nat_mask 255.255.255.0
    persistence_timeout 50
    protocol TCP
    real_server 192.168.1.200 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
     connect_port 80
        }
    }
    real_server 192.168.1.250 80 {
        weight 1
           TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
     connect_port 80
        }
    }
}
重启keepalived 即可
可以查看tail -f /var/log/message 查看
 

 
 
当 把 web1 关掉时候服务器会移除
 

 
 
成功