小知识:Linux利用keepalived实现lvs的高可用性的操作方法

lvs+keepalived是什么?

keepalived工作原理

keepalived是集群管理中保证集群高可用的一个服务软件,其功能类似于heartbeat,用来防止单点故障。 keepalived是以vrrp协议为实现基础的,vrrp全称virtual router redundancy protocol,即虚拟路由冗余协议。 虚拟路由冗余协议,可以认为是实现路由器高可用的协议,即将n台提供相同功能的路由器组成一个路由器组,这个组里面有一个master和多个backup,master上面有一个对外提供服务的vip(该路由器所在局域网内其他机器的默认路由为该vip),master会发组播,当backup收不到vrrp包时就认为master宕掉了,这时就需要根据vrrp的优先级来选举一个backup当master。这样的话就可以保证路由器的高可用了。

 lvs简介

lvs是linux virtual server的简写,意即linux虚拟服务器,是一个虚拟的服务器集群系统。本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一。目前有三种ip负载均衡技术(vs/nat、vs/tun和vs/dr),十种调度算法。

本文重点给大家介绍linux利用keepalived实现lvs的高可用性的操作方法,感兴趣的朋友参考下吧。

%小知识:Linux利用keepalived实现lvs的高可用性的操作方法-猿站网-插图

单主模型ipvs示例

配置keepalive

高可用的ipvs集群示例:修改keepalived配置文件

修改主机:192.168.234.27的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
55
56
57
[root@234c27 ~]# vim /etc/keepalived/keepalived.conf
! configuration file for keepalived
global_defs {
notification_email {
root@localhost //接受邮件地址
}
notification_email_from keepalived@localhost //发送邮件地址
smtp_server 127.0.0.1 //发送邮件服务器ip
smtp_connect_timeout 30 //邮件连接超时时长
router_id kptwo //路由id
vrrp _mcast_group4 234.10.10.10 //指定vrrp协议的多播地址
}
vrrp_instance vi_1 { //vrrp协议的
state master //lvs的master服务器
interface ens37 //
virtual_router_id 50 //虚拟路由
priority 100 //权重为100.越大越先
advert_int 1 //发送组博包的间隔
authentication { //验证
auth_type pass //方式为pass( 明文)
auth_pass 1111 //密码
}
virtual_ipaddress { //keepalived虚拟ip
10.0.0.100/24
}
}
virtual_server 10.0.0.100 80 {
delay_loop 6 //检查后端服务器的时间间隔
lb_algo wrr //定义调度方法
lb_kind dr //集群的类型
#persistence_timeout 50 //持久连接时长
protocol tcp //服务协议,仅支持tcp
real_server 192.168.234.47 80 { //后端real_server服务器地址
weight 1 //权重
http_get { //应用层检测
url {
path / //定义要监控的url
status_code 200 //判断上述检测机制为健康状态的响应码
}
connect_timeout 3 //连接请求的超时时长
nb_get_retry 3 //重试次数
delay_before_retry 3 //重试之前的延迟时长
}
}
real_server 192.168.234.57 80 {
weight 2
http_get {
url {
path /
status_code 200
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}

修改主机:192.168.234.37的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
55
56
57
58
[root@234c37 ~]# vim /etc/keepalived/keepalived.conf
! configuration file for keepalived
global_defs {
notification_email {
root@localhost
}
notification_email_from keepalived@localhost
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id kptwo
vrrp _mcast_group4 234.10.10.10
}
vrrp_instance vi_1 {
state backup
interface ens37
virtual_router_id 50
priority 80
advert_int 1
authentication {
auth_type pass
auth_pass 1111
}
virtual_ipaddress {
10.0.0.100/24
}
}
virtual_server 10.0.0.100 80 {
delay_loop 6
lb_algo wrr
lb_kind dr
#persistence_timeout 50
protocol tcp
sorry_server 127.0.0.1:80
real_server 192.168.234.47 80 {
weight 1
http_get {
url {
path /
status_code 200
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
real_server 192.168.234.57 80 {
weight 2
http_get {
url {
path /
status_code 200
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}

查看keepalived

?
1
2
3
4
5
6
7
8
9
10
[root@234c37 ~]# systemctl status keepalived
● keepalived.service – lvs and vrrp high availability monitor
loaded: loaded (/usr/lib/systemd/system/keepalived.service; disabled; vendor preset: disabled)
active: inactive (dead)
…………
[root@234c37 ~]# ipvsadm -ln
ip virtual server version 1.2.1 (size=4096)
prot localaddress:port scheduler flags
-> remoteaddress:port   forward weight activeconn inactconn
//暂无ipvsadm

启动服务

%小知识:Linux利用keepalived实现lvs的高可用性的操作方法-1猿站网-插图

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[root@234c27 keepalived]# systemctl start keepalived.service
[root@234c27 keepalived]# systemctl status keepalived.service
● keepalived.service – lvs and vrrp high availability monitor
loaded: loaded (/usr/lib/systemd/system/keepalived.service; disabled; vendor preset: disabled)
active: active (running) since fri 2018-08-31 20:30:02 cst; 12s ago
process: 9657 execstart=/usr/sbin/keepalived $keepalived_options (code=exited, status=0/success)
main pid: 9658 (keepalived)
………………
[root@234c27 keepalived]# ipvsadm -ln
ip virtual server version 1.2.1 (size=4096)
prot localaddress:port scheduler flags
-> remoteaddress:port   forward weight activeconn inactconn
tcp 10.0.0.100:80 wrr
-> 192.168.234.47:80   route 1  0   0
-> 192.168.234.57:80   route 2  0   0
//启动服务lvs vs已配置好

后端real_server准备

增加ip在网卡上 修改限制arp通告及应答级别 rs1 rs2都做,网关并指向路由

?
1
2
3
4
5
6
ip a a 10.0.0.100/32 dev ens37
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
route add default gw 192.168.234.17

安装httpd服务 写好网页文件

启动服务

image

多主模型ipvs示例

%小知识:Linux利用keepalived实现lvs的高可用性的操作方法-2猿站网-插图

配置keepalive

高可用的ipvs集群示例:修改keepalived配置文件

修改主机:192.168.234.27的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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
[root@234c27 keepalived]# vim /etc/keepalived/keepalived.conf
global_defs {
notification_email {
root@localhost
}
notification_email_from keepalived@localhost
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id kpone
vrrp _mcast_group4 234.10.10.10
}
vrrp_instance vi_1 {
state master
interface ens37
virtual_router_id 50
priority 100
advert_int 1
authentication {
auth_type pass
auth_pass 1111
}
virtual_ipaddress {
10.0.0.100/24
}
}
vrrp_instance vi_2 {
state backup
interface ens37
virtual_router_id 51
priority 80
advert_int 1
authentication {
auth_type pass
auth_pass 2222
}
virtual_ipaddress {
10.0.0.200/24
}
}
virtual_server 10.0.0.100 80 {
delay_loop 6
lb_algo wrr
lb_kind dr
#persistence_timeout 50
protocol tcp
#sorry_server 127.0.0.1:80
real_server 192.168.234.47 80 {
weight 1
http_get {
url {
path /
status_code 200
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
virtual_server 10.0.0.200 80 {
delay_loop 6
lb_algo wrr
lb_kind dr
#persistence_timeout 50
protocol tcp
#sorry_server 127.0.0.1:80
real_server 192.168.234.57 80 {
weight 1
http_get {
url {
path /
status_code 200
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}

修改主机:192.168.234.37的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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
[root@234c37 ~]# vim /etc/keepalived/keepalived.conf
! configuration file for keepalived
global_defs {
notification_email {
root@localhost
}
notification_email_from keepalived@localhost
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id kptwo
vrrp _mcast_group4 234.10.10.10
}
vrrp_instance vi_1 {
state backup
interface ens37
virtual_router_id 50
priority 80
advert_int 1
authentication {
auth_type pass
auth_pass 1111
}
virtual_ipaddress {
10.0.0.100/24
}
}
vrrp_instance vi_2 {
state master
interface ens37
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type pass
auth_pass 2222
}
virtual_ipaddress {
10.0.0.200/24
}
}
virtual_server 10.0.0.100 80 {
delay_loop 6
lb_algo wrr
lb_kind dr
#persistence_timeout 50
protocol tcp
#sorry_server 127.0.0.1:80
real_server 192.168.234.47 80 {
weight 1
http_get {
url {
path /
status_code 200
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
virtual_server 10.0.0.200 80 {
delay_loop 6
lb_algo wrr
lb_kind dr
#persistence_timeout 50
protocol tcp
#sorry_server 127.0.0.1:80
real_server 192.168.234.57 80 {
weight 1
http_get {
url {
path /
status_code 200
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}

让10.0.0.100的ip优先分配至192.168.234.47 192.168.234.57备用

让10.0.0.200的ip优先分配至192.168.234.57 192.168.234.47备用

后端real_server准备

修改192.168.234.57的vip为10.0.0.200/32

?
1
2
3
4
5
6
7
8
[root@234c27 keepalived]# ipvsadm -ln
ip virtual server version 1.2.1 (size=4096)
prot localaddress:port scheduler flags
-> remoteaddress:port      forward weight activeconn inactconn
tcp 10.0.0.100:80 wrr
-> 192.168.234.47:80      route  1   0     0
tcp 10.0.0.200:80 wrr
-> 192.168.234.57:80      route  1   0     0

现在宕掉一个lvs

%小知识:Linux利用keepalived实现lvs的高可用性的操作方法-3猿站网-插图

?
1
2
3
4
5
[root@234c27 keepalived]# systemctl stop keepalived.service
[root@234c27 keepalived]# ipvsadm -ln
ip virtual server version 1.2.1 (size=4096)
prot localaddress:port scheduler flags
-> remoteaddress:port      forward weight activeconn inactconn

依然提供服务

%小知识:Linux利用keepalived实现lvs的高可用性的操作方法-4猿站网-插图

?
1
2
3
4
5
6
7
8
[root@234c37 ~]# ipvsadm -ln
ip virtual server version 1.2.1 (size=4096)
prot localaddress:port scheduler flags
-> remoteaddress:port      forward weight activeconn inactconn
tcp 10.0.0.100:80 wrr
-> 192.168.234.47:80      route  1   0     21
tcp 10.0.0.200:80 wrr
-> 192.168.234.57:80      route  1   0     39

后一个实现基于前一个的基础上修改来的

假设要实现sorry_server

1.把rs服务都停掉。然后在lvs上安装apache或者nginx服务

2.将keepalived配置文件中的

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
virtual_server 10.0.0.200 80 {
delay_loop 6
lb_algo wrr
lb_kind dr
#persistence_timeout 50
protocol tcp
#sorry_server 127.0.0.1:80 //这一行来修改 写出服务出错之后的页面
real_server 192.168.234.57 80 {
weight 1
http_get {
url {
path /
status_code 200
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}

原文链接:https://www.cnblogs.com/OrochWang/archive/2018/08/31/9568225.html

声明: 猿站网有关资源均来自网络搜集与网友提供,任何涉及商业盈利目的的均不得使用,否则产生的一切后果将由您自己承担! 本平台资源仅供个人学习交流、测试使用 所有内容请在下载后24小时内删除,制止非法恶意传播,不对任何下载或转载者造成的危害负任何法律责任!也请大家支持、购置正版! 。本站一律禁止以任何方式发布或转载任何违法的相关信息访客发现请向站长举报,会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。本网站的资源部分来源于网络,如有侵权烦请发送邮件至:2697268773@qq.com进行处理。
建站知识

小知识:linux/OSX中“DD”命令制作ISO镜像操作系统安装U盘的方法

2023-3-23 5:31:59

建站知识

小知识:Linux下memcache编译安装与基本使用教程

2023-3-23 5:48:40

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索