构建Keepalived高可用集群

本文涉及的产品
传统型负载均衡 CLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月750个小时 15LCU
EMR Serverless StarRocks,5000CU*H 48000GB*H
简介: Keepalived的作用是检测服务器的状态,如果有一台web服务器宕机或工作出现故障,Keepalived将检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替该服务器的工作,当服务器工作正常后Keepalived自动将服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的服务器.

Keepalived的作用是检测服务器的状态,如果有一台web服务器宕机或工作出现故障,Keepalived将检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替该服务器的工作,当服务器工作正常后Keepalived自动将服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的服务器.

高可用集群(HA High Availability Cluster)

作用:最大限度的保证用户的应用程序持久,不间断的提供服务.(实现故障转移)

高可用性(HA High Availablity)是指通过尽量缩短系统停机时间(因日常的维护操作或突发的系统崩溃等),以提高系统和应用的可用性.

高可用集群最少是2个节点做出的HA集群,有很多通俗不科学的名称,比如 "双机热备","双机互备",这样做的好处是当服务启动的时候,两台服务器一个作主(mast),另外一个作从(ser),测试机每几秒会ping主机当发现主机没有回应,就证明主机拓机了,那么从机马上会启动相应的服务,继续进行服务,这样就可保证服务不间断.

负载均衡集群与高性能运算集群(HPC),的区别?

负载均衡集群:通过提高单位时间内的执行的任务数量来提高效率.
高性能运算集群:通过提高单位时间内的执行时间来提高效率.

VRRP(Virtual Router Redundancy Protocol 虚拟路由冗余协议)简介

虚拟路由冗余协议(Virtual Router Redundancy Protocol,简称VRRP)是由IETF提出的解决局域网中配置静态网关出现单点失效现象的路由协议,1998年已推出正式的RFC2338协议标准。VRRP广泛应用在边缘网络中,它的设计目标是支持特定情况下IP数据流量失败转移不会引起混乱,允许主机使用单路由器,以及及时在实际第一跳路由器使用失败的情形下仍能够维护路由器间的连通性。

VRRP是一种容错协议,它通过把几台路由设备联合组成一台虚拟的路由设备,并通过一定的机制来保证当主机的下一跳设备出现故障时,可以及时将业务切换到其它设备,从而保持通讯的连续性和可靠性。

脑分裂:与解决方法

解释: 在一个网络或线缆故障时导致两个节点同时认为自已是唯一处于活动状态的服务器从而出现争用资源的情况,这种争用资源的场景即是所谓的"脑裂",会导致数据不完整或服务不可访问.

解决方法:
1.设置参考ip,在抢夺资源之前,都去ping参考ip(网关),ping不通时,不会去抢资源,而是释放资源,将控制权交出去.
2.设置冗余线路,设置两条心跳线,两个网卡,第一个测时不通,再拿第二个去测.
3.stonish(爆头),基于能够通过软件指令关闭某节点特殊的硬件设备掐电源.

附加知识点:

RS232串口线: 串行电缆被认为是比以太网连接安全性稍好些的连接方式,因为黑客无法通过串行连接运行诸如telnet、ssh或rsh类的程序,从而可以降低其通过已劫持的服务器再次侵入备份服务器的几率.但串行线缆受限于可用长度,一般是(5米以内)因此主、备服务器的距离必须非常短.

常用的双机热备软件: RoseHA KeepaLived Heartbear RHCS

一年内最大停机限度

99%:87.6h
99.9%:8.8h
99.99%:53m
99.999%:5m

编译安装

1.安装依赖

[root@localhost ~]# yum install -y gcc kernel kernel-devel openssl openssl-devel popt popt-devel

2.编译Keepalived

[root@localhost ~]# wget http://www.keepalived.org/software/keepalived-1.4.3.tar.gz
[root@localhost ~]# tar -xzvf keepalived-1.4.3.tar.gz
[root@localhost ~]# cd keepalived-1.4.3/

#RHEL6中的编译参数
[root@localhost ~]# ./configure --prefix=/ --with-kernel-dir=/usr/src/kernels/2.6.32-358.el6.x86_64

#RHEL7中的编译参数
[root@localhost ~]# ./configure --prefix=/ --with-kernel-dir=/usr/src/kernels/3.10.0-123.el7.x86_64/net/

[root@localhost ~]# make && make install


LVS高可用配置

[实验环境]

[类型]            [IP地址]                [VIP/IO]

LVS1_Master        IP:192.168.22.191        VIP:192.168.22.195
LVS2_Slaves        IP:192.168.22.192        VIP:192.168.22.195

RealServer_1        IP:192.168.22.193
RealServer_2        IP:192.168.22.194

[配置说明]

1.首先我们需要配置一个LVS实现负载均衡
2.其次安装第二个LVS但不需要配置
3.在第一个LVS上配置轮询规则,并且安装开启Keepalived服务
4.在第二个LVS上安装Keepalived服务,启动后会自动同步数据

配置主节点

1.修改主配置文件,其他可删除,只写入以下内容,修改以下标★处

[root@localhost ~]# vim /etc/keepalived/keepalived.conf

 1 ! Configuration File for keepalived
 2 
 3 global_defs {
★    router_id kp_master                    #指定本机keepalaved名字(主从不能重复)
 5 }
 6 
 7 vrrp_instance VI_1 {
★     state MASTER                        #声明成主服务器(MASTER)/声明成从服务器(SLAVE)
★     interface eth0                        #定义相应网卡接口名称
★     virtual_router_id 100                    #虚拟路由ID(主从应同步)
★     priority 100                        #Keepalaved主从服务器优先级(主服务器必须大于从服务器)
12     advert_int 1                        #检查间隔,默认1秒
13     authentication {                        #定义主从验证
14         auth_type PASS                    #设置验证方式(PASS或HA)
15         auth_pass 1111                    #验证密码
16     }
17     virtual_ipaddress {                    #指定负载调度器(指定VIP的地址)
★         192.168.22.195
19     }
20 }
21 
★ virtual_server 192.168.22.195 80 {                #虚拟主机区域(指定VIP地址)
23     delay_loop 6                        #服务器轮询间隔时间
24     lb_algo rr                        #指定rr轮询算法
★     lb_kind DR                        #指定DR模式
★     net_mask 255.255.255.0                    #指定子网掩码
27     persistence_timeout 50                    #会话保持时间
28     protocol TCP                        #指定数据转发协议
29 
★     real_server 192.168.22.193 80 {                #RealServer1池,如有多台复制此区域
31         weight 1                        #设置服务器权重
★         TCP_CHECK {                        #对后端真实服务器TCP健康检查
33             connect_timeout 3                #链接超时时间
34             retry 3                        #重试次数
35             delay_before_retry 3                #重试时间间隔
36         }
37     }
38 
★     real_server 192.168.22.194 80 {                #RealServer2池,如有多台复制此区域
40         weight 1                        #设置服务器权重
★         TCP_CHECK {                        #对后端真实服务器TCP健康检查
42             connect_timeout 3                #连接超时时间
43             retry 3                        #重试次数
44             delay_before_retry 3                #重试时间间隔
45         }
46     }
47 }

2.启动keepalived

[root@localhost ~]# chkconfig  --add  keepalived
[root@localhost ~]# chkconfig  keepalived  on
[root@localhost ~]# ./keepalived  -f  /usr/local/keepalived/etc/keepalived.conf
[root@localhost ~]# systemctl restart keepalived

配置备节点

1.修改主配置文件,其他可删除,只写入以下内容,修改以下标★处

[root@localhost ~]# vim /etc/keepalived/keepalived.conf

 1 ! Configuration File for keepalived
 2 
 3 global_defs {
★    router_id kp_slave                        #指定本机keepalaved名字(主从不能重复)
 5 }
 6 
 7 vrrp_instance VI_1 {
★     state SLAVE                        #声明成主服务器(MASTER)/声明成从服务器(SLAVE)
★     interface eth0                        #定义相应网卡接口名称
★     virtual_router_id 100                    #虚拟路由ID(主从应同步)
★     priority 50                        #Keepalaved主从服务器优先级(主服务器必须大于从服务器)
12     advert_int 1                        #检查间隔,默认1秒
13     authentication {                        #定义主从验证
14         auth_type PASS                    #设置验证方式(PASS或HA)
15         auth_pass 1111                    #验证密码
16     }
17     virtual_ipaddress {                    #指定负载调度器(指定VIP的地址)
★         192.168.22.195
19     }
20 }
21 
★ virtual_server 192.168.22.195 80 {                #虚拟主机区域(指定VIP地址)
23     delay_loop 6                        #服务器轮询间隔时间
24     lb_algo rr                        #指定rr轮询算法
★     lb_kind DR                        #指定DR模式
★     net_mask 255.255.255.0                    #指定子网掩码
27     persistence_timeout 50                    #会话保持时间
28     protocol TCP                        #指定数据转发协议
29 
★     real_server 192.168.22.193 80 {                #RealServer1池,如有多台复制此区域
31         weight 1                        #设置服务器权重
★         TCP_CHECK {                        #对后端真实服务器TCP健康检查
33             connect_timeout 3                #链接超时时间
34             retry 3                        #重试次数
35             delay_before_retry 3                #重试时间间隔
36         }
37     }
38 
★     real_server 192.168.22.194 80 {                #RealServer2池,如有多台复制此区域
40         weight 1                        #设置服务器权重
★         TCP_CHECK {                        #对后端真实服务器TCP健康检查
42             connect_timeout 3                #连接超时时间
43             retry 3                        #重试次数
44             delay_before_retry 3                #重试时间间隔
45         }
46     }
47 }

2.修改内核参数.防止相同网络地址广播冲突

[root@localhost ~]# vim /etc/sysctl.conf

net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.eth0.send_redirects = 0

[root@localhost ~]# sysctl -p

3.启动keepalived 添加自启动菜单以及设置开机自启

[root@localhost ~]# chkconfig  --add  keepalived
[root@localhost ~]# chkconfig  keepalived  on
[root@localhost ~]# ./keepalived  -f  /usr/local/keepalived/etc/keepalived.conf
[root@localhost ~]# systemctl restart keepalived
相关实践学习
SLB负载均衡实践
本场景通过使用阿里云负载均衡 SLB 以及对负载均衡 SLB 后端服务器 ECS 的权重进行修改,快速解决服务器响应速度慢的问题
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
负载均衡 测试技术
LVS+KeepAlived构建高可用集群
LVS+KeepAlived构建高可用集群
105 0
|
机器学习/深度学习 编解码 运维
高可用方案组件,Keepalived详解
高可用方案组件,Keepalived详解
1038 0
|
负载均衡 网络协议 算法
keepalived 保证集群的高可用
keepalived 保证集群的高可用
keepalived 保证集群的高可用
|
Shell Docker 容器
KeepAlived集群高可用搭建
你的系统是否存在单点故障呢?那么这里我们基于Docker演示下基于KeepAlive的高可用配置。 简介 KeepAlived是一个用C语言编写的路由软件,它的主要目的是为了提供基于Linux服务器的负载均衡和高可用功能。
|
负载均衡 应用服务中间件 nginx
|
监控 关系型数据库 MySQL
|
调度 开发工具 网络协议
|
网络协议 开发工具 网络架构