【华为云网络技术分享】【第六弹】VIP特性典型应用案例指导
什么是虚拟IP
虚拟IP是一个未分配给真实云服务器网卡的IP地址。云服务器除了拥有私有IP地址外,还可以拥有虚拟IP地址,用户可以通过其中任意一个IP(私有IP/虚拟IP)访问此云服务器。同时,虚拟IP地址拥有私有IP地址同样的网络接入能力,包括VPC内二三层通信、VPC之间对等连接访问,以及弹性IP、VPN、云专线等Internet接入。
典型组网
虚拟IP主要用在云服务器的主备切换,达到高可用性HA(High Availability)的目的。当主服务器发生故障无法对外提供服务时,动态将虚拟IP切换到备服务器,继续对外提供服务。本节介绍两种典型的组网模式。
l 典型组网1:HA高可用性模式
场景举例:如果您想要提高服务的高可用性,避免单点故障,可以用“一主一备”或“一主多备”的方法组合使用云服务器,这些云服务器对外表现为一个虚拟IP。当主服务器故障时,备服务器可以转为主服务器,继续对外提供服务。
组网方式如下:
u 将2台同子网的云服务器绑定同一个虚拟IP,请参考云服务器绑定虚拟IP(控制台操作) 或者 云服务器绑定虚拟IP(API操作)
u 将这2台云服务器配置Keepalived,实现一台为主服务器,一台为备份服务器。
【说明】 Keepalived可参考业内通用的配置方法,此处不做详细介绍。
l 典型组网2:高可用负载均衡集群
场景举例:如果您想搭建高可用负载均衡集群服务,您可以采用Keepalived + LVS(DR)来实现。
组网方式如下:
u 将2台云服务器绑定同一个虚拟IP,请参考请参考云服务器绑定虚拟IP(控制台操作) 或者 云服务器绑定虚拟IP(API操作)
u 将绑定了虚拟IP的这2台云服务器配置Keepalived+LVS(DR模式),组成LVS主备服务器。这2台服务器作为分发器将请求均衡地转发到不同的后端服务器上执行。
u 配置另外2台云服务器作为后端RealServer服务器。
u 关闭2台后端RealServer云服务器的源/目的检查。请参考关闭源/目的检查(控制台操作)或者关闭源/目的检查(API操作)。
【说明】 Keepalived + LVS调度服务端安装配置以及后端RealServer服务器配置可以参考业内通用的配置方法,此处不做详细介绍。
使用方法
l 案例1:通过弹性IP访问虚拟IP
场景举例:您的应用需要具备高可用性并通过Internet对外提供服务,推荐使用弹性IP绑定虚拟IP功能。
l 案例2:通过VPN/云专线/对等连接访问虚拟IP
场景举例:您的应用需要具备高可用性并且需要通过Internet访问,同时需要具备安全性(VPN),保证稳定的网络性能(云专线),或者需要通过其他VPC访问(对等连接)。
注意事项
l 不推荐在云服务器配置多个同子网网卡的场景下,使用虚拟IP功能。若在该场景下使用虚拟IP功能,云服务器内部会存在路由冲突,导致虚拟IP通信异常。
控制台操作
云服务器绑定虚拟IP
l 在“虚拟私有云”页面,选择云服务器所在的VPC。
l 选择云服务器所在的子网。
l 选择“虚拟IP”标签,点击“申请虚拟IP地址”。
l 选择对应的虚拟IP,点击“绑定服务器”,在弹出的页面中选择需要绑定的服务器及网卡。多网卡云服务器场景下,推荐使用主网卡。
l 操作结束,返回。
弹性IP访问虚拟IP
l 参考典型组网进行云服务器组网配置,确保云服务器已经绑定虚拟IP。。
l 进入“虚拟私有云”à“弹性IP”页面,点击“申请弹性IP”或使用已有弹性IP,点击对应弹性IP的“绑定”操作。
l 在弹出的页面中点击“选择虚拟IP地址”,选择需要绑定的虚拟IP,然后点击“确定”按钮。
l 操作结束,返回。
通过VPN/云专线/对等连接访问虚拟IP
l 参考典型组网进行服务器组网配置。
l 创建VPN/云专线/对等连接。
l 操作结束,返回。
关闭源/目的检查(适用于高可用负载均衡集群场景)
l 进入“弹性云服务器”页面,选择对应的云服务器。点击“网卡”选项卡,关闭“源/目的检查”开关。
l 操作结束,返回。
API操作
云服务器绑定虚拟IP
l API的接口调用可以用常用工具:Postman或者Jemeter
此部分涉及5个API接口的调用,具体如下:
序号 | 方法 | URI | 说明 |
1 | POST | /v3/auth/tokens | 获取Token |
2 | POST | /v2.0/ports | 创建VIP Port |
3 | PUT | /v2.0/ports/{port_id} | 将云服务器与虚拟IP绑定 |
4 | GET | /v2/{tenant_id}/servers/{server_id}/os-interface | 配置绑定了虚拟IP的云服务器网卡的allowed-address-pairs |
5 | PUT | /v2.0/ports/{port_id} |
API接口的具体调用步骤如下:
1. 获取token。
方法 | POST |
url | iam地址:端口/v3/auth/tokens |
body体(样例) | { "auth":{ "identity":{ "methods": ["password"], "password":{ "user":{ "name": "user_name", "domain":{ "name":"domain_name" }, "password":"user_password" } } }, "scope":{ "project":{ "name":"project_name" } } } } |
2. 在云服务器所在的VPC子网内,创建vip port。
要求与云服务器同子网,并指定“device_owner”参数为“neutron:VIP_PORT”。
方法 | POST |
url | vpc地址:端口/v2.0/ports |
body体(样例) | { "port": { "network_id": "a54e1b19-ce78-4b7e-b28b-d2d716cdc161", "device_owner": "neutron:VIP_PORT", "name": "vip_port_test" } } |
说明 | body体中的network_id为云服务器所在的网络ID |
3. 将云服务器与虚拟IP绑定。
更新vip port的allowed-address-pairs,指定ip_address为需要绑定的云服务器的网卡的ip地址。
方法 | PUT |
url | vpc地址:端口/v2.0/ports/{port_id} |
body体(样例) | { "port": { "allowed_address_pairs": [ {"ip_address":"192.168.22.221"}, {"ip_address":"192.168.22.203"} ] } } |
说明 | 1. url中{port_id}是上一步中创建的vip port的ID 2. body体中ip_address就是需要绑定的云服务器网卡的IP地址 |
1. 配置绑定了虚拟IP的云服务器网卡的allowed-address-pairs。
获取绑定了虚拟IP的云服务器网卡信息:
方法 | GET |
url | ecs地址:端口/v2/{tenant_id}/servers/{server_id}/os-interface |
body体 | 不涉及 |
说明 | url中{tenant_id}是租户ID,{server_id}是云服务器的ID |
更新云服务器网卡的allowed-address-pairs为1.1.1.1/0,关闭源/目的检查。
方法 | PUT |
url | vpc地址:端口/v2.0/ports/{port_id} |
body体 | { "port": { "allowed_address_pairs": [ {"ip_address":"1.1.1.1/0"} ] } } |
说明 | url中{port_id}是绑定了虚拟IP的云服务器网卡的ID |
2. 操作结束,返回。
弹性IP访问虚拟IP
l API的接口调用可以用常用工具:Postman或者Jemeter
1. 参考典型组网进行云服务器组网配置,确保云服务器已经绑定虚拟IP。
2. 弹性IP绑定虚拟IP。
此部分涉及2个API接口的调用,列表如下:
序号 | 方法 | URI | 说明 |
1 | POST | /v3/auth/tokens | 获取Token |
2 | POST | /v2.0/floatingips | 创建弹性IP |
API接口的具体调用步骤如下:
(1)获取token。
方法 | POST |
url | iam地址:端口/v3/auth/tokens |
body体(样例) | { "auth":{ "identity":{ "methods": ["password"], "password":{ "user":{ "name": "user_name", "domain":{ "name":"domain_name" }, "password":"user_password" } } }, "scope":{ "project":{ "name":"project_name" } } } } |
(2)创建弹性IP绑定虚拟IP
方法 | POST |
url | vpc地址:端口/v2.0/floatingips |
body体(样例) | { "floatingip": { "floating_network_id": "${admin_external_net}", "port_id": "4b9246da-aa12-4959-b17e-84038b8a0a96" } } |
说明 | body体中的参数port_id为云服务器绑定的虚拟IP对应的VIP Port的ID |
3. 操作结束,返回。
通过VPN/云专线/对等连接访问虚拟IP
l API的接口调用可以用常用工具:Postman或者Jemeter
1. 参考典型组网进行云服务器组网配置
2. 创建VPN/云专线/对等连接。
3. 操作结束,返回。
关闭源/目的检查(适用于高可用负载均衡集群场景)
l API的接口调用可以用常用工具:Postman或者Jemeter
此部分涉及2个API接口的调用,具体如下:
序号 | 方法 | URI | 说明 |
1 | POST | /v3/auth/tokens | 获取Token |
3 | PUT | /v2.0/ports/{port_id} | 关闭云服务器网卡的“源/目的检查” |
API接口的具体调用步骤如下:
1. 获取token。
方法 | POST |
url | iam地址:端口/v3/auth/tokens |
body体(样例) | { "auth":{ "identity":{ "methods": ["password"], "password":{ "user":{ "name": "user_name", "domain":{ "name":"domain_name" }, "password":"user_password" } } }, "scope":{ "project":{ "name":"project_name" } } } } |
2. 更新云服务器网卡的allowed-address-pairs为1.1.1.1/0,关闭源/目的检查。
方法 | PUT |
url | vpc地址:端口/v2.0/ports/{port_id} |
body体 | { "port": { "allowed_address_pairs": [ {"ip_address":"1.1.1.1/0"} ] } } |
说明 | url中{port_id}是绑定了虚拟IP的云服务器网卡的ID |
3. 操作结束,返回。
- 点赞
- 收藏
- 关注作者
评论(0)