环境介绍
操作系统:CentOS6.5_x64 mini
负载均衡模式:DR(直接路由)
LVS与Keepalived简述:
LVS是 Virtual Server的简写,意即虚拟服务器,是一个虚拟的服务器集群系统。使用集群技术和Linux操作系统实现一个高性能、高可用的服务器,很好的可伸缩性、可靠性和管理性。
LVS集群采用IP负载均衡技术和基于内容请求分发技术。调度器具有很好的吞吐率,将请求均衡地转移到不同的服务器上执行,且调度器自动屏蔽掉服务器的故障,从而将一组服务器构成一个高性能的、高可用的虚拟服务器。
Keepalived采用VRRP(virtual router redundancy protocol,虚拟路由冗余协议)热备份协议,以软件的方式实现linux服务器的多机热备功能。VRRP是针对的一种备份解决方案-----由多台组成一个热备组。通过共用的虚拟IP地址对外提供服务;每个热备组内同一时刻只有一台主服务器提供服务,其他服务器处于冗余状态,若当前在线的服务器失败,其他服务器会自动接替(优先级决定接替顺序)虚拟IP地址,以继续提供服务。
一、配置主从LVS服务器
安装依赖包:
1.
[root@localhost
~]
#
yum install-y gcc gcc-c++ makepcre pcre-devel kernel-devel openssl-devel libnl-devel popt-devel
1、检查linux内核是否集成lvs模块:modprobe -l | grep ipvs
2、开启路由转发功能:echo "1">/proc/sys/net/ipv4/ip_forward
3、安装ipvsadm
1.
wget
tar
.gz
2.
tar
zxvf
ipvsadm-1.26.
tar
.gz
3.
cd
ipvsadm-1.26
4.
make
&&
make
install
4、安装keepalived
1.
wget
tar
.gz
2.
tar
zxvf
keepalived-1.2.7.
tar
.gz
3.
cd
keepalived-1.2.7
4.
./configure--prefix=/usr/
local
/keepalived
5.
make
&&
make
install
将keepalived配置成系统服务
1.
cp
/usr/
local
/keepalived/etc/rc.d/init.d/keepalived/etc/init.d/
2.
cp
/usr/
local
/keepalived/etc/sysconfig/keepalived/etc/sysconfig/
3.
mkdir
/etc/keepalived/
4.
cp
/usr/
local
/keepalived/etc/keepalived/keepalived.conf
/etc/keepalived/
5.
cp
/usr/
local
/keepalived/sbin/keepalived/usr/sbin/
5、修改主keepalived配置文件(备只修改router_id、state和priority)
01.
[root@localhost
~]
#
vi /etc/keepalived/keepalived.conf
02.
!
Configuration File forkeepalived
03.
global_defs
{
04.
notification_email
{
05.
test
@sina.com
#故障接受联系人
06.
}
07.
notification_email_from
admin@
test
.com
#故障发送人
08.
smtp_server
127.0.0.1
#本机发送邮件
09.
smtp_connect_timeout
30
10.
router_id
LVS_MASTER
#BACKUP上修改为LVS_BACKUP
11.
}
12.
vrrp_instance
VI_1 {
13.
state
MASTER
#BACKUP上修改为BACKUP
14.
interface
eth0
15.
virtual_router_id
51
#虚拟路由标识,主从相同
16.
priority
100
#BACKUP上修改为90
17.
advert_int
1
18.
authentication
{
19.
auth_type
PASS
20.
auth_pass
1111
#主从认证密码必须一致
21.
}
22.
virtual_ipaddress
{
#web虚拟IP(VTP)
23.
172.0.0.10
24.
}
25.
}
26.
virtual_server
172.0.0.10 80 {
#定义虚拟IP和端口
27.
delay_loop
6
#检查真实服务器时间,单位秒
28.
lb_algo
rr
#设置负载调度算法,rr为轮训
29.
lb_kind
DR
#设置LVS负载均衡DR模式
30.
persistence_timeout
50
#同一IP的连接60秒内被分配到同一台真实服务器
31.
protocol
TCP
#使用TCP协议检查realserver状态
32.
real_server
172.0.0.13 80 {
#第一个web服务器
33.
weight
3
#节点权重值
34.
TCP_CHECK
{
#健康检查方式
35.
connect_timeout
3
#连接超时
36.
nb_get_retry
3
#重试次数
37.
delay_before_retry
3
#重试间隔/S
38.
}
39.
}
40.
real_server
172.0.0.14 80 {
#第二个web服务器
41.
weight
3
42.
TCP_CHECK
{
43.
connect_timeout
3
44.
nb_get_retry
3
45.
delay_before_retry
3
46.
}
47.
}
48.
}
49.
[root@localhost
~]
#
service keepalived restart #启动keepalived
二、分别在两台Web服务器编写脚本并启动
01.
[root@localhost
~]
#
vi /etc/init.d/real.sh
02.
#description
: start realserver
03.
VIP=172.0.0.10
04.
.
/etc/init.d/functions
05.
case
"$1"
in
06.
start)
07.
/sbin/
ifconfig
lo:0
$VIP broadcast $VIP netmask 255.255.255.255 up
08.
echo
"1"
&
gt
;/proc/sys/net/ipv4/conf/lo/arp_ignore
09.
echo
"2"
&
gt
;/proc/sys/net/ipv4/conf/lo/arp_announce
10.
echo
"1"
&
gt
;/proc/sys/net/ipv4/conf/all/arp_ignore
11.
echo
"2"
&
gt
;/proc/sys/net/ipv4/conf/all/arp_announce
12.
echo
"LVS
RealServer Start OK"
13.
;;
14.
stop)
15.
/sbin/
ifconfig
lo:0
down
16.
echo
"0"
&
gt
;/proc/sys/net/ipv4/conf/lo/arp_ignore
17.
echo
"0"
&
gt
;/proc/sys/net/ipv4/conf/lo/arp_announce
18.
echo
"0"
&
gt
;/proc/sys/net/ipv4/conf/all/arp_ignore
19.
echo
"0"
&
gt
;/proc/sys/net/ipv4/conf/all/arp_announce
20.
echo
"LVS
RealServer Stoped OK"
21.
;;
22.
*)
23.
echo
"Usage:
$0 {start|stop}"
24.
exit
1
25.
esac
1.
[root@localhost
~]
#
chmod +x /etc/init.d/real.sh
2.
[root@localhost
~]
#
/etc/init.d/real.sh start
3.
LVS
RealServer Start OK
4.
[root@localhost
~]
#
echo "/etc/init.d/real.sh start" >> /etc/rc.local
1.
[root@localhost
~]
#
service httpd start
2.
[root@localhost
~]
#
echo “192.168.0.30″ > /var/www/html/index.html
3.
[root@localhost
~]
#
echo “192.168.0.40″ > /var/www/html/index.html
4.
[root@localhost
~]
#
service iptables stop #关闭防火墙
5.
[root@localhost
~]
#
setenforce 0 #临时关闭selinux
三、测试及常用命令
http://172.0.0.10 #访问一直刷新会轮训显示172.0.0.11/12
模拟宕掉主LVS,服务器照常工作,再宕掉Web1,这时只会显示Web2,这样就实现ip负载均衡,高可用集群。当主LVS恢复后,会切换成主动服务器,如果Keepalived监控模块检测web故障恢复后,恢复的主机又将此节点加入集群系统中。
常用命令:
[root@localhost ~]# ipvsadm -ln #显示集群中服务器ip信息
[root@localhost ~]# ip addr #显示VTP绑定在哪个服务器上
[root@localhost ~]# tail -f /var/log/messger
(从日志中可知,主机出现故障后,备机立刻检测到,此时备机变为MASTER角色,并且接管了主机的虚拟IP资源,最后将虚拟IP绑定在etho设备上)
来源: http://lib.csdn.net/article/linux/37783