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
02
|
net.ipv4.ip_forward = 1 # 此参数改为1
|
__________________________________________________________________________________________
yum -y instll kernel-devel
yum -y install gcc gcc-c++
yum -y instll openssl openssl-devel
__________________________________________________________________________________________
然后开始安装keepalived
08
|
tar -zxvf keepalived-1.1.19.tar.gz
|
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 {
}
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 关掉时候服务器会移除
成功