一、HA高可用
高可用HA(High Availability)是分布式系统架构设计中必须考虑的因素之一,它通常是指通过设计,减少系统服务不可用的时间。假设系统一直能够提供服务,我们说系统的可用性是100%。如果系统每运行100个时间单位,会有1个时间单位无法提供服务,我们说系统的可用性是99%。很多公司的高可用目标是4个9,也就是99.99%,这就意味着,系统的年停机时间为0.876个小时。
描述 | 通俗叫法 | 可用性级别 | 年度停机时间 |
基本可用性 | 2个9 | 99% | 87.6小时 |
较高可用性 | 3个9 | 99.9% | 8.8小时 |
具有故障自动恢复能力的可用性 | 4个9 | 99.99% | 53分钟 |
极高可用性 | 5个9 | 99.999% | 5分钟 |
实现高可用的核心点:
- 冗余(多台服务器)
- 自动切换
备份服务器:
- 冷备 服务器不启用,使用的时候在开启
- 热备 服务器在等待状态,一旦主宕机,备立即接管,自动切换
通过VIP的方式,切换主备服务器
- 默认VIP绑定在主服务器(master)
- master不可用,就切换VIP到备份服务器(backup)
- 用户可以使用到连续性更好的服务,通过VIP访问服务器
常用来单独实现高可用的软件:
- keepalived
- heartbeat 较早 属于redhat HA工程的一部分
二、keepalived
Keepalived软件起初是专为LVS负载均衡软件设计的,用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入了可以实现高可用的VRRP功能。因此,Keepalived除了能够管理LVS软件外,还可以作为其他服务(例如:Nginx、Haproxy、MySQL等)的高可用解决方案软件
直白一点说就是一个集群中,一台主崩了剩余的会顶替他的位置,当然都集群了这些服务器要互通!
1、安装keepalived
准备两台服务器master(web1)和backup(web2),全部安装keepalived
[root@server02 ~]# yum -y install keepalived
keepalived所用到的文件及目录
文件/目录 | 作用 |
/etc/keepalived/keepalived.conf | 生效的配置文件 |
/etc/init.d/keepalived | 服务器管理脚本 |
/var/log/messages | 日志信息 |
2、配置keepalived
2.1、养成修改配置文件前作备份的良好习惯(主备都要做哦)
[root@server02 ~]# cd /etc/keepalived
[root@server02 keepalived]# cp keepalived.conf keepalived.conf_bak
2.2、分别修改主备服务器的配置文件
- 示例配置文件说明
! 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
}
}
- 主服务器
! Configuration File for keepalived
global_defs {
#唯一的路由id
router_id LVS_1
}
vrrp_instance VI_1 {
##工作模式 MASTER 或者BACKUP
state MASTER
## 监听网卡
interface enp0s3
## #虚拟路由id 需要和备服务器一致
virtual_router_id 51
## #权重 优先级
priority 100
#vrrp包的发送周期 1s
advert_int 1
#权限验证, 不需要 动
authentication {
auth_type PASS
auth_pass 1111
}
# vip :虚拟ip的设置
virtual_ipaddress {
10.0.2.200
}
}
- 备服务器
! Configuration File for keepalived
global_defs {
#唯一的路由id
router_id LVS_2
}
vrrp_instance VI_1 {
##工作模式 MASTER 或者BACKUP
state BACKUP
## 监听网卡
interface enp0s3
## #虚拟路由id 需要和备服务器一致
virtual_router_id 51
## #权重 优先级
priority 100
#vrrp包的发送周期 1s
advert_int 1
#权限验证, 不需要 动
authentication {
auth_type PASS
auth_pass 1111
}
# vip :虚拟ip的设置
virtual_ipaddress {
10.0.2.200
}
}
- 按主备顺序启动keepalived
[root@server02 ~]# systemctl start keepaalived
- 查看主备服务器的网卡信息
[root@server02 ~]# ip a
这里你会发现你设置的vip出现在了主服务器上
3、测试
3.1、模拟主服务器断电
直接关闭主服务器web1
浏览器刷新访问 http://10.0.2.200/ ==> 会转到从服务器web2,完成切换
在启动主服务器web1 ==> 关闭从服务器web2 ===> 自动切换成主服务器web1
3.2、模拟主服务器断网
[root@server02 ~]# service network stop
与上边方法基本一样,不同的是要重启网卡
- 通过以上实验检测,发现当主服务器整机不可用即宕机时,VIP会切换到备用服务器
三、集群
在Linux环境中,集群指的是由多台计算机(称为节点)通过高速网络连接构成的一个松耦合或紧耦合系统,这些计算机协同工作以实现特定的目标,如提高计算能力、增加服务可用性、实现负载均衡或者增强数据存储的可靠性。
我目前的理解为:集群就是拥有同种功能的多台机器,类似于克隆,但是他又不单单只有这些功能,一台机器有可能是多个集群的交点。
使用集群后即使有一台出现故障,也会有其他机器顶替位置,有了维护时间,对外却不会停止服务,方便维护。此外集群可以同时处理信息,大大提高了性能。在集群系统中,尽管部分硬件和软件也还是会发生故障,但整个系统的服务还是可用的,集群系统在提高系统可用性的同时,也大大减小了系统故障带来的业务损失。
常见集群分类
-
负载均衡集群,简称LBC或者LB
-
高可用性集群,简称HAC
-
高性能计算集群,简称HPC
-
网格计算集群
所以说高可用、负载均衡都是基于集群之上咯!!!