当使用OVN来做为neutron的后端,来实现SDN方案时,我们也会需要虚拟机连接外网,本文记录操作方法:
环境:pike版本,创建好net1,子网subnet1以及使用该网络的虚拟机vm1
动手操作-任意计算节点
OVN是一种分布式的网络,也没有网络节点,我们挑选任意一个计算节点来提供外部网络。
创建外部连接的网桥,做OVN映射
#ovs-vsctl add-br br-ex
#ovs-vsctl set Open_vSwitch . external-ids:ovn-bridge-mappings=provider1:br-ex
这里创建了一个外部网桥br-ex,并将其映射到OVN的数据库中,映射名称为provier1
将宿主机上的外部网卡添加到网桥上
#ovs-vsctl add-port br-ex ens192
#ip link set br-ex up
为了使原来的网络依然可用,我会把ens192这个外网网卡的网络地址放到br-ex上,这样会让以前依赖该网络的服务依然可用
#ip addr add 10.10.38.133/24 dev br-ex
#systemctl restart network
调整路由策略
由于网卡的调整,路由信息需要调整一下
#ip route
default via 10.152.35.254 dev ens192
10.10.38.0/24 dev br-ex proto kernel scope link src 10.10.38.112
10.10.31.0/24 dev ens224 proto kernel scope link src 10.10.31.112
169.254.0.0/16 dev ens192 scope link metric 1002
169.254.0.0/16 dev ens224 scope link metric 1003
删除ens192相关的路由,将网卡替换为br-ex
#ip route del default via 10.152.35.254
#ip route add default via 10.152.35.254 dev br-ex
这里只是替换了默认路由,如果你有之前网卡的其他路由也别忘了替换
至此,计算节点就完成了。
动手操作-控制节点
修改配置文件,设置外网提供者provider
修改provider的值,这里名称我们设置为provider1。至于什么是provider以及openstack的provider模式和self-service模式的区别,可以参考我的这篇文章
#vim /etc/neutron/plugins/ml2/ml2_conf.ini
[ml2_type_flat]
flat_networks = provider1
重启neutron-server
#systemctl restart neutron-server
创建路由器
#neutron router-create router1
将虚拟机所在网络子网挂在路由器上
#neutron router-interface-add router1 subnet1
创建连接外部的network
#openstack network create ext-net --external --provider-network-type flat --provider-physical-network provider1
这里创建的网络名称为ext-net ,映射的物理网络名称是provider1
创建与外部网络一致的子网
#neutron subnet-create ext-net 10.152.35.0/24 --gateway 10.152.35.254 --allocation-pool start=10.152.35.200,end=10.152.35.208 --dns-nameserver 114.114.114.114
这里指定了网关地址以及ip分配范围和dns,也可以不写,会自动分配,不过写上更为准确
虚拟机连接外网
#neutron router-gateway-set router1 ext-net
将ext-net的网络加到对应路由器就可以,这时候你就会发现虚拟机已经可以通外网了
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)