企业架构双点服务器HA
Posted ღ᭄小艾ヅ࿐
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了企业架构双点服务器HA相关的知识,希望对你有一定的参考价值。
目录:
一、服务器基本配置
web服务器 master | 192.168.74.30 |
---|---|
web服务器 backup | 192.168.74.31 |
数据库服务器 | 192.168.74.32 |
vim /etc/hosts
1.数据备份和迁移:
二、高可用服务搭建
- 高可用HA(High Availability)是分布式系统架构设计中必须考虑的因素之一,它通常是指通过设计,减少系统服务不可用的时间。假设系统一直能够提供服务,我们说系统的可用性是100%。如果系统每运行100个时间单位,会有1个时间单位无法提供服务,我们说系统的可用性是99%。很多公司的高可用目标是4个9,也就是99.99%,这就意味着,系统的年停机时间为0.876个小时。
1.keepalived介绍:
- Keepalived软件起初是专为LVS负载均衡软件设计的,用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入了可以实现高可用的VRRP功能。因此,Keepalived除了能够管理LVS软件外,还可以作为其他服务(例如:Nginx、Haproxy、MySQL等)的高可用解决方案软件
2.keepalived组成与原理:
- Keepalived软件主要是通过VRRP协议实现高可用功能的。
- VRRP是Virtual Router RedundancyProtocol(虚拟路由器冗余协议)的缩写,VRRP出现的目的就是为了解决静态路由单点故障问题的,它能够保证当个别节点宕机时,整个网络可以不间断地运行。
- 虚拟路由冗余协议,可以认为是实现路由器高可用的协议,即将N台提供相同功能的路由器组成一个路由器组,这个组里面有一个master和多个backup,master上面有一个对外提供服务的vip(该路由器所在局域网内其他机器的默认路由为该vip),master会发组播,当backup收不到vrrp包时就认为master宕掉了,这时就需要根据VRRP的优先级来选举一个backup当master。这样的话就可以保证路由器的高可用了。
- Keepalived的功能体系结构,大致分两层:用户空间(user space)和内核空间(kernel space)。
- 内核空间:
主要包括IPVS(IP虚拟服务器,用于实现网络服务的负载均衡)和NETLINK(提供高级路由及其他相关的网络功能)两个部份。- 用户空间:
- WatchDog:负载监控checkers和VRRP进程的状况
- VRRP Stack:负载均衡器之间的失败切换FailOver,如果只用一个负载均衡器,则VRRP不是必须的
- Checkers:负责真实服务器的健康检查healthchecking,是keepalived最主要的功能。换言之,可以没有VRRP Stack,但健康检查healthchecking是一定要有的
- IPVS wrapper:用户发送设定的规则到内核ipvs代码
- Netlink Reflector:用来设定vrrp的vip地址等
- keepalived主要使用三个模块,分别是core、check和vrrp。
- core模块为keepalived的核心,负责主进程的启动、维护以及全局配置文件的加载和解析
- check负责健康检查,包括常见的各种检查方式
- vrrp模块是来实现VRRP协议的
3.安装启动keepalived:
- 直接用yum安装即可
yum install -y keepalived- keepalived需要使用的目录和文件:
文件或者目录 作用 /etc/keepalived/keepalived.conf 生效的配置文件 /etc/init.d/keepalived 服务器管理脚本 /var/log/messages 日志信息
- 安装完了之后呢,需要修改配置文件(修改网卡,要和自己的网卡名称对应)
- centos7呢,直接用systemctl启动keepalived即可,如果是centos6可以在/etc/init.d文件夹下找到keepalived的启动脚本,可以使用service来启动keepalived
4.配置keepalived:
- 示例配置文件说明:
! Configuration File for keepalived
#发送邮件的配置
global_defs
notification_email
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 192.168.200.1
smtp_connect_timeout 30
router_id LVS_DEVEL
#vrrp协议的配置
vrrp_instance VI_1
#工作模式
state MASTER
#监听的网卡
interface eth0
#虚拟路由id 需要和备服务器一致
virtual_router_id 51
#权重 优先级
priority 100
#vrrp包的发送周期 1s
advert_int 1
#权限验证
authentication
auth_type PASS
auth_pass 1111
#需要绑定切换的VIP
virtual_ipaddress
192.168.200.16
192.168.200.17
192.168.200.18
- master服务器:
- backup服务器:
5.模拟服务器不可用vip切换:
- 当我把master关机后,vip就自动飘到backup上了
- 当我们master重新活过来,启动keepalived后,vip就又重新抢回来了
三、实现服务HA
- 通过keepalived可以直接实现主服务器整机不可用,实现VIP的切换。保证用户可以通过VIP进行访问服务
- 但是实际情况下,往往并不是服务器整机不可用,只是对应的服务或者软件不可用
- 比如说:nginx提供的web服务,nginx进程关闭。就需要检测当nginx不可用时,就切换VIP
- 实现过程分析:
- VIP实际是由keepalived进行绑定的,所以当nginx服务不可用时,就关闭当前机器的keepalived即可,释放VIP。进而绑定到其他备用服务器
- ①编写服务检测脚本,实现检测nginx是否可用,不可用则关闭当前所在主机的keepalived
- ②在keepalived配置中调用检测服务脚本
1.nginx服务可用检测脚本:
- cd /etc/keepalived
- vi check_nginx
- 这里的ps -C nginx是什么呢?
- 这里我们脚本中的意思是,当这个判断等于0的时候,代表nginx已经不可用了,所以我们需要关闭keepalived,让它让出主节点的位置!
- master和backup服务器都要修改keepalived.conf这个配置文件
- 接下来我们确保两台服务器的nginx都是开启状态
- 现在咱们将master的nginx停掉
- 这时候我们重新将master的nginx和keepalived重新提起来,那么vip就会重新回到master上,这个是抢占模式,接下来我会为大家讲解非抢占模式
2.实现业务web服务高可用:
- 当我们现在访问shop.lnmp.com时,是可以访问到的
- 当我们现在在192.168.74.30这台服务器上,把nginx停掉之后
- 此时此刻就访问不到了
- 所以我们就需要通过访问的是vip来实现web服务高可用
- 我们需要确保vip可以ping通
- 如果在这里ping不同vip的话,我们需要对keepalived.conf配置文件进行一个小小的修改
- 此时我们再重新访问shop.lnmp.com即可(此时我们的master的nginx服务停了一样也可以,因为我们还有backup)
四、keepalived的配置补充
- 脑裂(裂脑):vip出现在了多台机器上。网络不通畅,禁用了数据包,主备服务器没法通讯,造成备服务器认为主服务器不可用,绑定VIP,主服务器VIP不会释放。
- 解决方案:
- ①双备或者多备模式 BACKUP 通过priority权重来区分谁的优先级更高
- ②单播(定向广播)的方式 (一些特定环境禁用了组播方式)
- ③时间不同步 服务器时间校时
1.非抢占模式:
- ①nopreempt(在主备服务器的配置文件,vrrp_instance段中)
- ②设置state工作模式为BACKUP(两个keepalived节点都启动后,默认都是BACKUP状态,双方在发送组播信息后,会根据优先级来选举一个MASTER出来)
- 现在我的vip是在我的master这台服务器上的,然后我们把它的nginx停掉
- 此时vip已经飘到backup这台服务器上了
- 现在我们将master这台服务器的nginx和keepalived重新启动一下
- 但是此时此刻,vip还在backup这台服务器上,这就是非抢占模式
2.单播模式:
- 一些特定环境下不允许发送组播,造成备服务器无法收到vrrp包,可能会造成脑裂现象。可以通过单播的方式解决
- 单播示例配置: 注意此语法在keepalived1.2.11版本以上支持
在vrrp_instance段中加入
unicast_src_ip 192.168.74.*##(本地IP地址)
unicast_peer
192.168.74.*##(对端IP地址)此地址一定不能忘记
- master服务器:
- backup服务器:
以上是关于企业架构双点服务器HA的主要内容,如果未能解决你的问题,请参考以下文章
基于Nginx搭建Web服务器HA架构(实现高可用web服务)
基于Nginx搭建Web服务器HA架构(实现高可用web服务)