OpenStack实践系列⑦深入理解neutron和虚拟机
OpenStack实践系列⑦深入理解neutron和虚拟机
五、深入理解Neutron
5.1 虚拟机网卡和网桥
[root@node1 ~]# ifconfig
brq65c11cc3-8e: flags=<UP,BROADCAST,RUNNING,MULTICAST> mtu
inet 192.168.3.199 netmask 255.255.255.0 broadcast 192.168.3.255
ether :::3b:dc:7e txqueuelen (Ethernet)
RX packets bytes (168.6 MiB)
RX errors dropped overruns frame
TX packets bytes (44.7 MiB)
TX errors dropped overruns carrier collisions eth0: flags=<UP,BROADCAST,RUNNING,MULTICAST> mtu
ether :::3b:dc:7e txqueuelen (Ethernet)
RX packets bytes (1.0 GiB)
RX errors dropped overruns frame
TX packets bytes (51.5 MiB)
TX errors dropped overruns carrier collisions lo: flags=<UP,LOOPBACK,RUNNING> mtu
inet 127.0.0.1 netmask 255.0.0.0
inet6 :: prefixlen scopeid 0x10<host>
loop txqueuelen (Local Loopback)
RX packets bytes (201.1 MiB)
RX errors dropped overruns frame
TX packets bytes (201.1 MiB)
TX errors dropped overruns carrier collisions tap436a0452-af: flags=<UP,BROADCAST,RUNNING,MULTICAST> mtu
ether 4a:a6:af:6e:: txqueuelen (Ethernet)
RX packets bytes (1.5 MiB)
RX errors dropped overruns frame
TX packets bytes (158.1 MiB)
TX errors dropped overruns carrier collisions [root@node1 ~]# brctl show
bridge name bridge id STP enabled interfaces
brq65c11cc3-8e .0050563bdc7e no eth0
tap436a0452-af
brq65c11cc3-8e(网桥):可以理解为一个小交换机,网桥上的设备都和eth0能通(数据链路层),其中tap436a0452-af作为虚拟机的网卡,从而实现通信
5.2 不同场景网络类型和OpenStack网络分层
5.2.1 Openstack网络分类
5.2.2Openstack网络分层
首先网络分层肯定是基于OSI七层模型的,在这里就不在赘述,只对Openstack的网络进行分层讲解
网络:在实际的物理环境下,我们使用交换机或者集线器把多个计算机连接起来形成了网络,在Neutron的世界里,网络也是将多个不同的云主机连接起来。
子网:在实际的物理环境下,在一个网络中,我们可以将网络划分成多个逻辑子网,在Neutron的世界里,子网也是路属于网络下的
端口:在实际的物理环境下,每个字子网或者每个网络,都有很多的端口,比如交换机端口来供计算机链接,在Neutron的世界里端口也是隶属于子网下,云主机的网卡会对应到一个端口上。
路由器:在实际的网络环境下,不同网络或者不同逻辑子网之间如果需要进行通信,需要通过路由器进行路由,在Neutron的实际里路由也是这个作用,用来连接不同的网络或者子网。
5.3 五种neutron常见的模型
单一平面网络(也叫大二层网络,最初的 nova-network 网络模型)
单一平面网络的缺点:
a.存在单一网络瓶颈,缺乏可伸缩性。
b.缺乏合适的多租户隔离。
c.容易发生广播风暴,而且不能使用keepalived(vrrp组播)
多平面网络
混合平面私有网络
通过私有网络实现运营商路由功能
通过私有网络实现每个租户创建自己专属的网络区段
5.4 图解Neutron服务的几大组件
ML2(The Modular Layer2):提供一个新的插件ML2,这个插件可以作为一个框架同时支持不同的2层网络,类似于中间协调在作用,通过ml2
调用linuxbridge、openvswitch和其他商业的插件,保证了可以同时使用linuxbridge、openvswitch和其他商业的插件。
DHCP-Agent:为虚拟机分配IP地址,在创建虚拟机之前,创建了一个IP地址池,就是为了给虚拟机分配IP地址的。具体如下:
interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver
Dhcp-agent需要配置与plugin对应的interface_driver
dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq
当启动一个实例时,分配和配置(ip)的程序包含一个在dnsmasq config中储存ip地址的进程,接着启动或重载dnsmasq。通常,OpenStack在每个网络中只有一个neutron-dhcp-agent负责spawn一个dnsmasq,所以一个庞大的网络(包含所有子网)中只会有一个dnsmasq提供服务。理论上,并且根据实用的实验室测试,dnsmasq应该能每秒处理1000个DHCP请求
enable_isolated_metadata = true 启用独立的metadata,后续会有说明
L3-agent:名字为neutron-l3-agent,为客户机访问外部网络提供3层转发服务。也部署在网络节点上。
LBaas:负载均衡及服务。后续会有说明
六、虚拟机知多少
虚拟机对于宿主机来说,知识一个进程,通过libvirt调用kvm进行管理虚拟机,当然也可以使用virsh工具来管理虚拟机
查看所虚拟机的真实内容
切换到虚拟机默认的存放路径
[root@node2 ~]# cd /var/lib/nova/instances/
[root@node2 instances]# ls
b6ba588b-494d--ac8e-5c3978ba9150 _base compute_nodes locks
b6ba588b-494d-4055-ac8e-5c3978ba9150目录为虚拟机的ID(可通过nova list查看),详细内容如下
console.log 终端输出到此文件中
disk 虚拟磁盘,后端文件/var/lib/nova/instances/_base/fed362a98366776009c94e3d0856df41750b4353,使用的是copy on write模式,基础镜像就是这里的后端文件,只有变动的内容才放到disk文件中
[root@node2 b6ba588b-494d--ac8e-5c3978ba9150]# file disk
disk: QEMU QCOW Image (v3), has backing file (path /var/lib/nova/instances/_base/fed362a98366776009c94e3d0856df417), bytes [root@node2 b6ba588b-494d--ac8e-5c3978ba9150]# qemu-img info disk
image: disk
file format: qcow2
virtual size: .0G ( bytes)
disk size: 2.4M
cluster_size:
backing file: /var/lib/nova/instances/_base/fed362a98366776009c94e3d0856df41750b4353
Format specific information:
compat: 1.1
lazy refcounts: false
disk.info disk的详情
[root@node2 b6ba588b-494d-4055-ac8e-5c3978ba9150]# qemu-img info disk.info
image: disk.info
file format: raw
virtual size: 512 (512 bytes)
disk size: 4.0K
libvirt.xml 就是libvirt自动生成的xml,不可以改动此xml,因为改了也没什么卵用,此xml是启动虚拟机时动态生成的
compute_nodes记录了主机名和时间戳
[root@node2 instances]# cat compute_nodes
{"node2.chinasoft.com": 1493295366.200245}
locks目录:类似于写shell脚本时的lock文件
学习metadata
metadata(元数据)
在创建虚拟机时可以添加或者修改虚拟机的默认属性,例如主机名,key-pair,ip地址等
在新创建的虚拟机上查看metadata的数据,这些都是可以通过metadata生成
账号cirros
密码cubswin:)
[root@node2 instances]# ssh cirros@192.168.3.102
$ curl http://169.254.169.254/2009-04-04/meta-data
ami-id
ami-launch-index
ami-manifest-path
block-device-mapping/
hostname
instance-action
instance-id
instance-type
local-hostname
local-ipv4
placement/
public-hostname
public-ipv4
public-keys/
reservation-id
security-groups 查看路由
$ ip ro li
default via 192.168.3.1 dev eth0
169.254.169.254 via 192.168.3.100 dev eth0
192.168.3.0/ dev eth0 src 192.168.3.102
在控制节点查看网络的命名空间ns
[root@node1 instances]# ip netns li
qdhcp-65c11cc3-8efb-46de-8d14-690431835bae (id: 0)
查看上述ns的具体网卡情况,也就是在命名空间中使用ip ad li并查看端口占用情况
[root@node1 instances]# ip netns exec qdhcp-65c11cc3-8efb-46de-8d14-690431835bae ip ad li
: lo: <LOOPBACK,UP,LOWER_UP> mtu qdisc noqueue state UNKNOWN qlen
link/loopback ::::: brd :::::
inet 127.0.0.1/ scope host lo
valid_lft forever preferred_lft forever
inet6 ::/ scope host
valid_lft forever preferred_lft forever
: ns-436a0452-af@if3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu qdisc noqueue state UP qlen
link/ether fa::3e:a3::b9 brd ff:ff:ff:ff:ff:ff link-netnsid
inet 192.168.3.100/ brd 192.168.3.255 scope global ns-436a0452-af
valid_lft forever preferred_lft forever
inet 169.254.169.254/ brd 169.254.255.255 scope global ns-436a0452-af
valid_lft forever preferred_lft forever
inet6 fe80::f816:3eff:fea3:76b9/ scope link
valid_lft forever preferred_lft forever [root@node1 instances]# ip netns exec qdhcp-65c11cc3-8efb-46de-8d14-690431835bae netstat -tunlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0.0.0.0: 0.0.0.0:* LISTEN /python2
tcp 192.168.3.100: 0.0.0.0:* LISTEN /dnsmasq
tcp 169.254.169.254: 0.0.0.0:* LISTEN /dnsmasq
tcp6 fe80::f816:3eff:fea3: :::* LISTEN /dnsmasq
udp 192.168.3.100: 0.0.0.0:* /dnsmasq
udp 169.254.169.254: 0.0.0.0:* /dnsmasq
udp 0.0.0.0: 0.0.0.0:* /dnsmasq
udp6 fe80::f816:3eff:fea3: :::* /dnsmasq
总结
命名空间ns的ip地址dhcp服务分配的192.168.3.100而且还有一个169.254.169.254的ip,并在此启用了一个http服务(不仅提供http,还提供dns解析等),命名空间在neutron的dhcp-agent配置文件中启用了service_metadata_proxy = True而生效,
所以虚拟机的路由是命名空间通过dhcp推送(ip ro li查看出来的)的,key-pair就是通过命名空间在虚拟机生成时在/etc/rc.local中写一个curl的脚本把key-pair定位到.ssh目录下,并且改名即可,其他同理
OpenStack实践系列⑦深入理解neutron和虚拟机的更多相关文章
- OpenStack实践系列⑤网络服务Neutron
OpenStack实践系列⑤网络服务Neutron 3.8 Neturn 服务部署 注册neutron服务 [root@node1 ~]# source admin-openrc.sh [root@n ...
- OpenStack实践系列⑥构建虚拟机实例
OpenStack实践系列⑥构建虚拟机实例 四.创建一台虚拟机图解网络,并创建一个真实的桥接网络 创建一个单一扁平网络(名字:flat),网络类型为flat,网络适共享的(share),网络提供者:p ...
- OpenStack实践系列⑨云硬盘服务Cinder
OpenStack实践系列⑨云硬盘服务Cinder八.cinder8.1存储的三大分类 块存储:硬盘,磁盘阵列DAS,SAN存储 文件存储:nfs,GluserFS,Ceph(PB级分布式文件系统), ...
- OpenStack实践系列⑧可视化服务Horizon之Dashboard演示
OpenStack实践系列⑧可视化服务Horizon之Dashboard演示 七.可视化服务Horizon之Dashboard演示 仪表板依赖于功能核心服务,包括身份,图像服务,计算和网络两种(neu ...
- OpenStack实践系列④计算服务Nova
OpenStack实践系列④计算服务Nova 3.6 Nova控制节点的部署创建服务的凭证,完成下列步骤: 创建nova用户,并加入到service项目中,赋予admin权限 [root@node1 ...
- OpenStack实践系列①openstack简介及基础环境部署
OpenStack实践系列①openstack简介及基础环境部署 一.OpenStack初探1.1 OpenStack简介 OpenStack是一整套开源软件项目的综合,它允许企业或服务提供者建立.运 ...
- OpenStack实践系列②认证服务Keystone
OpenStack实践系列②认证服务Keystone 三.实战OpenStack之控制节点3.1 CentOS7的时间同步服务器chrony 下载chrony # yum install -y chr ...
- OpenStack实践系列③镜像服务Glance
OpenStack实践系列③镜像服务Glance 3.5 Glance部署 修改glance-api和glance-registry的配置文件,同步数据库 [root@node1 ~]# vim /e ...
- 深入理解 Neutron -- OpenStack 网络实现(4):网络名字空间
问题导读1.如何查看网络名字空间?2.网络名字空间开头的名字有什么规律?3.dhcp服务是如何实现的?4.router的实现是通过iptables进行的是否正确?5.SNAT和DNAT规则有什么作用? ...
随机推荐
- 2018牛客网暑期ACM多校训练营(第二场)J Farm(树状数组)
题意 n*m的农场有若干种不同种类作物,如果作物接受了不同种类的肥料就会枯萎.现在进行t次施肥,每次对一个矩形区域施某种类的肥料.问最后枯萎的作物是多少. 分析 作者:xseventh链接:https ...
- Postman 安装及使用入门教程 (谷歌浏览器插件版)
postman 在 谷歌浏览器中插件版 http://www.cnblogs.com/mafly/p/postman.html Postman 4.1.2 下载地址: http://files.cnb ...
- SQL Server进阶(十一)存储过程
存储过程和函数的区别 存储过程是第一次编译之后就会被存储的下来的预编译对象,之后无论何时调用它都会去执行已经编译好的代码.而函数每次执行都需要编译一次.总结下来有下面几个区别: 基本不同: 函数必须有 ...
- Java时间转换的一个特性
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm"); Date codedat ...
- 使用 Quartz.NET 实现作业串行执行
Ø 前言 前两天,在公司的一个项目中编写 Windows 服务时,需求是当A服务运行完后,B服务才能运行,B服务运行后,C服务才能运行.因为B服务的数据依赖于A服务生成的数据,而C服务的数据又依赖于 ...
- 清除 SQL Server Management Studio 服务器名称历史记录
Ø 前言 在开发过程中,经常使用 SQL Server Management Studio 连接本地或远程 SQL Server 服务器,时间长了可能有些名称就不用了或者重复了,SQL Server ...
- floyd求最小环
;i<=n;i++) ;j<=n;j++) g[i][j]=g[j][i]=dis[i][j]=dis[j][i]=inf; ;i<=m;i++){ int u,v,w;scanf( ...
- Swiper.js使用教程
官网地址:(http://www.swiper.com.cn/). 一.Swiper.js简介: Swiper(前称Swiper master) 是一款免费以及轻量级的移动设备触控滑块的js框架,使用 ...
- Coursera, Machine Learning, Unsupervised Learning, K-means, Dimentionality Reduction
Clustering K-means: 基本思想是先随机选择要分类数目的点,然后找出距离这些点最近的training data 着色,距离哪个点近就算哪种类型,再对每种分类算出平均值,把中心点移动到 ...
- Coursera Deep Learning 2 Improving Deep Neural Networks: Hyperparameter tuning, Regularization and Optimization - week3, Hyperparameter tuning, Batch Normalization and Programming Frameworks
Tuning process 下图中的需要tune的parameter的先后顺序, 红色>黄色>紫色,其他基本不会tune. 先讲到怎么选hyperparameter, 需要随机选取(sa ...