# 虚拟IP地址概述
#### 虚拟IP
虚拟IP（Virtual IP Address）是从VPC子网网段中划分的一个内网IP地址，是一种可以独立申请和删除的内网IP地址，适用于以下场景：
- 将一个或者多个虚拟IP同时绑定至一个云服务器，可以通过任意一个IP地址（私有IP/虚拟IP）访问云服务器。通常当单个云服务器内同时部署了多种业务，此时可以通过不同的虚拟IP访问各个业务。

- 将一个虚拟IP同时绑定至多个云服务器，虚拟IP需要搭配高可用软件（比如Keepalived），用来搭建高可用的主备集群。为了提升服务的高可用性，避免单点故障，您可以用"一主一备"或"一主多备"的方法组合使用云服务器，这些云服务器对外呈现为一个虚拟IP。当主云服务器故障时，备云服务器可以转为主云服务器并继续对外提供服务，以此达到高可用性HA（High Availability）的目的。
 
通常情况下，云服务器使用私有IP地址进行内网通信，虚拟IP地址拥有私有IP地址同样的网络接入能力，包括VPC内二三层通信、VPC之间对等连接通信、EIP公网通信、接入VPN和云专线的能力。云服务器的私有IP、虚拟IP以及EIP的典型使用场景示意图，请参见[图1]。
- 私有IP地址：用于内网通信，不能访问公网。
- 虚拟IP：搭配Keepalived构建高可用集群，多个ECS构建的集群对外呈现一个虚拟IP。
- EIP：用于公网通信。
图1云服务器（ECS）不同IP地址的使用场景示意图   
![](https://support.huaweicloud.com/usermanual-vpc/zh-cn_image_0000001952856164.png)
#### 云上Keepalived高可用为何需要虚拟IP？
传统物理机房中，Keepalived基于VRRP协议完成主备切换后，新主节点可直接将虚拟IP配置到本机网卡，并通过发送免费ARP报文向局域网宣告IP归属变更，网络中各设备据此刷新ARP表项，将流量切至新主节点。
然而，云环境基于SDN架构与虚拟化技术构建网络，存在两个关键差异：
- **IP地址受平台管控**：虚拟机IP由云平台统一分配管理，实例无法自行修改或追加网卡IP地址（在已有主IP的网卡上再挂载一个额外的IP地址）。
- **ARP报文被隧道终结**：虚拟网络采用Overlay隧道技术，ARP在接入侧即被截获处理，实例发出的免费ARP无法在网络中传播生效。
因此，Keepalived的传统切换机制在云上无法正常工作。虚拟IP正是为解决这一限制而提供的能力。
虚拟IP是一种可独立创建与释放的私网IP资源，支持在多台实例间按需迁移。使用方式：创建虚拟IP并绑定到同一高可用组内的多台实例；在Keepalived配置中将VRRP虚拟IP指定为该虚拟IP地址；Keepalived切换新主节点后，云平台自动将虚拟IP的绑定关系迁移至新主实例，达到与传统免费ARP等效的切换效果。
#### 虚拟IP应用场景
通常情况下，虚拟IP搭配Keepalived使用，搭建高可用的主备集群。当主云服务器发生故障无法对外提供服务时，系统动态将虚拟IP切换到备云服务器，通过备云服务器继续对外提供服务。以下为您详细介绍虚拟IP典型的使用场景。
- [使用虚拟IP和Keepalived搭建高可用集群]
  如[图2]所示，基于虚拟IP，并配合使用Keepalived，搭建高可用集群。详细说明如下：
  1. 将虚拟IP同时绑定至ECS-HA1和ECS-HA2，在ECS-HA1和ECS-HA2上配置Keepalived，构建主备云服务器。
  
  2. 同时为虚拟IP绑定EIP，该集群可以面向公网提供Web访问服务。
  
  
  当高可用集群搭建完成后，ECS-HA1作为主云服务器，通过与虚拟IP绑定的EIP对外提供服务，ECS-HA2作为备服务器不承载实际业务。当ECS-HA1发生故障时，此时会自动启用ECS-HA2，ECS-HA2将会接管业务并对外提供服务，实现业务不中断的高可用需求。
  高可用集群的具体搭建方法，请您参见[使用虚拟IP和Keepalived搭建高可用Web集群](https://support.huaweicloud.com/usermanual-vpc/vpc_vip_0011.html)。
  图2使用虚拟IP和Keepalived搭建高可用集群   
  ![](https://support.huaweicloud.com/usermanual-vpc/zh-cn_image_0000001986375597.png)
- [使用虚拟IP和Keepalived/LVS搭建高可用负载集群]
  如[图3]所示，基于虚拟IP，并配合使用Keepalived和LVS，用于搭建高可用负载均衡集群服务，LVS用来实现负载均衡，Keepalived用来实现LVS集群的高可用。详细说明如下：
  1. 将虚拟IP同时绑定至ECS-01和ECS-02。在ECS-01和ECS-02上配置Keepalived和LVS（DR模式），构建主备LVS服务器，可以将来自客户端的请求均衡的分发到不同的后端服务器上。
  
  2. 配置ECS-03和ECS-04作为后端服务器，处理实际的业务请求。
  
  3. 检查四台ECS网卡的"源/目的检查"功能是否关闭。 将虚拟IP绑定至ECS时，系统会自动关闭ECS网卡的"源/目的检查"功能，如果未关闭，则请关闭该功能。
     
   
  当高可用负载集群搭建完成后，ECS-01作为主服务器，分发来自客户端的请求。当ECS-01发生故障时，此时会自动启用ECS-02继续分发客户端的请求，确保LVS集群的高可用性。
  图3使用虚拟IP和Keepalived/LVS搭建高可用负载集群   
  ![](https://support.huaweicloud.com/usermanual-vpc/zh-cn_image_0000001986495449.png)
  ![](https://support.huaweicloud.com/usermanual-vpc/public_sys-resources/note_3.0-zh-cn.png)
  Keepalived和LVS服务的安装及配置、后端服务器的配置请您参考业内通用的配置方法，此处不做详细介绍。
#### 虚拟IP的配额限制
虚拟IP功能的各项配额说明如[表1]所示，部分默认配额可以提升，您可以根据提示申请扩大配额。
 表1虚拟IP的配额说明 
| 配额项目                            | 默认配额 | 申请扩大配额                                                                                   |
|:---|:---|:---|
| 一个用户在单个区域可申请的虚拟IP数量              | 2个   | 申请更多配额，请参见[管理VPC配额](https://support.huaweicloud.com/usermanual-vpc/vpc_faq_0051.html) |
| 单个虚拟IP地址可绑定的弹性公网IP数量              | 1个    | 不支持修改                                                                                    |
| 单个虚拟IP支持同时绑定的实例数量（实例包括云服务器、网卡等） | 10个  | 不支持修改                                                                                    |
   
#### 虚拟IP的使用限制
- 当云服务器具有多个网卡，并且这些网卡都归属一个子网时，不推荐使用虚拟IP功能。如果在该场景下使用虚拟IP功能，弹性云服务器内部会存在路由冲突，导致虚拟IP通信异常。
- 虚拟IP是从VPC子网内划分的一个内网地址，因此仅支持将虚拟IP绑定至当前子网内的云服务器，不支持跨子网绑定云服务器。
- 使用IPv6地址的虚拟IP仅支持绑定一个网卡，如需进行服务器的主备切换，请通过调用API方式实现。具体请参考[配置云服务器高可用的IPv6虚拟IP功能](https://support.huaweicloud.com/api-vpc/vpc_apieg_0006.html)。
- 虚拟IP及扩展弹性网卡不支持直接访问华为云内网云服务，如内网DNS等，推荐使用VPCEP访问华为云内网云服务，具体参见[购买连接"接口"型终端节点服务的终端节点](https://support.huaweicloud.com/usermanual-vpcep/zh-cn_topic_0131645189.html#section1)。
- 当您使用虚拟IP结合Keepalived搭建主备模式的高可用集群时，在以下场景中，会出现虚拟IP绑定的多台后端云服务器重复接收数据包的情况：
  - **跨VPC通信场景**：当两个VPC通过对等连接/云专线/VPN/云连接等方式连通后，当其中一个VPC内绑定虚拟IP的主备集群，接收到来自VPC外的访问请求时，该主备集群的两台云服务器均会接收到请求数据包。例如，通过对等连接连通VPC-A与VPC-B的网络，VPC-A内的ECS-A01与ECS-A02为绑定虚拟IP的主备集群，当VPC-B内的ECS-B对主备集群发起访问请求时，ECS-A01与ECS-A02 均会接收到请求数据包。
  
  
  
  - **公网访问场景**：对于虚拟IP绑定EIP的主备集群，接收到来自公网侧发起的访问请求时，该主备集群的两台云服务器均会接收到请求数据包。例如，VPC-C内的ECS-C01和ECS-C02绑定同一个虚拟IP，且该虚拟IP已绑定EIP，共同构成对公网提供访问服务的主备集群。当公网侧发起访问请求时，ECS-C01与ECS-C02均会接收到请求数据包。
   
 
