一.启动实例

1.1 已准备服务介绍

  • MySql:为各个服务提供数据存储。
  • RabbitMQ:为各个服务之间通信提供交通枢纽。
  • keystone:为各个服务之间通信提供认证和服务注册。
  • Glance:为虚拟机提供镜像管理。
  • Nova:为虚拟机提供计算资源。
  • Neutron:为虚拟机提供网络资源。

1.2 网络(flat)

1.2.1创建虚拟网络
 #share 允许所有项目使用虚拟网络
[root@linux-node1 ~]# openstack network create --share \
--provider-physical-network public \
--provider-network-type flat public
+---------------------------+--------------------------------------+
| Field                     | Value                                |
+---------------------------+--------------------------------------+
| admin_state_up            | UP                                   |
| availability_zone_hints   |                                      |
| availability_zones        |                                      |
| created_at                | 2017-03-01T03:10:38Z                 |
| description               |                                      |
| headers                   |                                      |
| id                        | 0cdd6694-d53d-4f85-b04a-bc3b6dfa6cbc |
| ipv4_address_scope        | None                                 |
| ipv6_address_scope        | None                                 |
| mtu                       | 1500                                 |
| name                      | public                               |
| port_security_enabled     | True                                 |
| project_id                | d24a61dd3ecb43cb9e8a5f6539c6a2bb     |
| project_id                | d24a61dd3ecb43cb9e8a5f6539c6a2bb     |
| provider:network_type     | flat                                 |
| provider:physical_network | public                               |
| provider:segmentation_id  | None                                 |
| revision_number           | 3                                    |
| router:external           | Internal                             |
| shared                    | True                                 |
| status                    | ACTIVE                               |
| subnets                   |                                      |
| tags                      | []                                   |
| updated_at                | 2017-03-01T03:10:38Z                 |
+---------------------------+--------------------------------------+
1.2.2查看已创建网络
 #新版本命令
[root@linux-node1 ~]# openstack network list
#老版本命令
[root@linux-node1 ~]# neutron net-list
#结果都是一样的
+--------------------------------------+--------+---------+
| ID                                   | Name   | Subnets |
+--------------------------------------+--------+---------+
| 0cdd6694-d53d-4f85-b04a-bc3b6dfa6cbc | public |         |
+--------------------------------------+--------+---------+
1.2.3创建子网
 1 #创建子网
2 [root@linux-node1 ~]# openstack subnet create --network public \
3 --allocation-pool start=192.168.56.100,end=192.168.56.200 \
4 --dns-nameserver 192.168.56.2 --gateway 192.168.56.2 \
5 --subnet-range 192.168.56.0/24 public-subnet
6 #注解
7 public:是之前配置文件中flat_networks自定义的名称
8 start:dhcp起始地址
9 end:dhcp终止地址
10 nameserver:DNS
11 gateway:网关
12 subnet:网段/子网
13 public-subnet:子网名称
+-------------------+--------------------------------------+
| Field             | Value                                |
+-------------------+--------------------------------------+
| allocation_pools  | 192.168.56.100-192.168.56.200        |
| cidr              | 192.168.56.0/24                      |
| created_at        | 2017-03-01T03:12:36Z                 |
| description       |                                      |
| dns_nameservers   | 192.168.56.2                         |
| enable_dhcp       | True                                 |
| gateway_ip        | 192.168.56.2                         |
| headers           |                                      |
| host_routes       |                                      |
| id                | 3b307841-211f-4c8e-91f5-a9f051bb1248 |
| ip_version        | 4                                    |
| ipv6_address_mode | None                                 |
| ipv6_ra_mode      | None                                 |
| name              | public-subnet                        |
| network_id        | 0cdd6694-d53d-4f85-b04a-bc3b6dfa6cbc |
| project_id        | d24a61dd3ecb43cb9e8a5f6539c6a2bb     |
| project_id        | d24a61dd3ecb43cb9e8a5f6539c6a2bb     |
| revision_number   | 2                                    |
| service_types     | []                                   |
| subnetpool_id     | None                                 |
| updated_at        | 2017-03-01T03:12:36Z                 |
+-------------------+--------------------------------------+
1.2.4检查子网
 #新版本命令
[root@linux-node1 ~]# openstack subnet list
+--------------------------------------+---------------+--------------------------------------+-----------------+
| ID                                   | Name          | Network                              | Subnet          |
+--------------------------------------+---------------+--------------------------------------+-----------------+
| 3b307841-211f-4c8e-91f5-a9f051bb1248 | public-subnet | 0cdd6694-d53d-4f85-b04a-bc3b6dfa6cbc | 192.168.56.0/24 |
+--------------------------------------+---------------+--------------------------------------+-----------------+
#老版本命令
[root@linux-node1 ~]# neutron subnet-list
+--------------------------------------+---------------+-----------------+------------------------------------------------------+
| id                                   | name          | cidr            | allocation_pools                                     |
+--------------------------------------+---------------+-----------------+------------------------------------------------------+
| 3b307841-211f-4c8e-91f5-a9f051bb1248 | public-subnet | 192.168.56.0/24 | {"start": "192.168.56.100", "end": "192.168.56.200"} |
+--------------------------------------+---------------+-----------------+------------------------------------------------------+

1.3创建云主机类型

 #先创建一个小的云主机类型,给官方提供镜像做测试
[root@linux-node1 ~]# openstack flavor create --id --vcpus --ram --disk m1.nano
#注解
id:主机类型ID
vcpus:虚拟cpu数量
ram:虚拟内存大小(MB)
disk:虚拟磁盘大小(GB)
m1.nano:主机类型名称(可随便更改)
+----------------------------+---------+
| Field                      | Value   |
+----------------------------+---------+
| OS-FLV-DISABLED:disabled   | False   |
| OS-FLV-EXT-DATA:ephemeral  | 0       |
| disk                       | 1       |
| id                         | 0       |
| name                       | m1.nano |
| os-flavor-access:is_public | True    |
| properties                 |         |
| ram                        | 64      |
| rxtx_factor                | 1.0     |
| swap                       |         |
| vcpus                      | 1       |
+----------------------------+---------+
1.3.1查看云主机类型
 [root@linux-node1 ~]# openstack flavor list
+----+---------+-----+------+-----------+-------+-----------+
| ID | Name    | RAM | Disk | Ephemeral | VCPUs | Is Public |
+----+---------+-----+------+-----------+-------+-----------+
| 0  | m1.nano |  64 |    1 |         0 |     1 | True      |
+----+---------+-----+------+-----------+-------+-----------+

1.4创建秘钥对

 #创建ssh的秘钥对
[root@linux-node1 ~]# ssh-keygen -q -N ""
#直接敲回车
Enter file in which to save the key (/root/.ssh/id_rsa):
#用openstack使用此秘钥对
[root@linux-node1 ~]# openstack keypair create --public-key ~/.ssh/id_rsa.pub mykey
+-------------+-------------------------------------------------+
| Field       | Value                                           |
+-------------+-------------------------------------------------+
| fingerprint | f9:81:41:cc:48:f0:69:37:34:a6:52:08:6f:60:28:14 |
| name        | mykey                                           |
| user_id     | 45b086bdc6b746c5b0bfd62f779fe6a5                |
+-------------+-------------------------------------------------+
1.4.1查看键值对
 [root@linux-node1 ~]#  openstack keypair list
+-------+-------------------------------------------------+
| Name  | Fingerprint                                     |
+-------+-------------------------------------------------+
| mykey | f9:81:41:cc:48:f0:69:37:34:a6:52:08:6f:60:28:14 |
+-------+-------------------------------------------------+

1.5创建安全组规则

 #开启icmp协议,允许ping
[root@linux-node1 ~]# openstack security group rule create --proto icmp default
+-------------------+--------------------------------------+
| Field             | Value                                |
+-------------------+--------------------------------------+
| created_at        | 2017-03-01T03:49:22Z                 |
| description       |                                      |
| direction         | ingress                              |
| ethertype         | IPv4                                 |
| headers           |                                      |
| id                | 044c66be-4db9-4f8c-8b6f-59c02c0c962c |
| port_range_max    | None                                 |
| port_range_min    | None                                 |
| project_id        | d24a61dd3ecb43cb9e8a5f6539c6a2bb     |
| project_id        | d24a61dd3ecb43cb9e8a5f6539c6a2bb     |
| protocol          | icmp                                 |
| remote_group_id   | None                                 |
| remote_ip_prefix  | 0.0.0.0/0                            |
| revision_number   | 1                                    |
| security_group_id | a9c0f076-3e8a-4344-ad7b-e94b51798116 |
| updated_at        | 2017-03-01T03:49:22Z                 |
+-------------------+--------------------------------------+
#开启22端口,允许ssh
[root@linux-node1 ~]# openstack security group rule create --proto tcp --dst-port default
+-------------------+--------------------------------------+
| Field             | Value                                |
+-------------------+--------------------------------------+
| created_at        | 2017-03-01T03:50:33Z                 |
| description       |                                      |
| direction         | ingress                              |
| ethertype         | IPv4                                 |
| headers           |                                      |
| id                | 6b48884c-dfc5-444c-8fb2-4ec157945e4e |
| port_range_max    | 22                                   |
| port_range_min    | 22                                   |
| project_id        | d24a61dd3ecb43cb9e8a5f6539c6a2bb     |
| project_id        | d24a61dd3ecb43cb9e8a5f6539c6a2bb     |
| protocol          | tcp                                  |
| remote_group_id   | None                                 |
| remote_ip_prefix  | 0.0.0.0/0                            |
| revision_number   | 1                                    |
| security_group_id | a9c0f076-3e8a-4344-ad7b-e94b51798116 |
| updated_at        | 2017-03-01T03:50:33Z                 |
+-------------------+--------------------------------------+
1.5.1查看安全组规则
 [root@linux-node1 ~]# openstack security group list
+--------------------------------------+---------+------------------------+----------------------------------+
| ID                                   | Name    | Description            | Project                          |
+--------------------------------------+---------+------------------------+----------------------------------+
| a9c0f076-3e8a-4344-ad7b-e94b51798116 | default | Default security group | d24a61dd3ecb43cb9e8a5f6539c6a2bb |
+--------------------------------------+---------+------------------------+----------------------------------+

1.6启动虚拟机

 #启动之前首先要查看网络ID并记下
[root@linux-node1 ~]# openstack network list
+--------------------------------------+--------+--------------------------------------+
| ID                                   | Name   | Subnets                              |
+--------------------------------------+--------+--------------------------------------+
| 0cdd6694-d53d-4f85-b04a-bc3b6dfa6cbc | public | 3b307841-211f-4c8e-91f5-a9f051bb1248 |
+--------------------------------------+--------+--------------------------------------+
#创建虚拟机,并启动
[root@linux-node1 ~]# openstack server create --flavor m1.nano --image cirros \
--nic net-id=0cdd6694-d53d-4f85-b04a-bc3b6dfa6cbc --security-group default \
--key-name mykey demo-instance
#注:如果只有一个网络,则不需要填写net-id,openstack会默认选择
#注解
flavor:云主机类型名称
image:镜像名称
nic net-id:网络ID
security-group:安全组
key-name:秘钥对
demo-instance:云主机名称
1.6.1查看云主机
 [root@linux-node1 ~]# openstack server list
+--------------------------------------+---------------+--------+-----------------------+------------+
| ID                                   | Name          | Status | Networks              | Image Name |
+--------------------------------------+---------------+--------+-----------------------+------------+
| 24202ab8-9f13-4555-b8e3-6ff799223e67 | demo-instance | ACTIVE | public=192.168.56.110 | cirros     |
+--------------------------------------+---------------+--------+-----------------------+------------+

1.7获取VNC的url

 [root@linux-node1 ~]# openstack console url show demo-instance
+-------+------------------------------------------------------------------------------------+
| Field | Value                                                                              |
+-------+------------------------------------------------------------------------------------+
| type  | novnc                                                                              |
| url   | http://192.168.56.11:6080/vnc_auto.html?token=844e8352-a2ca-4c3f-8690-753529d59b80 |
+-------+------------------------------------------------------------------------------------+
1.71访问VNC的url

打开浏览器输入:http://192.168.56.11:6080/vnc_auto.html?token=844e8352-a2ca-4c3f-8690-753529d59b80即可访问

注:以上操作,完全可以在dashboard上创建

二.创建云主机流程介绍

2.1创建云主机步骤

第一步:dashboard或者client带着用户名和密码请求keystone服务

第二步:keystone服务验证用户名和密码,验证成功后返回token给dashboard或者client

第三步:dashboard或者client带着keystone服务返回的token请求nova-api

第四步:nova-api带着token访问keystone服务验证token是否正确

第五步:keystone验证token正确后,返回结果给nova-api

第六步:nova-api将要创建的虚拟机资源信息写入DB

第七步:nova-api将要创建虚拟机的请求写入rabbitMQ消息队列,建立沟通枢纽

第八步:nova-scheduler发现消息队列中的创建虚拟机信息后访问DB

第九步:nova-scheduler从DB中获取到创建虚拟机所需资源并且计算,调度,决定将虚拟机创建在哪个计算节点上

第十步:将计算结果返回给消息队列

第十一步:nova-compute从消息队列中获取nova-scheduler计算的结果

第十二步:nova-compute通过nova-conductor(中间件)与DB交互来获取要创建的虚拟机所需要的资源信息

第十三步:nova-compute带着token去请求glance获取镜像资源,glance会将token交给keystone服务验证

第十四步:如果token验证成功,则将glance的镜像资源交给nova-compute

第十五步:nova-compute带着token去请求neutron获取网络资源,neutron会将token交给keystone服务验证

第十六步:如果token验证成功,则将neutron的网络资源交给nova-compute

第十七步:nova-compute带着token去请求cinder获取存储资源,cinder会将token交给keystone服务验证

第十八步:如果token验证成功,则将cinder的存储资源交给nova-compute

所有步骤都操作成功后,nova-compute就会将虚拟机创建在scheduler计算后的节点上。

2.2创建云主机流程图

【开源是一种精神,分享是一种美德】

— By GoodCook

— 笔者QQ:253097001

— 欢迎大家随时来交流

—原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。

【openstack N版】——创建云主机的更多相关文章

  1. 【openstack N版】——云主机调整大小\冷迁移

    一.先决条件 云主机冷迁移,即:将一台云主机从一个计算节点上,迁移到另外一个计算节点上.因为环境原因,所以我们需要准备两个计算节点. 1.1准备环境 在控制节点上,安装一个计算节点 #在控制节点安装n ...

  2. openstack命令创建云主机实例

    @ 目录 前言 上传centos镜像 创建实例 创建外网卡 修改安全组规则 创建云主机实例 前言 简单创建云主机实例只需要上传一个测试镜像.创建一张外网卡.创建一个实例类型.修改安全组规则即可 注:这 ...

  3. Ceph与OpenStack整合(仅为云主机提供云盘功能)

    1. Ceph与OpenStack整合(仅为云主机提供云盘功能) 创建: linhaifeng,最新修改: 大约1分钟以前 ceph ceph osd pool create volumes 128 ...

  4. 使用aliyun cli工具快速创建云主机

    参考文档: https://help.aliyun.com/document_detail/25484.html?spm=a2c4g.11186623.3.2.b57vQp 步骤 创建AccessID ...

  5. AWS:1.相关概念、创建云主机的过程

    概念 EC2是弹性的云计算 云主机 也即虚拟机,由分配的CPU.内存.网络和磁盘等资源组成 好处:维护成本低(主机替换).环境升级成本低 AMI:映像 创建云主机的蓝图,指定初始状态1 预装什么操作系 ...

  6. openstack学习-创建一台云主机(七)

    一.创建基础环境 1.检查网络是否正常 [root@linux-node1 ~]# openstack network agent list +---------------------------- ...

  7. 创建 OpenStack云主机(十一)

    创建过程 创建虚拟网络 创建m1.nano规格的主机(相等于定义虚拟机的硬件配置) 生成一个密钥对(openstack的原理是不使用密码连接,而是使用密钥对进行连接) 增加安全组规则(用iptable ...

  8. Openstack入门篇(十三)之云主机创建

    1.知识回顾与端口总结 service 功能 MySQL 为各个服务提供数据存储 RabbitMQ 为各个服务之间通信提供交通枢纽 Keystone 为各个服务器之间通信提供认证和服务注册 Glanc ...

  9. 创建 OpenStack云主机

    创建过程 创建虚拟网络 创建m1.nano规格的主机(相等于定义虚拟机的硬件配置) 生成一个密钥对(openstack的原理是不使用密码连接,而是使用密钥对进行连接) 增加安全组规则(用iptable ...

随机推荐

  1. 安卓 ArrayList,LinkedList,HashSet,Vector,TreeSet的区别和使用

    java的集合就那么几种 总体为:List,Set,Map (都是接口由其子类去实现具体的方法) ArrayList,LinkedList,Vector都属于List List:元素是有顺序的,元素可 ...

  2. JAVA文件的两种读取方法和三种写入方法

    在使用java对文件进行读写操作时,有多种方法可以使用,但不同的方法有不同的性能. 此文对常用的读写方法进行了整理,以备不时之需. 1.文件的读取 主要介绍两种常用的读取方法.按行读取和按字符块读取. ...

  3. Quartz2D 之 绘制文本

    1. 基础概念 1.1. 字体(Font) 同一大小.同一样式的字形的集合. 1.2. 字符(Character) 字符表示信息本身,一般指某种编码,如Unicode编码. 1.3. 字形(Glyph ...

  4. 1.2.Core Data 的适用场合(Core Data 应用程序实践指南)

    如果应用程序要保存的设置数据太多,以致NSUserDefaults及“属性列表“(property list)这种简单的存储方案无法应付.不需要再"重新发明轮子"(reinvent ...

  5. PHP正则表达式验证是否含有中文

    判断是否 有中文. if (preg_match("/[\x7f-\xff]/", $string)) { echo "true"; }else{ echo & ...

  6. 基于jquery 封装的 select 小控件,解决 IE6 7 8里 select 边框 高度 无法遮挡等问题

    一.基本原理 select控件在浏览器中是个永远的痛,不同的版本解析出来的可谓五花八门.主要有以下问题: 1,IE6中无法设置高度,Z INDEX永远在最上,无法被其它层遮挡 2,IE7中可以设置高度 ...

  7. delphi popupmenu控件用法

    是,右键菜单控件,和特定的窗体控件的popmenu属性关联就可以了 添加一个popupmenu控件,双击该控件,在弹出的界面中设置好name以及caption属性,点击事件的做法就跟button一样了 ...

  8. 使用 GitHub, Jekyll 打造自己的免费独立博客

    使用 GitHub, Jekyll 打造自己的免费独立博客 GitHub是一个代码托管网站,现在很多开源项目都放在GitHub上. 利用GitHub,可以让全球各地的程序员们一起协作开发.GitHub ...

  9. Spring @Aspect切面参数传递

    Spring @Aspect切面参数传递: Xml: <?xml version="1.0" encoding="UTF-8"?> <bean ...

  10. gulp源码解析(二)—— vinyl-fs

    在上一篇文章我们对 Stream 的特性及其接口进行了介绍,gulp 之所以在性能上好于 grunt,主要是因为有了 Stream 助力来做数据的传输和处理. 那么我们不难猜想出,在 gulp 的任务 ...