Openstack icehouse ubuntu 部署 - 虚拟机网络配置(GRE配置版本)

来源:互联网 发布:数据字典是用来定义 编辑:程序博客网 时间:2024/05/22 06:36

Openstack icehouse ubuntu 部署 - 虚拟机网络配置(GRE配置版本)

1、配置前提
 
 ​已按照icehouse官方文档配置好了一套 3 节点的openstack环境。
2、环境配置说明
本人是用家用笔记本创建的3台ubuntu的虚拟机来构建的,虚拟机配置信息如下:
NAT模式下外网网关:172.16.77.2

 

节点名称虚拟硬件(硬盘,内存,CPU)ip地址(接口)作用与运行的服务 controller20GB, 1GB, 1eth0:172.16.77.11(管理网络)neutron、nova、glance、rabbitmq-server、DB network20GB, 1GB, 1eth0:172.16.77.21(管理网络)  
eth1:192.168.10.21(虚拟机通信网络) 
eth2:ext(外网网络)neutron,openvswitch(l2,l3,dhcp agent) compute120GB, 2GB, 2eth0:172.16.77.31(管理网络)
eth1:192.168.10.31(虚拟机通信网络)   neutron,nova-compute,openvswitch(l2 agent)

 

为了方便配置,将各节点网络做了些修改后变成如下配置:
节点名称虚拟硬件(硬盘,内存,CPU)ip地址(接口)作用与运行的服务 controller20GB, 1GB, 1eth0:172.16.77.11(管理网络、外网网络)neutron、nova、glance、rabbitmq-server、DB network20GB, 1GB, 1eth0:172.16.77.21(管理网络、外网网络)  
eth1:192.168.10.21(虚拟机通信网络) neutron,openvswitch(l2,l3,dhcp agent) compute120GB, 2GB, 2eth0:172.16.77.31(管理网络、外网网络
eth1:192.168.10.31(虚拟机通信网络)   neutron,nova-compute,openvswitch(l2 agent)


3、网络节点配置
首先我们按照官方指导创建两个neutron系统默认使用的openswitch网桥(br-ex, br-int):
# ovs-vsctl add-br br-int
# ovs-vsctl add-br br-ex
接下来官方中,需要将一个连接在外网上的接口(比如eth2)加入到br-ex(该网桥就是负责外网与虚拟路由的连接)中,如下
# ovs-vsctl add-port br-ex eth2
因为我在网络上做了些调整,那么现在将eth0加入到网桥中:
# ovs-vsctl add-port br-ex eth0
我们会发现,配置完成后网络节点不能上网了,就连网关也ping不通了,因为加入到网桥的接口是作为二层接口来看待的,因此
没有IP地址,也就是说我们现在的网络节点没有了IP地址了,成为了为一台二层设备了,不能进行任何的三层(IP网络)操作了.
其实使用ovs-vsctl命令创建网桥时,会默认加入一个与网桥名同名的一个三层接口,对br-ex来说就是br-ex网络接口,
可以通过ifconfig命令或以下命令查看:
ifconfig
eth0      Link encap:Ethernet  HWaddr 00:0c:29:e5:58:67  
          inet6 addr: fe80::20c:29ff:fee5:5867/64 Scope:Link
          UP BROADCAST RUNNING PROMISC MULTICAST  MTU:1500  Metric:1
......
# ovs-vsctl show
......
Bridge br-ex
        Port br-ex
            Interface br-ex
                type: internal
        Port "eth0"
            Interface "eth0"
        Port "qg-996c4fe2-16"
            Interface "qg-996c4fe2-16"
                type: internal
        Port "qg-b9e495ce-45"
            Interface "qg-b9e495ce-45"
                type: internal
    ovs_version: "2.0.2"
因此我们可以将 br-ex  接口的ip地址设成原来eth0的地址,即网络节点的地址172.16.77.21/24,
同时需要修改路由表,添加一条从br-ex接口上的默认路由。
需要进行如下配置:
 
# ovs-vsctl add-br br-int
 
# ovs-vsctl add-br br-ex
 
# ovs-vsctl add-port br-ex eth0
 
# ifconfig br-ex 172.16.77.21 netmask 255.255.255.0
 
# route add default gw 172.16.77.2 br-ex

4、效果预览
​在配置之前,我们看下,最终要达到什么样的效果:
网络拓扑如下:

外网公共网络:ext-net(子网:172.16.77.0/24)
内部网络1:private1(子网:192.168.1.0/24)
内部网络2:private2(子网:192.168.2.0/24)
虚拟机demo-vm1、demo-vm2在网络private1上,配置如下:
demo-vm1: 固定IP(192.168.1.2)
demo-vm2: 固定IP(192.168.1.4)、float Ip(172.168.200.201)   
虚拟机demo-vm3在网络private2上,配置如下:
demo-vm3: 固定IP(192.168.2.2)、float Ip(172.168.200.204)
最终的网络目的是:
1  demo-vm1、demo-vm2 内部通讯正常
2  demo-vm1、demo-vm2 能和外部节点正常通讯
3  demo-vm2  和 demo-vm3 正常通讯
4  demo-vm3 能和外部节点正常通讯   
5  外部能正常访问demo-vm2、demo-vm3
 
5、配置网络、子网、路由和虚拟机
配置外网网络 ext-net
 
# neutron net-create ext-net --shared --router:external=True
 
# neutron subnet-create ext-net --name ext-subnet \
--allocation-pool start=172.16.77.200,end=172.16.77.240 \
--disable-dhcp --gateway 172.16.77.2 172.16.77.0/24
 
创建私有网络private1:
 
# neutron net-create private1
 
配置子网
# neutron subnet-create private1 --name private1-subnet \
--gateway 192.168.1.1 192.168.1.0/24
 
配置路由
#neutron router-create private1-router
 
添加路由内网接口
# neutron router-interface-add private1-router private1-subnet
 
设置路由外网网关
# neutron router-gateway-set private1-router ext-net
创建私有网络private2:
 
# neutron net-create private2
 
配置子网
# neutron subnet-create private2 --name private2-subnet \
--gateway 192.168.2.1 192.168.2.0/24
 
配置路由
#neutron router-create private2-router
 
添加路由内网接口
# neutron router-interface-add private2-router private2-subnet
 
设置路由外网网关
# neutron router-gateway-set private2-router ext-net
 
创建完成后,我们在horizon页面能看到相应的网络:

创建虚拟机,选择对应规划的网络,这里我是直接在horizon页面创建的。如下:
 
需要特别注意的是,创建虚拟机的用户请选择(demo用户)

固定IP是自动分配的,浮动IP在虚拟机创建完成后,点击动作 -> 更多 -> 绑定浮动IP,就可以从外部网络配置虚拟机的浮动IP了。

按照规划的IP创建好虚拟机后,需要配置默认防火墙的设置:
 
注意:虚拟机所在的 用户 下配置防火墙(我这里是demo用户):
 
开放防火墙访问:(ping)
# nova secgroup-add-rule default icmp -1 -1 0.0.0.0/0
开放远程访问端口:(ssh)
# nova secgroup-add-rule default tcp 22 22 0.0.0.0/0
 
(注意,请以demo用户环境变量去执行如下命令)
本人的环境变量如下:demo-openrc.sh
export OS_USERNAME=demo
export OS_PASSWORD=DEMO_PASS
export OS_TENANT_NAME=demo
export OS_AUTH_URL=http://icehouse1-controller:35357/v2.0
 
防火墙开放后,可以通过命令去检验是否可以访问虚拟机内部网络了:
 
在network节点,查看路由信息:
# ip netns
qdhcp-3f117010-e64e-42f2-8001-f20601b11bc0
qrouter-54378e42-205c-4fee-afde-e648fa821530
qdhcp-6dcaa9da-79ab-4550-8d47-00efa82eedb9
qrouter-83d34437-35b6-4dd5-a71f-62a91c3cf704
因为我们有两个路由,所以有多条信息
 
# ip netns exec qrouter-54378e42-205c-4fee-afde-e648fa821530 ping 192.168.2.2
PING 192.168.2.2 (192.168.2.2) 56(84) bytes of data.
64 bytes from 192.168.2.2: icmp_seq=1 ttl=64 time=16.3 ms
64 bytes from 192.168.2.2: icmp_seq=2 ttl=64 time=0.961 ms
 
如上配置完成后,验证下虚拟机之间、虚拟机外网访问、不通子网虚拟机之间、外部访问虚拟机是否OK了:
 
1  demo-vm1、demo-vm2 内部通讯正常
 

2  demo-vm1、demo-vm2 能和外部节点正常通讯

3  demo-vm2  和 demo-vm3 正常通讯

4  demo-vm3 能和外部节点正常通讯   
5  外部能正常访问demo-vm2、demo-vm3


 

0 0
原创粉丝点击