很多用户在云平台虚拟机上使用Keepalived+Nginx、Keepalived+LVS或者Keepalived+Haproxy实现业务层高可用和负载均衡,Keepalived会有一个虚拟IP,如何给这个私网的虚拟IP绑定弹性IP实现外网访问呢?
云平台环境:ZStack企业版3.10.3
网络环境:扁平网络/VPC网络
主存储环境:本地存储/ZStack企业版分布式存储
镜像服务器:镜像仓库
物理机系统:ZStack定制版Centos7.6
云主机系统:CentOS7.4
云主机中做业务层高可用的场景现在越来越多,业务层高可用一般会有一个虚拟IP(比如Keepalived的虚拟IP),通过虚拟IP访问对应的业务主机实现负载均衡和高可用。但是Keepalived的虚拟IP一般都是和云主机使用相同的私网IP(扁平网络地址或者VPC网络地址),这个虚拟IP在不能直接被外网访问情况下需要通过绑定弹性IP的方式满足访问需求。
1、 查看Keepalived和网卡配置文件中虚拟IP地址
查看虚拟机keepalived.config配置文件可以看到本地IP地址为172.16.100.109,虚拟IP地址为172.16.100.104。
(图1 Keepalived配置文件)
查看虚拟机网卡的IP地址情况,可以看到本地IP和虚拟IP。
(图2 查看虚拟机网卡地址情况)
2、 查看云平台公有网络是否有可用IP地址,注意:这里的公有网络并不一定是公网IP,公有网络是相对私网网络的概念,可以提供办公网或者生产网络访问。
(图3 查看云平台公有网络)
3、 目前UI上还不支持直接给云主机系统内部的虚拟ip提供弹性IP服务,可以使用CLI实现公网弹性IP地址绑定给Keepalived的虚拟私网IP。
在管理节点执行zstack-cli后进入CLI交互界面,输入
LogInByAccount accountName=admin password=zstack@9742(登陆云平台的admin的密码)登陆CLI
(图4 登陆ZStack CLI交互环境)
创建一个VmNic,l3NetworkUuid填写云主机三层网络的UUID(L3网络的UUID可以在云平台UI上看到),ip填写Keepalived的虚拟IP地址。
CreateVmNic l3NetworkUuid= f16c01c8fb92444d83995c6adfb59921 ip=" 172.16.100.104"
(图5 创建VmNic)
云平台上创建一个弹性IP但不要绑定给云主机
(图6 创建弹性IP)
(图7 查看弹性IP地址)
使用CLI命令将这个弹性IP绑定给vmNIC:
AttachEip eipUuid=22ff411e10204500ababfbe6b9472469 vmNicUuid= fb968bfaac034bda970ba46535c56296
(图8 给VmNic绑定弹性IP)
测试Keepalived的虚拟IP绑定的弹性IP的网络连通性
(图9 验证弹性IP的网络连通性)