别以为真懂Openstack: 虚拟机创建的50个步骤和100个知识点(5)
八、KVM

这一步,像virsh start命令一样,将虚拟机启动起来了。虚拟机启动之后,还有很多的步骤需要完成。
步骤38:从DHCP Server获取IP
有时候往往数据库里面,VM已经有了IP,很多人就认为虚拟机就得到了IP,可是总是连不进去,不知从何入手,其实界面上能看到VM的IP和VM真正从DHCP获得IP是两回事情。
步骤39:cloud-init连接Metadata Server,并注入Key
Metadata Server有很复杂的架构,cloud-init连接Metadata Server,很容易就会不成功,如果不成功,Key无法注入,所有常出现IP能够ping通,但是就是ssh不上去的情况。

http://niusmallnan.github.io/_build/html/_templates/openstack/metadata_server.html
另外推荐孔令贤的blog
【OpenStack】metadata在OpenStack中的使用(一)
【OpenStack】metadata在OpenStack中的使用(二)
步骤40:通过VNC可以看到启动过程
VNC是一个很好的东西,尤其是在VM没有得到IP的时候,你可以通过VNC连进去,用用户名密码登陆,然后调试为什么DHCP失败。
VNC也是比较复杂的东西,推荐文章

步骤41:添加一个FLoating IP,可以通过Floating IP SSH进去。
要想Floating IP成功,除了IPTables NAT要正确,br-ex也需要正确配置。

步骤42:在VM里面可以访问外网
要做到这一点,除了gateway要配置正确,dns server也需要正确配置。
如果虚拟机网络有问题,那是很头疼的时候,建议通过下面的流程进行调试:
- Security Group全部打开,这是最基本的,但是很多人容易忘记,结果tcpdump了半天,发现security group没打开,真的很冤
- 通过界面查看虚拟机的log,也可以在compute节点上查看console.log文件,看看里面是否有DHCP获取IP成功的日志,如果有,还不错,如果没有就惨了
- 如果虚拟机连不上DHCP Server,则需要准备一个不使用metadata server,而是用用户名密码可以登录的image,通过VNC登录进去,如果VNC也不通,就需要先调试VNC,这是访问虚拟机最后的方法了。
- 通过VNC登录进去后,就可以通过命令行运行dhclient,来重启连接DHCP Server
- 在运行dhclient之前,需要通过ovs-vsctl show和brctl来查看,各个网卡和bridge之间关系是否正确,tunnel之间是否能够通,网卡是否都处于up的状态
- 如果从虚拟机的虚拟网卡到DHCP Server的网卡一路都是正确的,则需要查看br-tun上ovs-ofctl dumpflows查看flows规则,是否对包的改写正确,是否有正确的规则
- 可以再dhclient运行的时候,从compute节点上的网卡和bridge,一个个进行tcpdump,看到底哪个网卡或者bridge没有收到包,收到的包里面的VLAN ID等是否正确,问题往往就是这里
- 如果VM能从DHCP Server获得IP,则好事成了一半,接下来换一个有cloud-init的image,看metadata server能够连接成功,能够注入key,也是通过console.log来看
- 如果metadata server不能连接成功,就需要顺着metadata server的整个流程,一个一个模块看,看每个模块的log,端口是否正确,是否收到请求,也可以在VM里面用curl来模拟metadata server的请求
- 如果metadata server能够连接成功,key成功注入,下一步需要从namespace里面看是否能够ping通,能够ssh
- 如果namespace里面能够成功,则在network节点上,ping floating ip和ssh,是否能够成功,如果不成功,看br-ex的网卡是否添加正确,是否配置了ip,路由表是否正确,namespace里面floating ip的iptables规则是否添加正确
- 在network节点上能够ssh到floating ip,则需要从其他节点上ssh,如果不成功,可能br-ex的网址配置有问题,很可能是br-ex添加的物理网卡不是混合状态,也可能是路由配置有问题,对于floating ip所在的网段,不指向network节点
- 如果floating ip能够成功,则需要进去VM里面运行apt-get update,如果不可以,看能否ping通openstack里面的gateway,然后看能否ping通物理网络环境的gateway
- 最后要看DNS Server是否配置正确,是否能够ping通,如果能,apt-get update运行成功,则虚拟机才叫基本可用。
所谓基本可用,就是能运行简单的命令没有问题,但是,如果想里面运行程序,则需要保证kvm的性能
推荐文章http://www-01.ibm.com/support/knowledgecenter/linuxonibm/liaat/liaatkvm.htm
而且虚拟机之间是共享物理机的资源的,我们必须对虚拟机的QoS进行控制,可用通过cgroup来进行控制
推荐文章
[转] Quality Of Service In OpenStack
虚拟机在一个物理机上运行,当资源紧张的时候,可能需要live migration到另外的机器上
QEMU KVM Libvirt(12): Live Migration
九、Cinder

虚拟机创建完毕,我们常会attach一个volume,当然也可以boot from volume,这样volume里面的数据不会随着VM的消失而消失。
步骤44:Cinder API请求创建一个Volume
步骤45: Cinder Scheduler在多个Cinder Volume里面选择一个,也是先Filter再weighting的过程,可以根据总空间的大小,也可以根据分配的情况
步骤46:Cinder Volume创建一个iscsi target
步骤47:Cinder Volume创建一个LVM volume,加入iscsi target
步骤48:compute节点连接iscsi target,从而volume出现在compute节点上
步骤49:将compute节点上的volume attach到虚拟机上
对于Cinder
Cinder架构

对于LVM,推荐文章
[转] Linux 内核中的 Device Mapper 机制
http://www.ibm.com/developerworks/cn/linux/l-devmapper/


对于ISCSI
推荐
Using iSCSI On Ubuntu 10.04 (Initiator And Target)
Linux tgtadm: Setup iSCSI Target ( SAN )


Cinder跟其他的存储


别以为真懂Openstack: 虚拟机创建的50个步骤和100个知识点(5)的更多相关文章
- 别以为真懂Openstack: 虚拟机创建的50个步骤和100个知识点(1)
还是先上图吧,无图无真相 别以为真懂Openstack!先别着急骂我,我也没有说我真懂Openstack 我其实很想弄懂Openstack,然而从哪里下手呢?作为程序员,第一个想法当然是代码,Code ...
- 别以为真懂Openstack: 虚拟机创建的50个步骤和100个知识点(2)
二.nova-api 步骤3:nova-api接收请求 nova-api接收请求,也不是随便怎么来都接收的,而是需要设定rate limits,默认的实现是在ratelimit的middleware里 ...
- 别以为真懂Openstack: 虚拟机创建的50个步骤和100个知识点(3)
四.Nova-compute 步骤17:nova-compute接收到请求后,通过Resource Tracker将创建虚拟机所需要的资源声明占用 步骤18:调用Neutron API配置Networ ...
- 别以为真懂Openstack: 虚拟机创建的50个步骤和100个知识点(4)
六.Libvirt 对于Libvirt,在启动虚拟机之前,首先需要define虚拟机,是一个XML格式的文件 列出所有的Instance # virsh list Id Name ...
- Openstack虚拟机创建流程
续上一篇Openstack安装配置 一,keystone交互认证阶段 1,发送用户名和密码给keystone认证获取token 2,带着token访问nova-api 3,nova-api使用toke ...
- OpenStack虚拟机创建过程中镜像格式的的变化过程
Glance用来作为独立的大规模镜像查找服务,当它与Nova和Swift配合使用时,就为OpenStack提供了虚拟机镜像的查找服务,像所有的OpenStack项目一样,遵循以下设计思想: 基于组件的 ...
- openstack Q版部署-----虚拟机创建(8)
一 .创建网络环境 环境变量生效一下 创建一个网络: openstack network create --share --external \ --provider-physical-network ...
- OpenStack Nova虚拟机创建流程解析
https://yikun.github.io/2017/09/27/OpenStack-Nova%E8%99%9A%E6%8B%9F%E6%9C%BA%E5%88%9B%E5%BB%BA%E6%B5 ...
- 如何使用API创建OpenStack虚拟机?
在安装时OpenStack会加载配置信息.有不同的虚拟机模板而且与在Amazon EC2以及其他平台上看到的完全一样.这些配置是内存.vCPU.磁盘容量等的组合,定义了虚拟机的大小及容量.可以使用如下 ...
随机推荐
- unity 屏幕适配的问题
首先是AB的加载时,会出现localscale的改变,需要在初始化时将其调节为1.0并且 offmax和min都设置为0,此时方才会出现在自己臆想之中(尤其是需要设置父节点时)
- Docker commit 命令保存的镜像文件太大的问题
基础镜像: centos7.5 进入容器后, 先后安装了 jdk1.8, maven3.6.0, git, rocketmq4.3.2 安装完成后使用 docker commit 命令保存为镜像 结果 ...
- 使用X509Certificate2类操作证书文件
public class CertHelper { string pfxPath = @"E:\开发辅助项目\cert\taisuyuanqing.pfx"; string cer ...
- Flume-ng高可用集群负载安装与配置
1. 写在前面 flume-ng高可用长在大数据处理环节第一个出现,对于处理日志文件有很好的作用,本篇博客将详细介绍flume-ng的高可用负载均衡搭建 2. flume-ng高可用负载均衡描述 在一 ...
- sql server 实现split功能 行转列
--實現split功能的函數create function [dbo].[func_split]( @SourceSql varchar(max), @StrSeprate varchar(10))r ...
- js 屏蔽政治关键字
一般情况下,用户输入评论提交到后台的同时,在后台进行关键字过滤,昨天看到了一个js关键字过滤的方法,记录下. 方法很简单,先把需要过滤的关键字做成数组, 在for循环数组判断有没有匹配. ok,先来个 ...
- python连接mysql数据库读取数据
#-*- coding:utf-8 -*- #Author:'Lmc' #DATE: 2019/4/28/0028 上午 11:22:47 #FileName:test.PY import pymys ...
- UOJ#346. 【清华集训2017】某位歌姬的故事 动态规划
原文链接www.cnblogs.com/zhouzhendong/p/UOJ346.html 题解 首先按照 $m_i$ 的大小排个序. 如果某一个区间和一个 m 值比他小的区间有交,那么显然可以将这 ...
- Extjs在树上加右键菜单--2019-04-15
效果图如下: 使用规则:将监听加到按钮或树上,监听代码如下. 代码如下: listeners : { //节点单击事件 'rowcontextmenu' : function(view, record ...
- BlockChain:Py实现区块链简单场景应用:程序猿记录在区块里的收入记录图——Jason niu
# -*- coding: utf-8 -*- ''' Created on 2018年3月11日 @author: Jason niu ''' import hashlib #该模块实现了诸多安全哈 ...