1、openstack的使用;

(1)使用openstack创建的用户默认是default域,角色是user;

(2)域——》角色——》用户——》项目

(3)配额在管理员登录后再项目中配;

(4)网络地址不够用时需要使用管理员登录,然后添加网络;

(5)镜像实例类型和网络可以设置为公有和私有;

(6)只有存在项目才能够创建虚拟机,用户在自己的项目中创建的虚拟机只有自己能够看到,超级管理员admin能操作所有的云主机;

(7)openstak只有两种角色,一种是admin,一种是普通角色,user; 因为配置的原因使用dashboard创建的用户默认域是default,角色是user;

(8)所有的用户和项目的创建都有管理员进行操作;

(9)用户可以在自己的项目中创建专属于自己的镜像、网络、秘钥对(只属于项目,管理员也看不到)、磁盘;

2、openstack虚拟机创建过程;

(1)虚拟机创建流程图:

horizon、命令行、openstack api创建;

1)keystone验证;

2)nova内部组件的协调;

3)nova和其它外部组件的协调;

4)nova-compute通过libvirt创建虚拟机,在创建的时候通过nova conductor轮询更新数据库;

(2)keystone的作用:

1)用户验证,所有的用户都需要keystone进行验证;

2)服务目录的管理所有的服务都要在keystone上注册服务和endpoint(admin(管理使用),internal(内部使用),public(外部使用));

(3)novascheduler的作用:

1)从消息队列中获取创建云主机的类型,然后到nova-db中查找计算出满足创建云主机的计算节

点(nova-compute);

2)将得到的计算节点主机信息发送到消息队列中,相应的计算节点服务器从消息队列中获取自己需要创建

虚拟机的命令;

(4)消息队列的作用:

消息队列是openstack的交通枢纽,nova组件之间的交互以及nova和其它服务的交互都要通过消息队列;

(5)neutron使用的网络:

1)单一扁平网络是宿主机和虚拟机在同一个网络里,不需要路由;

2)

3、openstack和kvm的区别:

openstack是云计算iaas的一种实现,kvm是一种虚拟化的技术,openstack使用了kvm虚拟化技术来

创建虚拟机;

4、使用openstack私有云的价值:

大规模使用虚拟化,提高物理机的资源利用率,方便集中管理,有助于隔离资源,虚拟机可以做镜像和快照,

如果需要创建多个相同的虚拟机,只需要用创建好的镜像创建即可,且openstack社区比较活跃,出现问题有助

于解决,架构比较清晰,且openstack使用的是python开发,方便开发使用;

如果在一台服务器上起多个进程,确实会提高服务器的资源利用率,但是会带来难题,列如在

一台机器上起多个tomcat,需要更改端口,管理的复杂度增加了,资源并没有得到隔离,如果一个tomcat

把内存使用完了,那么这台机器上的所有tomcat都会挂掉;

5、深入了解虚拟机:

(1)控制节点的镜像位置和dashboard中的信息:

1)虚拟机的信息:

ls -l /var/lib/glance/images/a036ec33-6df8-45ec-adbe-4b0ac189dc8c

-rw-r----- 1 glance glance 13267968 3月 28 17:46 /var/lib/glance/images/a036ec33-6df8-45ec-adbe-4b0ac189dc8c

2)dashboard中的信息:

(2)创建的虚拟机所在的计算节点信息和在dashboard中的对应信息:

1)虚拟机的信息:

ls -l /var/lib/nova/instances/

总用量 4

drwxr-xr-x 2 nova nova 54 3月 31 22:56 b431f17d-0a1a-491c-9020-05da958cddd0

#创建的虚拟机目录,目录名称是虚拟机的id号;

drwxr-xr-x 2 nova nova 54 3月 30 23:31 _base

#虚拟机基础镜像,是从控制节点的/var/lib/glance/images目录下面拷贝过来的镜像,格式一般是raw格式;

-rw-r--r-- 1 nova nova 31 4月 1 02:02 compute_nodes

#当前计算节点的信息;

drwxr-xr-x 2 nova nova 54 3月 31 23:44 d8c3f760-087b-478f-91cb-8e9edfe72e19

drwxr-xr-x 2 nova nova 93 3月 30 23:31 locks

#锁信息;

ls -l /var/lib/nova/instances/b431f17d-0a1a-491c-9020-05da958cddd0/

总用量 2844

-rw------- 1 root root 19785 3月 31 23:04 console.log

#虚拟机的控制控制台输出内容;

-rw-r--r-- 1 root root 2949120 3月 31 23:04 disk

#####################################################################################

#虚拟机的磁盘

#qemu-img info disk

# image: disk

# file format: qcow2

# virtual size: 1.0G (1073741824 bytes)

# disk size: 2.8M

# cluster_size: 65536

# backing file: /var/lib/nova/instances/_base/481422942b64717afc8ce72083b1dd1a8175b1cb

# Format specific information:

# compat: 1.1

# lazy refcounts: false

# refcount bits: 16

#corrupt: false

#######################################################################################

-rw-r--r-- 1 nova nova 79 3月 31 02:21 disk.info

#######################################################################################

#虚拟机的磁盘格式和位置信息;

#cat disk.info

# {"/var/lib/nova/instances/b431f17d-0a1a-491c-9020-05da958cddd0/disk": "qcow2"}

#

########################################################################################

ls -l /etc/libvirt/qemu

总用量 16

-rw------- 1 root root 4144 4月 1 10:07 instance-00000004.xml

#虚拟机的xml文件,该文件不能够改动,因为使用nova管理虚拟机时,该配置文件会随虚拟机的配置而改变,虚拟机重启无效;

-rw------- 1 root root 4132 3月 31 23:44 instance-00000005.xml

drwx------ 3 root root 23 3月 29 17:22 networks

#提示:虚拟机不支持内存和cpu的热添加,需要重启机器,公有云也是这种做法;

virsh list --all

Id 名称 状态

----------------------------------------------------

1 instance-00000004 running

- instance-00000005 关闭

2)dashboard中的信息:

(3)虚拟机的网络(计算节点):

brctl show

bridge name bridge id STP enabled interfaces

brqc148981c-3a 8000.000c2944bb23 no eth0

tapcfd03699-61 #启动了的虚拟机网卡和虚拟机内部的的网卡相对应;

提示:可以理解为桥接网卡brqc148981c-3a桥接到eth0,且占用了eht0的ip地址,桥接网卡brqc148981c-3a类似一个交换机,所有的虚拟机的

网卡都桥接到该交换机上,所以所有的主机都能够通信;桥接网卡成对存在;

ifconfig

brqc148981c-3a: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500

inet 10.0.0.12 netmask 255.255.255.0 broadcast 10.0.0.255

ether 00:0c:29:44:bb:23 txqueuelen 1000 (Ethernet)

RX packets 175 bytes 50993 (49.7 KiB)

RX errors 0 dropped 0 overruns 0 frame 0

TX packets 0 bytes 0 (0.0 B)

TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500

inet6 fe80::e95f:198a:2a8c:3635 prefixlen 64 scopeid 0x20<link>

inet6 fe80::575c:f3b2:cb87:8431 prefixlen 64 scopeid 0x20<link>

ether 00:0c:29:44:bb:23 txqueuelen 1000 (Ethernet)

RX packets 285 bytes 64115 (62.6 KiB)

RX errors 0 dropped 2 overruns 0 frame 0

TX packets 128 bytes 12359 (12.0 KiB)

TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500

inet 172.16.1.12 netmask 255.255.255.0 broadcast 172.16.1.255

inet6 fe80::db84:3581:affc:221a prefixlen 64 scopeid 0x20<link>

inet6 fe80::97d1:7e87:791e:dbea prefixlen 64 scopeid 0x20<link>

ether 00:0c:29:44:bb:2d txqueuelen 1000 (Ethernet)

RX packets 13656 bytes 4003081 (3.8 MiB)

RX errors 0 dropped 0 overruns 0 frame 0

TX packets 13534 bytes 5604234 (5.3 MiB)

TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536

inet 127.0.0.1 netmask 255.0.0.0

inet6 ::1 prefixlen 128 scopeid 0x10<host>

loop txqueuelen 1000 (Local Loopback)

RX packets 29063 bytes 1525822 (1.4 MiB)

RX errors 0 dropped 0 overruns 0 frame 0

TX packets 29063 bytes 1525822 (1.4 MiB)

TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

tapcfd03699-61: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500

inet6 fe80::fc16:3eff:fe75:889a prefixlen 64 scopeid 0x20<link>

ether fe:16:3e:75:88:9a txqueuelen 1000 (Ethernet)

RX packets 109 bytes 10816 (10.5 KiB)

RX errors 0 dropped 0 overruns 0 frame 0

TX packets 84 bytes 9208 (8.9 KiB)

TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

(4)秘钥对mykey是如何放到虚拟机内部的:

通过元数据进行获取;

1)在计算节点查看虚拟机的控制台输出信息:

cat /var/lib/nova/instances/b431f17d-0a1a-491c-9020-05da958cddd0/console.log

2)在控制节点登录到虚拟机:

ssh -p22 cirros@10.0.0.84

3)在控制节点curl取元数据:

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

curl http://169.254.169.254/2009-04-04/meta-data/public-keys/0/openssh-key

4)为什么能够访问169.254.169.254:

A、在虚拟机上查看路由列表:

ip ro li

default via 10.0.0.253 dev eth0

10.0.0.0/24 dev eth0 src 10.0.0.84

169.254.169.254 via 10.0.0.70 dev eth0

#169.254.169.254的网关是10.0.0.70(是控制节点dhcp-agnet的地址 ps -ef | grep dhcp-agent);

B、在控制节点查看命名空间的相关信息:

#查看命名空间列表;

ip netns li

qdhcp-c148981c-3a89-4d41-b570-3a04dc71c0b7 (id: 0)

#在命名空间中执行命令查看命名空间的ip地址;

ip netns exec qdhcp-c148981c-3a89-4d41-b570-3a04dc71c0b7 ip ad li

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000

link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

inet 127.0.0.1/8 scope host lo

valid_lft forever preferred_lft forever

inet6 ::1/128 scope host

valid_lft forever preferred_lft forever

2: ns-8c4ff3d7-3e@if4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000

link/ether fa:16:3e:8d:a0:40 brd ff:ff:ff:ff:ff:ff link-netnsid 0

inet 169.254.169.254/16 brd 169.254.255.255 scope global ns-8c4ff3d7-3e

valid_lft forever preferred_lft forever

inet 10.0.0.70/24 brd 10.0.0.255 scope global ns-8c4ff3d7-3e

valid_lft forever preferred_lft forever

inet6 fe80::f816:3eff:fe8d:a040/64 scope link

valid_lft forever preferred_lft forever

#查看命名空间中的80端口:

ip netns exec qdhcp-c148981c-3a89-4d41-b570-3a04dc71c0b7 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:80 0.0.0.0:* LISTEN 2125/haproxy

tcp 0 0 169.254.169.254:53 0.0.0.0:* LISTEN 2191/dnsmasq

tcp 0 0 10.0.0.70:53 0.0.0.0:* LISTEN 2191/dnsmasq

tcp6 0 0 fe80::f816:3eff:fe8d:53 :::* LISTEN 2191/dnsmasq

udp 0 0 169.254.169.254:53 0.0.0.0:* 2191/dnsmasq

udp 0 0 10.0.0.70:53 0.0.0.0:* 2191/dnsmasq

udp 0 0 0.0.0.0:67 0.0.0.0:* 2191/dnsmasq

udp6 0 0 fe80::f816:3eff:fe8d:53 :::* 2191/dnsmasq

ip netns exec qdhcp-c148981c-3a89-4d41-b570-3a04dc71c0b7 ps -ef | grep 2125 | grep -v grep

neutron 2125 1 0 09:34 ? 00:00:00 haproxy -f /var/lib/neutron/ns-metadata-proxy/c148981c-3a89-4d41-b570-3a04dc71c0b7.conf

vim /etc/neutron/dhcp_agent.ini

[DEFAULT]

enable_isolated_metadata = true

#靠这条参数向虚拟机推送的metadata;

7.7、深入解析openstak工作流程的更多相关文章

  1. 服务容错保护断路器Hystrix之二:Hystrix工作流程解析

    一.总运行流程 当你发出请求后,hystrix是这么运行的 红圈 :Hystrix 命令执行失败,执行回退逻辑.也就是大家经常在文章中看到的“服务降级”. 绿圈 :四种情况会触发失败回退逻辑( fal ...

  2. appium工作流程解析

    为什么选择appium ​ app自带测试框架,为什么要选择appium这个测试框架呢? Ios9.3以前使用的是UIAutomation,Ios9.3以后使用XCUITest.如果只使用Apple的 ...

  3. Mybatis工作流程及其原理与解析

    Mybatis简介:    MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBat ...

  4. Netty 源码解析(七): NioEventLoop 工作流程

    原创申明:本文由公众号[猿灯塔]原创,转载请说明出处标注 今天是猿灯塔“365篇原创计划”第七篇. 接下来的时间灯塔君持续更新Netty系列一共九篇 Netty 源码解析(一): 开始 Netty 源 ...

  5. Java开发学习(二十三)----SpringMVC入门案例、工作流程解析及设置bean加载控制

    一.SpringMVC概述 SpringMVC是隶属于Spring框架的一部分,主要是用来进行Web开发,是对Servlet进行了封装.SpringMVC是处于Web层的框架,所以其主要的作用就是用来 ...

  6. Hystrix工作流程解析

    搭建Hystrix源码阅读环境 引入依赖 <dependency> <groupId>com.netflix.hystrix</groupId> <artif ...

  7. Java开发学习(十五)----AOP入门案例及其工作流程解析

    一.AOP简介 1.1 什么是AOP AOP(Aspect Oriented Programming)面向切面编程,一种编程范式,指导开发者如何组织程序结构. OOP(Object Oriented ...

  8. Asp.net MVC的Model Binder工作流程以及扩展方法(2) - Binder Attribute

    上篇文章中分析了Custom Binder的弊端: 由于Custom Binder是和具体的类型相关,比如指定类型A由我们的Custom Binder解析,那么导致系统运行中的所有Action的访问参 ...

  9. Asp.net MVC的Model Binder工作流程以及扩展方法(1) - Custom Model Binder

    在Asp.net MVC中, Model Binder是生命周期中的一个非常重要的部分.搞清楚Model Binder的流程,能够帮助理解Model Binder的背后发生了什么.同时该系列文章会列举 ...

随机推荐

  1. 002.Python数据类型

    一 python语言注释 就是对代码的解释, 方便大家阅读代码用的 1.1 注释的分类 (1)单行注释 # print 在python2.x print "1" # print 在 ...

  2. docker存储驱动

    http://www.sohu.com/a/101016494_116235 https://success.docker.com/article/compatibility-matrix Red H ...

  3. 调试备忘录-SWD协议解析

    目录--点击可快速直达 目录 写在前面 1  SWD协议简介 2  SWD物理层协议解析 2.1  SWD通信时序分析 2.2  SWD 寄存器简介 2.2.1  DP寄存器 2.2.2  AP寄存器 ...

  4. unity ab包打包和加载的简单学习示例

    闲着没事结合项目看了下unity AssetBundle打包和使用,写了一些测试例子,需要的可以拿去,导入一个空项目即可 链接:https://pan.baidu.com/s/1H85dnMNkRoW ...

  5. 孔乙己,一名ERP顾问

    欢迎关注微信公众号:sap_gui (ERP咨询顾问之家) 公司的会议室的格局,是和别处不同的:都是中间一个大的会议圆桌,桌子上面放着各台电脑,可以随时打开ERP系统.做ERP顾问的人,傍午傍晚下了班 ...

  6. GO学习-(4) Go语言基础之变量和常量

    Go语言基础之变量和常量 变量和常量是编程中必不可少的部分,也是很好理解的一部分. 标识符与关键字 标识符 在编程语言中标识符就是程序员定义的具有特殊意义的词,比如变量名.常量名.函数名等等. Go语 ...

  7. pytest - 测试函数的传参:fixture,参数化。必须传入实参

    测试函数的参数只有2个来源:fixture返回,参数化(ddt) 传入的参数必须是实参 pytest - 参数化 在测试用例的前面加上: @pytest.mark.parametrize(" ...

  8. 如何运行具有奇点的NGC深度学习容器

    如何运行具有奇点的NGC深度学习容器 How to Run NGC Deep Learning Containers with Singularity 高性能计算机和人工智能的融合使新的科学突破成为可 ...

  9. NSight Compute 用户手册(下)

    主菜单 文件 新建项目使用"新建项目"对话框创建新的分析项目 4. Main Menu and Toolbar Information on the main menu and t ...

  10. python应用_读取Excel数据列表输出【一】

    python能使用xlrd模块实现对Excel数据的读取,且按照想要的输出形式. 1.准备Excel数据如下: 2.下面主要是对Excel数据读取后以双列表(每一行是一个用例为一个列表,再一个个案例组 ...