2022.4.6 星期三 :
virtual IP address(VIP)是怎么工作的?
virtual IP address(VIP)
目的
vip的目的是为了高可用性
为了避免单点故障,部署多个实例提供服务
这些实例之间使用统一的协议进行存活检测(心跳)
并且定义了vip的使用优先级
在一个时间点,可能有一个实例或者多个实例在使用vip
定义
VIP是为了实现高可用性而设置的一类IP地址,这类IP地址不与特定的实例(比如集群中的一台服务器/路由器,或者一台服务器多个网卡中的某一个网卡)绑定,具有较高的可靠性
physical ip address是为了弥补VIP的一些局限性而存在的IP地址
我们一般叫他逻辑地址,相对于网卡上配的物理地址而言的。
好处呢,是随便哪个链路活着这个逻辑地址就可以被访问。当然,整个网路上还要把逻辑地址的路由配置能到达两个物理地址的网口。
最近正打算做 LVS 集群的实验,我就从集群的角度简单说一下吧。VIP 一般是由多个负载均衡器共同维护的,负载均衡器一般为主备模式。发到 VIP 上的数据在正常情况下由主负载均衡器维护,当主负载均衡器宕掉时,备负载均衡器马上接管。负载均衡器之间的通信要通过实体 IP,实体 IP 对于外部也是透明的,外部的客户端只知道 VIP 就可以了。
VIP 工作原理
1、背景
公司相关项目部署涉及到VIP并有固定VIP和域名VIP两种,出于不懂就学的心态,发现网上关于VIP相关网络和架构相关的文章少之又少,自己了解得七七八八于是在这里小小做一下总结,当作一个学习笔记。
2、Virtual IP address(VIP)
为什么使用VIP?
VIP的初衷就是进行容灾配置,举个栗子:当前有两台服务器Server部署着资源,客户端Client访问Server1并进行DNS缓存域名到Server1的IP,当下一次获取资源时,在Server1服务器宕机的情况下,由于DNS缓存,就会出现获取不到资源的情况,而另外的一台服务器Server2在此刻就如过客,并没有起到什么作用,Server1和Server2并没有什么关联,在这种情况下衍生出VIP来解决这种单点故障问题。
VIP是什么?
VIP = Virtual IP Address,虚拟IP地址,主要是用来进行不同主机之间的切换,主要用在服务器的主从切换。VIP的目的是为了高可用性,为了避免单点故障,部署多个实例提供服务,同时可以在VIP做负载均衡
下面举个栗子:
。。。
这样,我们就规避了由于Server的单个网络接口故障导致的应用中断,这个4.4.4.1,就是一个VIP由于这个IP不与物理接口绑定,所以这个IP不会因为物理接口的故障而实效。通过VIP就可以解决前面提出的DNS缓存IP导致单点故障的问题了,那部署VIP的服务器出现故障了该怎么办?
作者:Yaoii
链接:https://www.zhihu.com/question/67682565/answer/2314231115
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
3、VIP进阶
当域名解析到固定的VIP,当部署VIP的服务器出现故障了该怎么办?
这时候就需要用上另外一个域名,部署两台VIP,当其中一台VIP宕机,DNS域名解析指向备用VIP服务器即让 VIP 自动漂移到另一台服务器。域名不变的情况下,让请求转移到正常的机器,减少服务故障时间。
可以将域名解析到所有服务器。程序定期做检测,当发现有问题的时候发起请求,让 DNS 将故障的 IP 移除掉。DNSPod 自带这个功能,解决了在 DNS 解析生效之前,服务完全不可用的问题。不需要修改 DNS 解析,秒级别的生效延迟,用户无感知。
让 VIP自动漂移到另一台服务器可以使用Keepalived,另一种是比较复杂的 Heartbeat
通过修改heartbeat的配置文件,可以指定一台heartbeat服务器作为主服务器,另一台自动成为热备服务器。在热备服务器上面配置heartbeat守护程序来监听来自主服务器的心跳信息。如果在规定时间内,无法监听到心跳信息,那么就启动故障转移,取得主服务器上的相关资源的所有权,接替主服务器继续不间断的提供服务,从而达到资源以及服务高可用的目的。