环境:

openstack版本pike
控制节点主机openstack-controller(ubuntu 16.04.5) 172.27.34.37
计算节点主机openstack-computer(ubuntu 16.04.5) 172.27.34.38
vlan100
cirros01(172.27.100.6)、cirros02(172.27.100.12)
vlan101
cirros03(172.27.101.19)

vlan100和vlan101内instance默认不通


Ubuntu16.04.5下DevStack方式搭建p版OpenStack详见:http://blog.51cto.com/3241766/2323945


本文测试内容有:

  1. 创建router实现不同vlan互通;

  2. 外网访问配置,使instance可连接外网;

  3. floating ip配置,为instance分配浮动ip,外网可直接访问实例;


vlan配置:

图片.png


L3 agent

配置

root@openstack-controller:~# view /etc/neutron/l3_agent.ini
interface_driver = linuxbridge

运行情况

root@openstack-controller:~# su - stack
stack@openstack-controller:~$ source devstack/openrc admin admin
stack@openstack-controller:~$ openstack network agent list

图片.png


router

创建router router_100_101

图片.png

新增interface

图片.png

子网分别选择vlan100和vlan10图片.png

配置完router后vlan100和vlan101此时可以ping通

cirros03 ping cirros01

图片.png

第一个目标实现。


外网访问配置

配置ml2

stack@openstack-controller:~$ view /etc/neutron/plugins/ml2/ml2_conf.ini
[ml2_type_flat]
flat_networks = externaltt

[ml2_type_vlan]
network_vlan_ranges = default:3001:4000

[linux_bridge]
physical_interface_mappings = default:ens192,externaltt:ens224

由于本文外网环境为flat网络(物理机的网卡接在交换机的access口),此处外网配置选择flat,对应网卡ens224,虚拟机内网为vlan,对应网卡ens192。


创建外部网络ext_net

图片.png

图片.png

172.27.34.0该网段需能访问外网。

图片.png

去除dhcp选项

图片.png

ext_net创建完成


将外网连接至虚拟路由器

图片.png

图片.png

发现虚拟路由器新增了一个接口6489e9ea-23a3

图片.png

cirros ping外网

图片.png

第二个目标实现。


创建floating ip

floating ip提供静态NAT功能,配置在router提供网关的外网interface上。

图片.png

关联实例cirros03

图片.png

图片.png

查看cirros

图片.png


安全组配置

图片.png

添加安全组规则

图片.png添加icmp规则是保证能ping通,添加ssh规则是为了外网能直接ssh实例


测试

图片.png

计算节点可以ping通cirros03并且可以直接ssh连接。

第三个目标实现。


floating ip原理为iptables增加了两条处理floating ip的规则:

图片.png