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. 【SecureCRT配置】修改默认卷屏行数当做一个操作,屏幕输出有上百行,当需要将屏幕回翻时,这个设置会有很大帮助,默认为500行,可以改为10000行,不用担心找不到了。 选项 => 全局选项 => Default Session => Edit Default Settings => Terminal => Emulation => Scrollback 修改为32000。

    SecureCRT配置屏幕内容输出到log文件 SecureCRT看不到前几分钟操作的内容,或者想把通过vi命令查看的日志输出到log文件(在懒得下载日志文件的情况下),所以接下来就这样操作: 文件保 ...

  2. Linux 通过 UUID 在 fstab 中自动挂载分区

    Linux 通过 UUID 在 fstab 中自动挂载分区 summerm6关注 2019.10.17 16:29:00字数 1,542阅读 605 https://xiexianbin.cn/lin ...

  3. MyBatis 动态SQL(十二)

    动态条件查询 以下是我们数据库表 tb_user 的记录: 假设现在有一个需求,就是根据输入的用户年龄和性别,查询用户的记录信息.你可能会说,这太简单了,脑袋里立马蹦出如下的 SQL 语句: SELE ...

  4. CSS(1)基础语法、常见属性

    CSS CSS:层叠样式表.主要用于设置HTML页面中的文本内容(字体.大小.对齐方式等).图片的外形(宽高.边框样式.边距等)以及版面的布局等外观显示样式. CSS语法:CSS实例由选择器,以及一条 ...

  5. 实践指南-网页生成PDF

    一.背景 开发工作中,需要实现网页生成 PDF 的功能,生成的 PDF 需上传至服务端,将 PDF 地址作为参数请求外部接口,这个转换过程及转换后的 PDF 不需要在前端展示给用户. 二.技术选型 该 ...

  6. Python单元测试简介及Django中的单元测试

    Python单元测试简介及Django中的单元测试 单元测试负责对最小的软件设计单元(模块)进行验证,unittest是Python自带的单元测试框架. 单元测试与功能测试都是日常开发中必不可少的部分 ...

  7. SpringCloud Alibaba实战(3:存储设计与基础架构设计)

    1.存储设计 在上一章中,我们已经完成了基本业务流程的梳理和服务模块的划分,接下来,开始设计数据存储. 虽然在微服务的理论中,没有对数据库定强制性的规范,但一般,服务拆分之后,数据库也会对应的拆分. ...

  8. MCU,硅片,BOM

    MCU,硅片,BOM BOM(Bill of Material,物料清单),就是指一个东西的各个材料的的成本价格 BOM成本要控制,有三点要注意的. 一,是否有芯片替代料,在性能不降低的情况下,替代料 ...

  9. Apollo 自动驾驶开发套件(D-KIT)

    Apollo 自动驾驶开发套件(D-KIT)

  10. 深度学习编译与优化Deep Learning Compiler and Optimizer

    深度学习编译与优化Deep Learning Compiler and Optimizer