虚拟IP原理

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

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

怎么实现故障检测的那?

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

怎么实现自动切换那?

      虚IP。何为虚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地址是相同的。

再看看那217宕机后的arp缓存

(192.168.1.219) at 00:21:5A:DB:7F:C2 [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 

这就是奥妙所在。当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(Virtual IP,简称VIP)并非真实物理设备的IP地址,而是一个逻辑上的IP地址。它不与特定的硬件绑定,可在多个服务器或网络设备间灵活切换,常用于实现高可用性和负载均衡等功能。 ### 原理 虚拟IP基于ARP(地址解析协议)和VRRP(虚拟路由器冗余协议)等技术实现。以VRRP为例,一组路由器组成一个虚拟路由器,其中一个为主路由器,承担虚拟IP的转发工作;其他为备份路由器。当主路由器出现故障时,备份路由器会根据优先级选举出新的主路由器,并接管虚拟IP的工作,确保网络服务不中断。在ARP层面,当虚拟IP对应的主设备发生切换时,新设备会发送ARP通告,告知网络中其他设备虚拟IP对应的MAC地址已更新。 ### 使用场景 - **高可用性(HA)集群**:在企业关键业务系统中,如数据库服务器、Web服务器等,使用虚拟IP可以实现服务器的热备。当主服务器出现故障时,虚拟IP可以快速切换到备用服务器,保证服务的连续性,减少停机时间。 - **负载均衡**:在负载均衡器中,虚拟IP作为客户端访问的入口地址。负载均衡器将客户端的请求根据一定的算法(如轮询、加权轮询、最少连接等)分发给后端的多个真实服务器,从而提高系统的处理能力和响应速度。 ### 配置方法 #### Linux系统中使用Keepalived配置虚拟IP实现高可用 以下是一个简单的示例,假设要在两台Linux服务器上配置虚拟IP实现高可用: 1. **安装Keepalived** ```bash yum install keepalived -y # CentOS系统 apt-get install keepalived -y # Ubuntu系统 ``` 2. **配置主服务器(Master)的Keepalived文件(/etc/keepalived/keepalived.conf)** ```plaintext ! Configuration File for keepalived global_defs { router_id LVS_DEVEL } vrrp_instance VI_1 { state MASTER interface eth0 # 网络接口名称 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.1.100 # 虚拟IP地址 } } ``` 3. **配置备份服务器(Backup)的Keepalived文件(/etc/keepalived/keepalived.conf)** ```plaintext ! Configuration File for keepalived global_defs { router_id LVS_BACKUP } vrrp_instance VI_1 { state BACKUP interface eth0 # 网络接口名称 virtual_router_id 51 priority 90 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.1.100 # 虚拟IP地址 } } ``` 4. **启动Keepalived服务** ```bash systemctl start keepalived systemctl enable keepalived ``` #### 负载均衡器(如Nginx)结合虚拟IP 1. **安装Nginx** ```bash yum install nginx -y # CentOS系统 apt-get install nginx -y # Ubuntu系统 ``` 2. **配置Nginx负载均衡(/etc/nginx/nginx.conf)** ```plaintext http { upstream backend { server 192.168.1.101; # 后端真实服务器1 server 192.168.1.102; # 后端真实服务器2 } server { listen 80; server_name 192.168.1.100; # 虚拟IP地址 location / { proxy_pass http://backend; } } } ``` 3. **启动Nginx服务** ```bash systemctl start nginx systemctl enable nginx ```
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值