王艳玲 发表于 2017-12-5 13:09:15

深入浅出新一代云网络——VPC中的那些功能与基于OpenStack Neutron的实现(四)-云主机vip与vip绑定浮动IP

  在openstack环境创建的多台云主机配置keepalived作主备,默认情况下无法生效,直接对云主机一张网卡配置两个IP进行测试也是同样结果,因为:

  可以看到,port所在的宿主机上iptables 对 MAC地址和IP进行了限制。所以需要如下操作:
  pre.   确认云主机网卡port_id



nova interface-list
  1.确认 ml2 配置中



arp_responder = False
   或 未配置(因为默认为false);
  
  2.对需要配置vip的port,可以直接 disable 安全组 (不推荐):



neutron port-update --no-security-groups --port-security-enabled=False
      eg.   



neutron port-update --no-security-groups --port-security-enabled=False aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa
     也可以使用 allowed-address-pair功能 (推荐) :



neutron port-update --allowed-address-pair ip_address=
   ,如:
      eg.   



neutron port-update --allowed-address-pair ip_address=10.1.100.100 aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa
  



neutron port-update --allowed-address-pair ip_address=10.1.100.100/31 aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa

  到这一步为止,云主机内配置上面的 vip 就已经可以使用了。
  3.为了避免后续创建的云资产占用vip ,创建闲置的port,占用掉vip地址:



neutron port-create --fixed-ip ip_address=


neutron port-create --fixed-ip ip_address=10.1.100.100 bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb
  此时这个port 只是一个DB里的一个记录,不会在宿主机上创建tap设备或增加iptables chain,不用担心额外的资源损耗。它的用途仅仅是占用IP地址以免被其它资源使用而已。
  如下图,dhcp不会再分配 10.1.100.100 这个ip
  
  接下来开始将浮动IP绑定给vip,平时我们在dashboard处是给云主机绑定浮动IP,常用的CLI /api 是



novafloating-ip-associate <server><address>
  ,可这样浮动IP绑定的是云主机网卡原始IP (10.1.100.7),不是vip (10.1.100.100)


  ,所以我们得使用neutron 的相关接口。
  4.   创建浮动IP



neutron floatingip-create


neutron floatingip-create cccccccc-cccc-cccc-cccc-cccccccccccc
  5.   绑定



neutron floatingip-associate
  先将刚才通过nova CLI 绑定的解绑

  开始绑定



neutron floatingip-associate cccccccc-cccc-cccc-cccc-cccccccccccc aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa
  再去l3 节点的net ns里可以看到

  已经绑定的是 vip (10.1.100.100) 了

f3love 发表于 2017-12-5 13:24:43

谢谢分享
页: [1]
查看完整版本: 深入浅出新一代云网络——VPC中的那些功能与基于OpenStack Neutron的实现(四)-云主机vip与vip绑定浮动IP