Lvs-keepalived-安装配置

Lvs-keepalived-安装配置

实验

主机 软件 IP
vip 192.168.8.209
lvs1 lvs+keepalived 192.168.8.201
lvs2 lvs+keepalived 192.168.8.202
nginx1 nginx 192.168.8.203
nginx2 nginx 192.168.8.204

lvs和keepalived安装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
## 安装lvs管理工具ipvsadm
yum install -y gcc openssl openssl-devel ipvsadm

## keepalived 编译安装
./configure --prefix=/usr/local/keepalived
make && make install

## keepalived 注册服务 & 开机启动
cp /soft/keepalived-2.0.20/keepalived/etc/init.d/keepalived /etc/init.d/
cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
mkdir -p /etc/keepalived/
cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
cp /usr/local/keepalived/sbin/keepalived /usr/sbin

systemctl enable keepalived
systemctl restart keepalived

lvs1(主机)配置

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
cat /etc/keepalived/keepalived.conf

! Configuration File for keepalived
global_defs {
notification_email {
#xxxx@itcast.com # 发生故障时发送的邮箱
}
#notification_email_from xxxx@itcast.com # 使用哪个邮箱发送
#smtp_server xxx.com # 发件服务器
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_instance VI_1 {
state MASTER # 标示为主lvs
interface ens33 # HA检测端口
virtual_router_id 66 # 主备的virtual_router_id 必须相同
priority 100 # 优先级,备lvs要比主lvs稍小
advert_int 1 # VRRP Multicast 广播周期秒数
authentication { # 定义认证
auth_type PASS # 认证方式为口令认证
auth_pass 6666 # 定义口令
}
virtual_ipaddress { # 定义vip
192.168.3.209 # 多个vip可换行添加
}
}
virtual_server 192.168.3.209 80 {
delay_loop 6 # 每隔6秒查看realserver状态
lb_algo wlc # 调度算法为加权最小连接数
lb_kind DR # lvs工作模式为DR(直接路由)模式
nat_mask 255.255.255.0
persistence_timeout 50 # 同一IP 的连接50秒内被分配到同一台realserver(测试时建议改为0)
protocol TCP # 用TCP监测realserver的状态
real_server 192.168.3.203 80 { # 定义realserver
weight 3 # 定义权重
TCP_CHECK { # 注意TCP_CHECK和{之间的空格,如果没有的话只会添加第一个realserver
connect_timeout 3 # 三秒无响应超时
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
real_server 192.168.3.204 80 {
weight 3
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}

lvs2(备机)配置

配置和主机相同,唯一区别是priority的值要少于主机

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
cat /etc/keepalived/keepalived.conf

! Configuration File for keepalived
global_defs {
notification_email {
#xxxx@itcast.com # 发生故障时发送的邮箱
}
#notification_email_from xxxx@itcast.com # 使用哪个邮箱发送
#smtp_server xxx.com # 发件服务器
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_instance VI_1 {
state BACKUP # 标示为主lvs
interface ens33 # HA检测端口
virtual_router_id 66 # 主备的virtual_router_id 必须相同
priority 99 # 优先级,备lvs要比主lvs稍小
advert_int 1 # VRRP Multicast 广播周期秒数
authentication { # 定义认证
auth_type PASS # 认证方式为口令认证
auth_pass 6666 # 定义口令
}
virtual_ipaddress { # 定义vip
192.168.3.209 # 多个vip可换行添加
}
}
virtual_server 192.168.3.209 80 {
delay_loop 6 # 每隔6秒查看realserver状态
lb_algo wlc # 调度算法为加权最小连接数
lb_kind DR # lvs工作模式为DR(直接路由)模式
nat_mask 255.255.255.0
persistence_timeout 50 # 同一IP 的连接50秒内被分配到同一台realserver(测试时建议改为0)
protocol TCP # 用TCP监测realserver的状态
real_server 192.168.3.203 80 { # 定义realserver
weight 3 # 定义权重
TCP_CHECK { # 注意TCP_CHECK和{之间的空格,如果没有的话只会添加第一个realserver
connect_timeout 3 # 三秒无响应超时
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
real_server 192.168.3.204 80 {
weight 3
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}

lvs配置

将lvs启动配置成服务,随开机启动(lvs1、lvs2都需配置)

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
vi /etc/init.d/lvs_dr_rs

#!/bin/sh
#chkconfig:345 85 15
#description:lvs_dr_rs
VIP=192.168.3.209
. /etc/rc.d/init.d/functions
case $1 in
start)
echo "lo:0 port starting"
ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up
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 "lo:0 port closing"
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}"
exit 1
esac
chmod u+x /etc/init.d/lvs_dr_rs

systemctl enable lvs_dr_rs
systemctl start lvs_dr_rs