搞定技术面试 双机热备份

双机热备份 前文我们讲了负载均衡,通过在多个后端服务器前加设一个负载均衡服务器(Load Balancing),对接入的请求分发给后端服务器。可以实现水平扩容,提升总体服务性能的功能;还可以将少量大的宕机后端服务器剔除队列,实现冗余服务器,提高服务稳定性的作用。
这时机智的小伙伴便会提出疑问:万一负载均衡服务器宕机了怎么办?
emmm,我们可以在负载均衡服务器前再加一层负载均衡服务器,这样就不用担心负载均衡服务器宕机了(误!紧致套娃
实际上双机热备份的思路与负载均衡服务器相似,但具体实现不够一样。双机热备份通过虚拟IP地址(VIP)实现,比如我们有一个公网地址 VIP 59.80.39.110,而我们准备了两台负载均衡服务器,分别称为主机和备机LB_MASTER 192.168.1.100, LB_BACKUP 192.168.1.101
我们监控主机的状态,当主机正常时,将访问 VIP 的流量发送到 LB_MASTER 机器,也可以说是LB_MASTER绑定了这个 VIP。当主机的负载均衡服务器出现故障,主机便调用程序取消这个 VIP 来防止流量继续流入主机;备机检测到主机故障,便选举自己成为新的主机,为自己设置这个 VIP 地址,这样后续的流量便会转发到LB_BACKUP
注: 一个电脑可以同时拥有很多个 IP 地址,这种方法便是首先准备一个富余的IP地址,通过给机器设置服务,监控 LB 服务器的运行状态,动态的将这个 富余的 IP 地址绑定到备用机器上。这样DNS服务器不用做任何修改,客户端也不用做任何修改,就可以自动的将服务由主机切换到备机。
搞定技术面试 双机热备份
文章图片

keepalived keepalived 是一个流行的开源的基于 vrrp 协议的轻量级高可用软件。
KeepAlived是基于VRRP(Virtual Router Redundancy Protocol,虚拟路由冗余协议)实现的一个高可用方案,通过VIP(虚拟IP)和心跳检测来实现高可用。
Keepalived有两个角色,Master和Backup。一般会是1个Master,多个Backup。
Master会绑定VIP到自己网卡上,对外提供服务。Master和Backup会定时确定对方状态,当Master不可用的时候,Backup会通知网关,并把VIP绑定到自己的网卡上,实现服务不中断,高可用。
【搞定技术面试 双机热备份】下面是 keepalived 配置文件参考,对于云服务器,通常云服务器的路由会关闭组播功能,因此需要指定主机和备机的 ip ,进行单播通信。这是个注意点,要考

# 主机的配置文件, 假设主机 ip 为 192.168.100 ! Configuration File for keepalivedglobal_defs { # 通知邮件服务器的配置 notification_email { # 当master失去VIP或则VIP的时候,会发一封通知邮件到your-email@qq.com your-email@qq.com } # 发件人信息 notification_email_from keepalived@qq.com # 邮件服务器地址 smtp_server 127.0.0.1 # 邮件服务器超时时间 smtp_connect_timeout 30 # 邮件TITLE router_id LVS_DEVEL }vrrp_instance VI_1 { # 主机: MASTER # 备机: BACKUP state MASTER # 实例绑定的网卡, 用ip a命令查看网卡编号 interface eth0 # 虚拟路由标识,这个标识是一个数字(1-255),在一个VRRP实例中主备服务器ID必须一样 virtual_router_id 88 # 优先级,数字越大优先级越高,在一个实例中主服务器优先级要高于备服务器 priority 100 # 主备之间同步检查的时间间隔单位秒 advert_int 1 # 验证类型和密码 authentication { # 验证类型有两种 PASS和HA auth_type PASS # 验证密码,在一个实例中主备密码保持一样 auth_pass 11111111 }# 指定通信的 ip ,设置 keepalived 为单播通信 unicast_src_ip 192.168.1.100 unicast_peer { 192.168.1.101 # 可以设置多个 IP } # 虚拟IP地址,可以有多个,每行一个 virtual_ipaddress { 59.80.39.110 } }

# 备机的配置文件 ! Configuration File for keepalivedglobal_defs { # 通知邮件服务器的配置 notification_email { # 当master失去VIP或则VIP的时候,会发一封通知邮件到your-email@qq.com your-email@qq.com } # 发件人信息 notification_email_from keepalived@qq.com # 邮件服务器地址 smtp_server 127.0.0.1 # 邮件服务器超时时间 smtp_connect_timeout 30 # 邮件TITLE router_id LVS_DEVEL }vrrp_instance VI_1 { # 主机: MASTER # 备机: BACKUP state BACKUP # 实例绑定的网卡, 用ip a命令查看网卡编号 interface etho # 虚拟路由标识,这个标识是一个数字(1-255),在一个VRRP实例中主备服务器ID必须一样 virtual_router_id 88 # 优先级,数字越大优先级越高,在一个实例中主服务器优先级要高于备服务器 priority 99 # 主备之间同步检查的时间间隔单位秒 advert_int 1 # 验证类型和密码 authentication { # 验证类型有两种 PASS和HA auth_type PASS # 验证密码,在一个实例中主备密码保持一样 auth_pass 11111111 }unicast_src_ip 192.168.1.101 unicast_peer { 192.168.1.100 }# 虚拟IP地址,可以有多个,每行一个 virtual_ipaddress { 59.80.39.110 } }

参考链接
  1. 负载均衡
  2. keepalived 配置文件参考

    推荐阅读