在云平台中,存在两台虚机提供http服务,现在需要使用keepalived形成集群,并通过一个浮动IP访问keepalived的VIP来访问两台虚机
理论分析:
该需求实现需要拆分为以下几步:
1、两个nginx虚机要形成keepalived集群,集群只对外暴露一个VIP
2、两个虚机的内网要连接到一个L3 router
3、VIP需要分配一个浮动IP,并将VIP和浮动IP绑定起来
4、安全组除了原来的TCP/ICMP/UDP之外,还需要放通vrrp协议,便于交互vrrp报文
5、两台虚机配置keepalived和httpd,对外提供服务
在线上环境中,两个虚机的内网已经连接到了一个L3 router,因此2条件已满足,只需要配置1,3,4即可。
整体架构图:
环境介绍:
基于openstack Pike版的二次开发的私有云,neutron的网络模式用的二层vlan模式
外网网络是10.200.46.0/24,内网网络是192.168.0.0/24。
keepalive的VIP是192.168.0.10,两台虚机的IP分别是192.168.0.6和192.168.0.9
配置步骤(包含命令行和页面配置两种):
1、两个nginx虚机要形成keepalived集群,集群只对外暴露一个VIP
openstack中,当开启了端口安全的功能,neutron默认会把所有端口的IP和MAC进行一对一的绑定,并把对应的关系存放在mariadb数据库中。默认其他IP的报文到了这台虚机直接做丢弃处理。
![](https://img-blog.csdnimg.cn/2020060322140869.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTI5MjA3NjQ=,size_16,color_FFFFFF,t_70)
#查看subnet_id和network名字
$ neutron subnet-list
$ neutron net-list
![](https://img-blog.csdnimg.cn/2020060322140858.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTI5MjA3NjQ=,size_16,color_FFFFFF,t_70)
![](https://img-blog.csdnimg.cn/2020060322140855.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTI5MjA3NjQ=,size_16,color_FFFFFF,t_70)
#创建一个VIP的port
$ neutron port-create --fixed-ip subnet_id=92ddfff3-e272-47f8-935b-618cf7c5e9d3,ip_address=192.168.0.10 --name vip-port internal