用外部物理路由器时使用Neutron dhcp-agent提供的metadata服务(by quqi99)
作者:张华  发表于:2015-12-29
版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明
( http://blog.csdn.net/quqi99 )
环境搭建
外部物理路由器可以通过配置bridge_mappings参数,另外想要在一个计算节点上同时使用flat, vlan, gre, vxlan网络需配置tenant_network_types = flat,vlan,gre,vxlan。
/etc/neutron/plugins/ml2/ml2_conf.ini
[ml2]
tenant_network_types = flat,vlan,gre,vxlan
type_drivers = local,flat,vlan,gre,vxlan
mechanism_drivers = openvswitch
[ovs]
bridge_mappings = physnet1:br-phy
使用devstack搭建环境的话,很简单,加上Q_ML2_TENANT_NETWORK_TYPE=flat,vlan,gre,vxlan 即可。
br-phy这个ovs网桥可以随便给它一个IP模拟,如172.16.1.1。当然,如果是真实物理网络的话,可以使用type=internal参数允许IP 172.16.1.1仍然设置在eth0上(别设置在br-phy上),这样不会对你的物理机的网络造成影响。
sudo ovs-vsctl -- --may-exist add-port br-phy eth0 -- set interface eth0 type=internal
配置使用dhcp-agent上的metadata proxy
demo@openstack:~$ grep -r '^enable_' /etc/neutron/dhcp_agent.ini
enable_isolated_metadata = True
enable_metadata_network = True demo@openstack:~$ grep -r '^enable_' /etc/neutron/l3_agent.ini
enable_metadata_proxy = False
创建隔离网络
由于使用了外部物理网络,也就没有了l3-agent。由于还要使用neutron metadata,那么需要启动dhcp agent上的metadata proxy服务,但这要求使用隔离网络(最新的代码不用隔离子网也可以,但要指定force_metadata=True )。
所以隔离网络是指在neutron中有一个port连着subnet,且这个port的IP也是gatway的IP。所以在创建子网中指定--no-gateway方式创建的子网是隔离子网(neutron subnet-create isolate_net 10.0.3.0/24 --no-gateway --name=isolate_subnet),这种方式显然不符合使用外部网络的要求,下面虽然通过--gateway指定了网关,但由于是外部网关(--router:external=True),所以它实际也满足隔离子网的要求。
- demo@openstack:~$ neutron net-create phy_net -- <strong>--router:external=True </strong>--provider:network_type flat --provider:physical_network physnet1
 - demo@openstack:~$ neutron subnet-create --allocation-pool start=172.16.1.102,end=172.16.1.126 <strong>--gateway </strong>172.16.1.1 phy_net 172.16.1.101/24 --enable_dhcp=True --name=phy_subnet_with_dhcp
 - demo@openstack:~$ neutron net-list |grep phy_net
 - | ea600f11-4b53-4ab0-88e2-63f2fa2e2312 | phy_net | 51724b13-cc5f-4fff-8635-9569968fb212 172.16.1.0/24 |
 
测试步骤
dhcp-agent上的metadata proxy与l3-agent上metadata proxy的最大不同是,dhcp-agent上的使用端口80,l3-agent上的使用端口9697,所以前者不需要到9697的DNAT规则。剩下的故事就和l3-agent上的metadata proxy一模一样了.
demo@openstack:~$ sudo ip netns exec qdhcp-ea600f11-4b53-4ab0-88e2-63f2fa2e2312 ip addr show tap16021052-cb
49: tap16021052-cb: <BROADCAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default 
    link/ether fa:16:3e:be:37:bb brd ff:ff:ff:ff:ff:ff
    inet 172.16.1.102/24 brd 172.16.1.255 scope global tap16021052-cb
       valid_lft forever preferred_lft forever
    inet 169.254.169.254/16 brd 169.254.255.255 scope global tap16021052-cb
       valid_lft forever preferred_lft forever
demo@openstack:~$ sudo ip netns exec qdhcp-ea600f11-4b53-4ab0-88e2-63f2fa2e2312 route -n |grep 169
169.254.0.0     0.0.0.0         255.255.0.0     U     0      0        0 tap16021052-cb
demo@openstack:~$ nova boot --flavor 1 --image cirros-0.3.4-x86_64-uec --nic net-id=ea600f11-4b53-4ab0-88e2-63f2fa2e2312 i1
demo@openstack:~/devstack$ nova list
+--------------------------------------+------+--------+------------+-------------+----------------------+
| ID                                   | Name | Status | Task State | Power State | Networks             |
+--------------------------------------+------+--------+------------+-------------+----------------------+
| fa0183ca-6369-4042-8f50-e9afea70df83 | i1   | ACTIVE | -          | Running     | phy_net=172.16.1.103 |
+--------------------------------------+------+--------+------------+-------------+----------------------
demo@openstack:~$ ping -c 1 172.16.1.103
PING 172.16.1.103 (172.16.1.103) 56(84) bytes of data.
64 bytes from 172.16.1.103: icmp_seq=1 ttl=64 time=0.474 ms
--- 172.16.1.103 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.474/0.474/0.474/0.000 ms
demo@openstack:~$ ssh cirros@172.16.1.103
The authenticity of host '172.16.1.103 (172.16.1.103)' can't be established.
RSA key fingerprint is b3:49:13:b3:a0:13:de:a6:6e:18:14:cb:29:8a:8a:db.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '172.16.1.103' (RSA) to the list of known hosts.
cirros@172.16.1.103's password: 
$ route -n |grep 169
169.254.169.254 172.16.1.102    255.255.255.255 UGH   0      0        0 eth0
$ wget http://169.254.169.254/openstack
Connecting to 169.254.169.254 (169.254.169.254:80)
openstack            100% |****************************************************|    39   0:00:00 ETA
$
demo@openstack:~$ sudo cat /opt/stack/data/neutron/dhcp/ea600f11-4b53-4ab0-88e2-63f2fa2e2312/opts |grep 169
tag:tag0,option:classless-static-route,169.254.169.254/32,172.16.1.102,0.0.0.0/0,172.16.1.1
tag:tag0,249,169.254.169.254/32,172.16.1.102,0.0.0.0/0,172.16.1.1
用外部物理路由器时与外部dhcp服务时如何使用metadata服务(by quqi99)
http://blog.csdn.net/quqi99/article/details/50440347
用外部物理路由器时使用Neutron dhcp-agent提供的metadata服务(by quqi99)的更多相关文章
- 用外部物理路由器时与外部dhcp服务时怎样使用metadata服务(by quqi99)
		
作者:张华 发表于:2015-12-31版权声明:能够随意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明 ( http://blog.csdn.net/quqi99 ) 用外部 ...
 - HoloWAN在连接路由器时应该选择WAN口还是LAN口,有什么区别?
		
HoloWAN在连接路由器时应该选择WAN口还是LAN口,有什么区别? 在解决问题前,需要连接到,路由器的WAN口和LAN口的作用不同. WAN口是对外的接口,连接广域网.当联网设备和路由器都开启了D ...
 - sqlserver错误"试图扩大物理文件时,MODIFY FILE 遇到操作系统错误 112(磁盘空间不足。)。"处理
		
正常还原的时候报错: Microsoft SQL-DMO (ODBC SQLState: 42000)---------------------------试图扩大物理文件时,MODIFY FILE ...
 - 外部表查询时出现ORA-29913和ORA-29400错误
		
create table t_ext_tab(id char(1),name char(6)) organization external( type oracle_loader default di ...
 - 有引用外部jar包时(J2SE)生成jar文件
		
一.工程没有引用外部jar包时(J2SE) 选中工程---->右键,Export...--->Java--->选择JAR file--->next-->选择jar fil ...
 - neutron dhcp ha 实验
		
4个节点(controller, network,2 compute nodes) 1.0 on the network node 1.1 set –I ‘s/start] on/#start\ ...
 - 路由器基础配置之dhcp配置
		
我们将以上面的拓扑图为例,router9为dhcp的服务器,为pc4,5,6分配三个不同网段的地址,pool为要分配的三个地址池,我们要把pc4设置为12网段,pc5设置成34网段,pc6设置成56网 ...
 - neutron dhcp
		
neutron dhcp 采用dnsmasq服务来实现.和传统的 dhcp 一样, dhcp请求也分为4步 The client sends a discover ("I'm a clien ...
 - 理解 OpenStack 高可用(HA)(2):Neutron L3 Agent HA 之 虚拟路由冗余协议(VRRP)
		
本系列会分析OpenStack 的高可用性(HA)概念和解决方案: (1)OpenStack 高可用方案概述 (2)Neutron L3 Agent HA - VRRP (虚拟路由冗余协议) (3)N ...
 
随机推荐
- grafana-----Time Range Controls
			
Grafana提供了许多方法来管理时间的可视化数据的范围,在Dashboard-level和Panel-level都有. 在右上角,您有主仪表板时间选择器(它位于“Zoom out”和“Refresh ...
 - "大中台、小前台”新架构下,阿里大数据接下来怎么玩?   (2016-01-05 11:39:50)
			
"大中台.小前台”新架构下,阿里大数据接下来怎么玩?_炬鼎力_新浪博客 http://blog.sina.com.cn/s/blog_1427354e00102vzyq.html " ...
 - 回顾: Python面向对象三大特性
			
继承 待整理^_^ 封装 待整理^_^ 多态 待整理^_^
 - python多进程编程(二)
			
进程同步(锁) 进程之间数据不共享,但是共享同一套文件系统,所以访问同一个文件,或同一个打印终端,是没有问题的, 而共享带来的是竞争,竞争带来的结果就是错乱,如何控制,就是加锁处理 part1:多个进 ...
 - bzoj3007 解救小云公主
			
3007: 解救小云公主 Time Limit: 5 Sec Memory Limit: 512 MB Submit: 159 Solved: 71 [id=3007" style=&q ...
 - Linux安装配置
			
虚拟机配置Linux镜像文件 配置网路 防火墙 一.虚拟机配置Linux镜像文件 1.将下载好的Linux镜像文件载入进来 2.启动虚拟机,安装 3.此步为是否检测linux系统,我们选择" ...
 - go语言之并发编程同步一
			
前面介绍了采用go语法的并行操作以及channel.既然是并行操作,那么就涉及到数据原子性以及同步的问题.所以在Go里面也需要采用同步的机制. 互斥锁: 由标准库代码包sync中的Mutex结构体类型 ...
 - JavaScript你所不知道的困惑(3)
			
版权声明:本文出自水寒的原创文章.未经博主同意不得转载. https://blog.csdn.net/lxq_xsyu/article/details/25600011 困惑一: window.col ...
 - ModelSim之TCL仿真
			
在使用ModelSim时,我们一般都是从界面UI进行操作的,这样也比较直观易学.但是在很多的调试时,发现很多操作都是重复的,修改一下代码就要再次进行相关操作,这样很没有效率.其实,ModelSim是可 ...
 - django事物回滚
			
往数据库写入数据时,不经意间就会写入不完整的数据,我们称之为脏数据.事务管理(transaction)可以防止这种情况发生.事务管理一旦检测到写入异常,会执行回滚操作,即要么写入完整的数据,要么不写入 ...