一.启动实例

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. java 服务

    2014年2月27日 10:30:55 学习 Java Service Wrapper 2014年2月27日 14:14:14太复杂了,以后研究吧. ###### 2014年2月27日 14:14:2 ...

  2. Python3基础 lambda表达式 简单示例

    镇场诗: 诚听如来语,顿舍世间名与利.愿做地藏徒,广演是经阎浮提. 愿尽吾所学,成就一良心博客.愿诸后来人,重现智慧清净体.-------------------------------------- ...

  3. linux 5个查找命令

    1. find find是最常见和最强大的查找命令,你可以用它找到任何你想找的文件. find的使用格式如下: $ find <指定目录> <指定条件> <指定动作> ...

  4. C#子窗口与父窗口交互(使用委托和事件)

    目标:在子窗口Form2上单击按钮时向Form1传递一组自定义参数,并显示在父窗口Form1上. 方法:有很多方法,这里只介绍委托和事件的实现方式. 思路:Form2中定义事件,Form1创建Form ...

  5. php防止重复提交表单

    解决方案一:引入cookie机制来解决 提交页面代码如下a.php代码如下: <form id="form1" name="form1" method=& ...

  6. 解决mysql 1062 主从错误

    1062错误----主键冲突,出现这种情况就是从库出现插入操作,主库又重新来了一遍,iothread没问题,sqlthread出错 解决方案: 从库操作 mysql> stop slave; Q ...

  7. HDU-2031-进制转换

    题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=2031 进制转换 Time Limit: 2000/1000 MS (Java/Others)    M ...

  8. ListView 的三种数据绑定方式

    ListView 的三种数据绑定方式   1.最原始的绑定方式: public ObservableCollection<object> ObservableObj; public Mai ...

  9. LinkedHashMap遍历

    第一种: Map map = new HashMap(); Iterator iter = map.entrySet().iterator(); while (iter.hasNext()) { Ma ...

  10. Linux笔记(六) - 压缩解压命令

    (1)压缩文件( gz):gzip-d 解压只能压缩文件,不保留原文件例:gzip a.txt(2)解压文件( gz):gunzip 例:gunzip a.txt.gz(3)打包目录(tar):tar ...