keepalived整合lvs实现nginx高可用负载均衡
1.简介
LVS(Linux Virtual Server) 是Linux虚拟服务器,可以把多台服务器虚拟为一个虚拟IP,同时实现各种负载均衡算法
Keepalived是基于LVS,并与LVS高度融合的,监控LVS下所有真实服务器健康状态,并通过健康健康状态动态调整LVS的复杂均衡转发权重和规则
2,拓扑图
3,IP规划
名称 |
IP |
备注 |
VIP |
eth2:192.168.46.200/24 |
虚拟IP |
主调度器(director server ) |
eth2:192.168.46.131/24 | 负责lvs调度 |
辅调度器(director server ) |
eth2:192.168.46.132/24 | 负责lvs调度 |
真实服务器1 (Real Server ) |
eth2:192.168.46.133/24 | nginx服务器 |
真实服务器2 (Real Server ) |
eth2:192.168.46.134/24 | nginx服务器 |
4,安装lvs和keepalived包
这里不在介绍了,大家可以看看我的另外的两篇文章
1
2
|
http:
//wolfword.blog.51cto.com/blog/4892126/1218416
http:
//wolfword.blog.51cto.com/blog/4892126/1217585
|
5,配置keepalived
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
主调度器
192.168
.
46.131
上安装keepalived,辅助调度器
192.168
.
46.132
上安装keepalived,不需要在real server上安装keepalived
vim /etc/keepalived/keepalived.conf
global_defs {
notification_email {
root@localhost
}
notification_email_from root@localhost
smtp_server
127.0
.
0.1
smtp_connect_timeout
30
router_id LVS_DEVEL_131
}
vrrp_sync_group VG1 {
group {
VI_1
}
}
vrrp_instance VI_1 {
state MASTER
//辅助调度器为BACKUP
interface
eth2
virtual_router_id
51
priority
100
//辅助调度器为90
advert_int
1
authentication {
auth_type PASS
auth_pass
1111
}
virtual_ipaddress {
192.168
.
46.200
/
24
}
}
virtual_server
192.168
.
46.200
80
{
delay_loop
6
lb_algo rr
lb_kind DR
protocol TCP
real_server
192.168
.
46.133
80
{
weight
100
TCP_CHECK {
connect_timeout
3
nb_get_retry
3
delay_beforce_retry
3
connect_port
80
}
}
real_server
192.168
.
46.134
80
{
weight
100
TCP_CHECK {
connect_timeout
3
nb_get_retry
3
delay_beforce_retry
3
connect_port
80
}
}
}
|
6,配置lvs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
主辅调度器上的lvs脚本
#!/bin/bash
VIP=
192.168
.
46.200
RIP1=
192.168
.
46.133
RIP2=
192.168
.
46.134
case
"$1"
in
start)
echo
"start LVS of DirectorServer DR"
/sbin/iptables -F
/sbin/ipvsadm -C
/sbin/ifconfig eth2:
0
$VIP broadcast $VIP netmask
255.255
.
255.0
up
/sbin/ipvsadm -A -t $VIP:
80
-s rr
/sbin/ipvsadm -a -t $VIP:
80
-r $RIP1 -g
/sbin/ipvsadm -a -t $VIP:
80
-r $RIP2 -g
/sbin/ipvsadm
;;
stop)
echo
"stop LVS of DirectorServer DR"
echo
"0"
>/proc/sys/net/ipv4/ip_forward
/sbin/ipvsadm -C
/sbin/ifconfig eth2:
0
down
;;
*)
echo
"argements error"
;;
esac
真实服务器real server 上的lvs脚本
#!/bin/bash
#DR server
VIP=
192.168
.
46.200
case
"$1"
in
start)
echo
"start LVS of DR"
/sbin/ifconfig lo:
0
$VIP broadcast $VIP netmask
255.255
.
255.255
up
/sbin/route add -host $VIP dev lo:
0
echo
"1"
> /proc/sys/net/ipv4/conf/lo/arp_ignore
echo
"2"
> /proc/sys/net/ipv4/conf/lo/arp_announce
echo
"1"
> /proc/sys/net/ipv4/conf/all/arp_ignore
echo
"2"
> /proc/sys/net/ipv4/conf/all/arp_announce
;;
stop)
echo
"stop LVS of DR"
/sbin/ifconfig lo:
0
down
echo
"0"
> /proc/sys/net/ipv4/conf/lo/arp_ignore
echo
"0"
> /proc/sys/net/ipv4/conf/lo/arp_announce
echo
"0"
> /proc/sys/net/ipv4/conf/all/arp_ignore
echo
"0"
> /proc/sys/net/ipv4/conf/all/arp_announce
;;
*)
echo
"Usage:$0 {start|stop}"
esac
exit
1
|
7,日志讲解
1
2
3
4
5
6
7
8
|
Sep
30
20
:
50
:
24
test2 Keepalived_vrrp: Opening file
'/etc/keepalived/keepalived.conf'
.
Sep
30
20
:
50
:
24
test2 Keepalived_vrrp: Configuration
is
using :
65227
Bytes
Sep
30
20
:
50
:
24
test2 Keepalived_vrrp: Using LinkWatch kernel netlink reflector...
Sep
30
20
:
50
:
24
test2 Keepalived_vrrp: VRRP_Instance(VI_1) Entering BACKUP STATE
Sep
30
20
:
50
:
24
test2 Keepalived_vrrp: VRRP sockpool: [ifindex(
4
), proto(
112
), fd(
10
,
11
)]
Sep
30
20
:
51
:
50
test2 Keepalived_vrrp: VRRP_Instance(VI_1) Transition to MASTER STATE
Sep
30
20
:
51
:
50
test2 Keepalived_vrrp: VRRP_Group(VG1) Syncing instances to MASTER state
Sep
30
20
:
51
:
51
test2 Keepalived_vrrp: VRRP_Instance(VI_1) Entering MASTER STATE
|
8,功能测试
停掉主调度器keepalived服务,来看看辅助调度器上的日志
1
2
3
4
5
6
7
|
Oct
1
21
:
02
:
07
test2 avahi-daemon[
4276
]: Received response from host
192.168
.
139.1
with
invalid source port
56132
on
interface
'eth1.0'
Oct
1
21
:
02
:
09
test2 avahi-daemon[
4276
]: Received response from host
192.168
.
139.1
with
invalid source port
56132
on
interface
'eth1.0'
Oct
1
21
:
02
:
09
test2 Keepalived_vrrp: VRRP_Instance(VI_1) Transition to MASTER STATE
Oct
1
21
:
02
:
10
test2 Keepalived_vrrp: VRRP_Instance(VI_1) Entering MASTER STATE
Oct
1
21
:
02
:
10
test2 Keepalived_vrrp: VRRP_Instance(VI_1) setting protocol VIPs.
Oct
1
21
:
02
:
10
test2 Keepalived_vrrp: VRRP_Instance(VI_1) Sending gratuitous ARPs on eth2
for
192.168
.
46.200
Oct
1
21
:
02
:
11
test2 avahi-daemon[
4276
]: Received response from host
192.168
.
139.1
with
invalid source port
56132
on
interface
'eth1.0'
|
本文转自陈仲阳0 51CTO博客,原文链接:http://blog.51cto.com/wolfword/1219346