一、前言

高可用性 HA(High Availability)指的是通过尽量缩短因日常维护操作(计划)和突发的系统崩溃(非计划)所导致的停机时间,以提高系统和应用的可用性。HA 系统是目前企业防止核心计算机系统因故障停机的最有效手段。

实现 HA 的方式,一般采用两台机器同时完成一项功能,比如数据库服务器,平常只有一台机器对外提供服务,另一台机器作为热备,当这台机器出现故障时,自动动态切换到另一台热备的机器。

二、虚拟IP技术原理

1. 怎么实现故障检测?

心跳检测技术。采用定时发送一个数据包,如果机器一定时间没响应,就认为是发生故障,自动切换到热备的机器上去。

2. 怎么实现主备自动切换?

虚拟IP技术。虚拟IP,就是一个未分配给真实主机的IP,也就是说对外提供数据库服务器的主机除了有一个真实IP外还有一个虚IP,使用这两个IP中的任意一个都可以连接到这台主机,所有项目中数据库链接一项配置的都是这个虚IP,当服务器发生故障无法对外提供服务时,动态将这个虚IP切换到备用主机。

其实现原理主要是靠 TCP/IP 的 ARP 协议。因为IP地址只是一个逻辑地址,在以太网中 MAC 地址才是真正用来进行数据传输的物理地址,每台主机中都有一个 ARP 高速缓存,存储同一个网络内的 IP 地址与 MAC 地址的对应关系,以太网中的主机发送数据时会先从这个缓存中查询目标 IP 对应的 MAC 地址,会向这个 MAC 地址发送数据。操作系统会自动维护这个缓存。这就是整个实现的关键,比如下面这个 ARP 缓存示例:

(192.168.1.219) at 00:21:5A:DB:68:E8 [ether] on bond0
(192.168.1.217) at 00:21:5A:DB:68:E8 [ether] on bond0
(192.168.1.218) at 00:21:5A:DB:7F:C2 [ether] on bond0

其中,192.168.1.217、192.168.1.218 是两台真实的电脑,192.168.1.217 为对外提供数据库服务的主机,192.168.1.218 为热备的机器,192.168.1.219 为虚IP,注意219、217的 MAC 地址是相同的。当 218 发现 217 宕机后会向网络发送一个 ARP 数据包,告诉所有主机 192.168.1.219 这个IP对应的MAC地址是 00:21:5A:DB:7F:C2,这样所有发送到 219 的数据包都会发送到 MAC 地址为 00:21:5A:DB:7F:C2 的机器,也就是 218 的机器。

三、配置和删除虚拟IP

假如主机有一个网卡 eth1,其对应一个IP为 192.168.1.217,现对其设置一个虚拟IP 192.168.1.219:

ifconfig eth1:1 192.168.1.219 netmask 255.255.255.0

删除该虚拟IP:

ip addr del 192.168.1.219 dev eth1

不过在网络运维中,更常见的是使用 keepalived 配置虚拟ip(vip)实现双机热备以及自动切换主备,读者可以自行搜索研究。

最新文章

  1. Mina工具类v1.5
  2. 利用utl_file来读取文件.
  3. Java多线程-线程的调度(守护线程)
  4. DTCMS列表页自定义参数。
  5. arm: 使用结构体操作寄存器
  6. 分散式-ubuntu12.04安装spark-1.0.0
  7. centos7修改网卡名称
  8. 赵雅智_Swift(1)_swift简单介绍及类型
  9. 与班尼特·胡迪一起做生意 (HZUN-2261)
  10. ubuntu 16.04安装mysql
  11. vue实现筛选功能,文字选中变色
  12. 非常完善的Log4net详细说明(转)
  13. 【SDOI2017】数字表格
  14. Python-Analysis-Malware
  15. RedHat 简易配置 VNC Server 与VNC View详细说明
  16. java--多线程编程简介
  17. 五一,期待一场这样的旅行,提前预祝Csdner五一快乐
  18. MySQL-索引工作原理及使用注意事项
  19. 洛谷P1221 最多因子数 [搜索,数学]
  20. 【Hadoop】01_从官网下载Hadoop

热门文章

  1. 【JVM第二篇--类加载机制】类加载器与双亲委派模型
  2. python之 《zip,lambda, map》
  3. 12.java设计模式之代理模式
  4. Java 微信端评论表情处理
  5. ACCESS渗透测试
  6. 痞子衡嵌入式:揭秘i.MXRT600的ISP模式下用J-Link连接后PC总是停在0x1c04a的原因(Debug Mailbox)
  7. MongoDB动态建表方案(官方原生驱动)
  8. 维吉尼亚密码-攻防世界(shanghai)
  9. java开发三年,Java中接口的使用你得知道,不然你凭什么涨薪
  10. 怎么在苹果笔记本上用Folx重新下载已完成的任务