一.启动实例

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. Round Numbers(poj 3252)

    题意:算出区间内二进制中0的个数大于等于1的个数的数字有多少个 /* 本来以为用数位DP搞,但是组合数更简单. 我们设n的二进制长度为len. ①:先考虑长度小于len的数字. 这里以数字22为例,二 ...

  2. Grunt构建工具插件篇——之less工具3和watch配合自动化编译

    grunt less转换成css速度慢 而且页面会全部刷新? 最近遇到了个问题,grunt里用less,当修改完.less里面的样式,对应 的.css文件会好几秒才修改,然后浏览器上显示也会耗时好几秒 ...

  3. DDD设计一个电商网站

    DDD设计一个电商网站(十一)-- 最后的准备    阅读目录 前言 准备 实现 结语 一.前言 最近实在太忙,上周停更了一周.按流程一步一步走到现在,到达了整个下单流程的最后一公里--结算页的处理. ...

  4. php常用图片处理类

    <?php /** * 已知问题:1.在图片缩放功能中,使用imagecreatetruecolor函数创建画布,并使用透明处理算法,但PNG格式的图片无法透明.用imagecreate函数创建 ...

  5. EF Code First:实体映射

    二.实体映射 实体与数据库的映射可以通过DataAnnotation与FluentAPI两种方式来进行映射: (一) DataAnnotation DataAnnotation 特性由.NET 3.5 ...

  6. HTML5 语义元素、迁移、样式指南和代码约定

    语义元素是拥有语义的元素. 什么是语义元素? 语义元素清楚地向浏览器和开发者描述其意义. 非语义元素的例子:<div> 和 <span> - 无法提供关于其内容的信息. 语义元 ...

  7. C# 泛型初探

    初探的类: public class TClass { /// <summary> /// int参数 /// </summary> /// <param name=&q ...

  8. jQuery获取URL中所带参数的办法

    可以使用正则表达式进行结果的拆分: http://www.cnblogs.com/babycool/p/3169058.html 可以直接进行所需内容的split: http://blog.scien ...

  9. java Runtime类

    public class Test { public static void main(String[] args) throws UnsupportedEncodingException { Run ...

  10. jquery常用的一些方法

    一.选择网页元素(标签选择器) $(document) //选择整个文档对象 $('#myId') //选择ID为myId的网页元素 $('div.myClass') // 选择class为myCla ...