openstack 环境部署

来源:互联网 发布:淘宝客服绩效信息 编辑:程序博客网 时间:2024/05/21 08:58
22.1 了解云计算

人类基于千年的物种衍变基础,在这个世纪终于有了爆发式的科技成果,尤其这二十年内互联网的发展,更像是一种催化剂,让原本已经热闹的地球更加的沸腾,互联网经济泡沫破灭后的科技研发却变得更加卖力,一次次的突破着传统研究中对人类脑力、科技最终式的定义,把“来自未来”的产品带到用户面前,那么到底互联网未来会变成什么样子,人类最终的归宿会是怎么样,我们不得而知,但可以肯定的是科技研发一直是由人类需求来驱动的。

众所周知Google谷歌是一家致力于互联网搜索、云计算、广告技术等领域的科技企业,一直在努力为全球无数的用户提供着大量基于互联网的产品与服务,而Amazon亚马逊则是全美国最大的网络电子商务公司,销售内容涉及方方面面,业务范围更是遍布全球,对于这种互联网巨头企业自然少不了庞大的基础设施的支撑,但是传统的硬件设施一旦投入就要一大笔钱,并且在业务的淡季也要一直的空闲,这样无疑产生了资源和资金的巨大浪费,所以最初的云计算便是由Google与Amazon分别提出的,核心理念之一就是通过云计算服务降低用户对资源拥有的成本。

当用户能够通过互联网方便的获取到计算、存储等服务时,我们比喻自己使用到了“云计算”,云计算并不能被称为是一种计算技术,而更像是一种服务模式,云计算服务好像拥有无穷的力量,能够预测气候变化、还能够模拟核弹爆炸,好像只要你需要,“云”就可以为你提供每秒万亿次的计算服务,满足你的一切需求,每个运维人员心里都有一个对云计算的理解,而最普遍接受的是NIST(美国国家标准与技术研究院)的定义:

云计算是一种按使用量付费的服务模式,这是一种能够提供可用的、便捷的、按需求的网络访问模式,计算共享池能够快速的为用户提供网络、服务器、存储、应用软件及其他服务,并且只需要花费很少的管理时间。

第22章 使用openstack部署云计算服务环境。第22章 使用openstack部署云计算服务环境。
NIST还针对于云计算的服务模式提出了3个服务层次:
Iaas:提供给用户的是云计算基础设施,包括CPU、内存、存储、网络等其他的资源服务,用户不需要控制存储与网络等基础设施。
Paas:提供给用户的是云计算中的开发和分发应用的解决方案,用户能够部署应用程序,也可以控制相关的托管环境,比如云服务器及操作系统,但用户不需要接触到云计算中的基础设施。
Saas:提供给用户的是云计算基础设施上的应用程序,用户只需要在客户端界面访问即可使用到所需资源,而接触不到云计算的基础设施。

第22章 使用openstack部署云计算服务环境。第22章 使用openstack部署云计算服务环境。

云计算服务类型,原稿。
22.2 Openstack项目

Openstack最初是由NASA和Rackspace共同发起的云端计算服务项目,该项目以Apache许可证授权的方式成为了一款开源产品,目的是将多个组件整合后从而实现一个开源的云计算平台,目前Openstack项目正在被红帽、IBM、AMD、Intel、戴尔、思科、微软等超过一百家厂商共同研发,并已经支持了几乎所有的常见云计算环境,拥有了良好的可扩展性,而且部署搭建Openstack服务也变得十分简单,目前国内对于云计算的需求也逐渐增加,华胜天成、高德地图、京东、阿里巴巴、百度、中兴、华为等中国企业也加入到了Openstack项目研发当中,Openstack项目也正在随着全球内得到了众多厂商的参与支持而快速成熟。

第22章 使用openstack部署云计算服务环境。第22章 使用openstack部署云计算服务环境。

Open是开放,Stack则是堆砌之意,合起来就是将众多的功能服务堆积起来的集合,让人们通过Openstack云计算项目,能够将诸如计算能力、存储、网络和软件等资源抽象成服务,以便让用户可以通过互联网远程来享用,付费的形式也变得因需而定,调整方便,拥有极强的虚拟可扩展性,是公共和私有云的建设与管理软件中的优秀开源项目。

Openstack作为一个云平台的管理项目,其功能组件覆盖了网络、虚拟化、操作系统、服务器等多个方面,每个功能组件交由不同的项目委员会来研发和管理,目前核心的项目包括有:
功能项目名称描述计算服务Nova负责虚拟机的创建、开关机、挂起、迁移、调整CPU、内存等规则。对象存储Swift用于在大规模可扩展系统中通过内置的冗余及高容差机制实现对象存储的系统。镜像服务Glance用于创建、上传、删除、编辑镜像信息的虚拟机镜像查找及索引系统。身份服务Keystone为其他的功能服务提供身份验证、服务规则及服务令牌的功能。网络管理Neutron用于为其他服务提供云计算的网络虚拟化技术,可自定义各种网络规则,支持主流的网络厂商技术。块存储Cinder为虚拟机实例提供稳定的数据块存储的创建、删除、挂载、卸载、管理等服务。图形界面Horizon为用户提供简单易用的Web管理界面,降低用户对功能服务的操作难度。测量服务Ceilometer收集项目内所有的事件,用于监控、计费或为其他服务提供数据支撑。部署编排Heat实现通过模板方式进行自动化的资源环境部署服务。数据库服务Trove为用户提供可扩展的关系或非关系性数据库服务。

Openstack项目的版本按照ABCDEFG……的顺序发布,每6个月更新一次,Openstack版本发布历史:
版本名称发布时间Liberty2015年10月15日Kilo2015年4月30日Juno2014年10月16日Icehouse2014年4月17日Havana2013年10月17日Grizzly2014年4月4日Folsom2012年9月27日Essex2012年4月5日Diablo2011年9月22日Cactus2011年4月15日Bexar2011年2月3日Austin2010年10月21日

开源社区成员和Linux技术爱好者可以选择使用Openstack RDO版本,RDO版本允许用户以免费授权的方式来获取openstack软件的使用资格,但是从安装开始便较为复杂(需要自行解决诸多的软件依赖关系),而且没有官方给予的保障及售后服务,请读者们仔细的按实验步骤安装,就一定没有问题的~
22.3 服务模块组件详解

Openstack是一个云计算的平台,也像是部署云操作系统的工具集,可以通过调取不同的组件来构建虚拟计算及云计算服务,比较重要的包括有计算(compute)、对象存储(Objectstorage)、认证(Identity)、仪表板(Dashboard)、块存储(Block Storage)、网络(Network)和镜像服务(image service),Openstack服务组件协同工作拓扑:

第22章 使用openstack部署云计算服务环境。第22章 使用openstack部署云计算服务环境。

Nova提供计算服务

Nova可以称作是Openstack云计算平台中最核心的服务组件了,它作为计算的弹性控制器来管理虚拟化、网络及存储等资源,为Openstack的云主机实例提供可靠的支撑,其功能由不同的API来提供。

Nova-api(API服务器):

API服务器用于提供云计算设施与外界交互的接口,也是用户对云计算设施进行管理的唯一通道,用户通过网页来调用各种API接口,再由API服务器通过消息队列把请求传递至目标设置进行处理。

Rabbit MQ Server(消息队列):

Openstack在遵循AMQP高级消息队列协议的基础之上采用了消息队列进行通信,异步通信的方式更是能够减少了用户的等待时间,让整个平台都变得更有效率。

Nova-compute(运算工作站):

运算工作站通过消息队列接收用户的请求并执行,从而负责对主机实例的整个生命周期中的各种操作进行处理,一般会架设多台计算工作站,根据调度算法来按照实例在任意一个计算工作站上部署。

Nova-network(网络控制器):

用于处理主机的网络配置,例如分配IP地址,配置项目VLAN,设定安全群组及为计算节点配置网络。

Nova-Volume(卷工作站):

基于LVM的实例卷能够为一个主机实例创建、删除、附加卷或从主机中分离卷。

Nova-scheduler(调度器)

调度器以名为"nova-schedule"的守护进程方式进行运行,根据对比CPU架构及负载、内存占用率、子节点的远近等因素,使用调度算法从可用的资源池中选择运算服务器。

Glance提供镜像服务

Openstack镜像服务是一套用于主机实例来发现、注册、索引的系统,功能相比较也很简单,具有基于组件的架构、高可用、容错性、开发标准等优良特性,虚拟机的镜像可以被放置到多种存储上。

Swift提供存储服务

Swift模块是一种分布式、持续虚拟对象存储,具有跨节点百级对象的存储能力,并且支持内建冗余和失效备援的功能,同时还能够处理数据归档和媒体流,对于超大数据和多对象数量非常高效。
Swfit代理服务器:

用于通过Swift-API与代理服务器进行交互,代理服务器能够检查实例位置并路由相关的请求,当实例失效或被转移后则自动故障切换,减少重复路由请求。

Swift对象服务器:

用于处理处理本地存储中对象数据的存储、索引和删除操作。

Swift容器服务器:

用于统计容器内包含的对象数量及容量存储空间使用率,默认对象列表将存储为SQLite或者MYSQL文件。

Swift帐户服务器:

与容器服务器类似,列出容器中的对象。

Ring索引环:

用户记录着Swift中物理存储对象位置的信息,作为真实物理存储位置的虚拟映射,能够查找及定位不同集群的实体真实物理位置的索引服务,上述的代理、对象、容器、帐户都拥有自己的Ring索引环。

Keystone提供认证服务
 Keystone模块依赖于自身的Identity API系统基于判断动作消息来源者请求的合法性来为Openstack中Swift、Glance、Nove等各个组件提供认证和访问策略服务,

Horizon提供管理服务

Horizon是一个用于管理、控制Openstack云计算平台服务器的Web控制面板,用户能够在网页中管理主机实例、镜像、创建密钥对、管理实例卷、操作Swift容器等操作。

Quantum提供网络服务

重要的网络管理组件。

Cinder提供存储管理服务

用于管理主机实例中的存储资源。

Heat提供软件部署服务

用于在主机实例创建后简化配置操作。

 

22.4 安装Openstack软件

此刻我写这段话的时候,Openstack Liberty版本刚刚发布几周,企业中的生产环境会以稳定性为核心标准,所以还需要较长一段时间才能接受并正式使用这个新版本的产品,为了能够让读者学完即用,本片内容则会以Juno版本来做实验,为了能够让云计算平台发挥到最好的性能,我们需要开启虚拟机的虚拟化功能内存至少为4GB(推荐8GB以上)并添加额外的一块硬盘(20G以上)

主机名称IP地址/子网DNS地址openstack.linuxprobe.com192.168.10.10/24192.168.10.10

第22章 使用openstack部署云计算服务环境。第22章 使用openstack部署云计算服务环境。

设置服务器的主机名称:

[root@openstack ~]# vim /etc/hostnameopenstack.linuxprobe.com

使用vim编辑器写入主机名(域名)与IP地址的映射文件:

[root@openstack ~]# vim /etc/hosts127.0.0.1      localhost localhost.localdomain localhost4 localhost4.localdomain4::1            localhost localhost.localdomain localhost6 localhost6.localdomain6192.168.10.10  openstack.linuxprobe.com openstack

将服务器网卡IP地址配置成"192.168.10.10"后测试主机连通状态:

[root@openstack ~]# ping $HOSTNAMEPING openstack.linuxprobe.com (192.168.10.10) 56(84) bytes of data.64 bytes from openstack.linuxprobe.com (192.168.10.10): icmp_seq=1 ttl=64 time=0.099 ms64 bytes from openstack.linuxprobe.com (192.168.10.10): icmp_seq=2 ttl=64 time=0.107 ms64 bytes from openstack.linuxprobe.com (192.168.10.10): icmp_seq=3 ttl=64 time=0.070 ms64 bytes from openstack.linuxprobe.com (192.168.10.10): icmp_seq=4 ttl=64 time=0.075 ms^C--- openstack.linuxprobe.com ping statistics ---4 packets transmitted, 4 received, 0% packet loss, time 3001msrtt min/avg/max/mdev = 0.070/0.087/0.107/0.019 ms

创建系统镜像的挂载目录:

[root@openstack ~]# mkdir -p /media/cdrom

写入镜像与挂载点的信息:

[root@openstack ~]# vim /etc/fstab# HEADER: This file was autogenerated at 2016-01-28 00:57:19 +0800# HEADER: by puppet.  While it can still be managed manually, it# HEADER: is definitely not recommended.## /etc/fstab# Created by anaconda on Wed Jan 27 15:24:00 2016## Accessible filesystems, by reference, are maintained under '/dev/disk'# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info#/dev/mapper/rhel-root   /       xfs     defaults        1       1UUID=c738dff6-b025-4333-9673-61b10eaf2268       /boot   xfs     defaults        1       2/dev/mapper/rhel-swap   swap    swap    defaults        0       0/dev/cdrom      /media/cdrom    iso9660 defaults        0       0

挂载系统镜像设备:

[root@openstack ~]# mount -amount: /dev/sr0 is write-protected, mounting read-only

写入基本的yum仓库配置信息:

[root@openstack ~]# vim /etc/yum.repos.d/rhel.repo[base]name=basebaseurl=file:///media/cdromenabled=1gpgcheck=0

您可以点此下载EPEL仓库源以及Openstack-juno的软件安装包,并上传至服务器的/media目录中:

软件资源下载地址:http://www.linuxprobe.com/tools/

Openstack Juno——云计算平台软件

Openstack云计算软件能够将诸如计算能力、存储、网络和软件等资源抽象成服务,以便让用户可以通过互联网远程来享用,付费的形式也变得因需而定,拥有极强的虚拟可扩展性。

EPEL——系统的软件源仓库

EPEL是企业版额外的资源包,提供了默认不提供的软件安装包

Cirros——精简的操作系统

Cirros是一款极为精简的操作系统,一般用于灌装到Openstack服务平台中。

[root@openstack ~]# cd /media[root@openstack media]# lscdrom epel.tar.bz2 openstack-juno.tar.bz2

分别解压文件:

[root@openstack media]# tar xjf epel.tar.bz2[root@openstack media]# tar xjf openstack-juno.tar.bz2

分别写入EPEL与openstack的yum仓库源信息:

[root@openstack media]# vim /etc/yum.repos.d/openstack.repo[openstack]name=openstackbaseurl=file:///media/openstack-junoenabled=1gpgcheck=0[root@openstack media]# vim /etc/yum.repos.d/epel.repo[epel]name=epelbaseurl=file:///media/EPELenabled=1gpgcheck=0

将/dev/sdb创建成逻辑卷,卷组名称为cinder-volumes:

[root@openstack media]# pvcreate /dev/sdbPhysical volume "/dev/sdb" successfully created[root@openstack media]# vgcreate cinder-volumes /dev/sdbVolume group "cinder-volumes" successfully created

重启系统:

[root@openstack media]# reboot

安装Openstack的应答文件:

[root@openstack ~]# yum install openstack-packstack………………省略部分安装过程………………Installing:openstack-packstack noarch 2014.2-0.4.dev1266.g63d9c50.el7.centos openstack 210 kInstalling for dependencies:libyaml x86_64 0.1.4-10.el7 base 55 kopenstack-packstack-puppet noarch 2014.2-0.4.dev1266.g63d9c50.el7.centos openstack 43 kopenstack-puppet-modules noarch 2014.2.1-0.5.el7.centos openstack 1.3 Mperl x86_64 4:5.16.3-283.el7 base 8.0 Mperl-Carp noarch 1.26-244.el7 base 19 kperl-Encode x86_64 2.51-7.el7 base 1.5 Mperl-Exporter noarch 5.68-3.el7 base 28 kperl-File-Path noarch 2.09-2.el7 base 27 kperl-File-Temp noarch 0.23.01-3.el7 base 56 kperl-Filter x86_64 1.49-3.el7 base 76 kperl-Getopt-Long noarch 2.40-2.el7 base 56 kperl-HTTP-Tiny noarch 0.033-3.el7 base 38 kperl-PathTools x86_64 3.40-5.el7 base 83 kperl-Pod-Escapes noarch 1:1.04-283.el7 base 50 kperl-Pod-Perldoc noarch 3.20-4.el7 base 87 kperl-Pod-Simple noarch 1:3.28-4.el7 base 216 kperl-Pod-Usage noarch 1.63-3.el7 base 27 kperl-Scalar-List-Utils x86_64 1.27-248.el7 base 36 kperl-Socket x86_64 2.010-3.el7 base 49 kperl-Storable x86_64 2.45-3.el7 base 77 kperl-Text-ParseWords noarch 3.29-4.el7 base 14 kperl-Time-Local noarch 1.2300-2.el7 base 24 kperl-constant noarch 1.27-2.el7 base 19 kperl-libs x86_64 4:5.16.3-283.el7 base 686 kperl-macros x86_64 4:5.16.3-283.el7 base 42 kperl-parent noarch 1:0.225-244.el7 base 12 kperl-podlators noarch 2.5.1-3.el7 base 112 kperl-threads x86_64 1.87-4.el7 base 49 kperl-threads-shared x86_64 1.43-6.el7 base 39 kpython-netaddr noarch 0.7.12-1.el7.centos openstack 1.3 Mruby x86_64 2.0.0.353-20.el7 base 66 kruby-irb noarch 2.0.0.353-20.el7 base 87 kruby-libs x86_64 2.0.0.353-20.el7 base 2.8 Mrubygem-bigdecimal x86_64 1.2.0-20.el7 base 78 krubygem-io-console x86_64 0.4.2-20.el7 base 49 krubygem-json x86_64 1.7.7-20.el7 base 74 krubygem-psych x86_64 2.0.0-20.el7 base 76 krubygem-rdoc noarch 4.0.0-20.el7 base 317 krubygems noarch 2.0.14-20.el7 base 211 k………………省略部分安装过程………………Complete!

安装openstack服务程序:

[root@openstack ~]# packstack --allinone --provision-demo=n --nagios-install=nWelcome to Installer setup utilityPackstack changed given value to required value /root/.ssh/id_rsa.pubInstalling:Clean Up [ DONE ]Setting up ssh keys [ DONE ]Discovering hosts' details [ DONE ]Adding pre install manifest entries [ DONE ]Preparing servers [ DONE ]Adding AMQP manifest entries [ DONE ]Adding MySQL manifest entries [ DONE ]Adding Keystone manifest entries [ DONE ]Adding Glance Keystone manifest entries [ DONE ]Adding Glance manifest entries [ DONE ]Adding Cinder Keystone manifest entries [ DONE ]Adding Cinder manifest entries [ DONE ]Checking if the Cinder server has a cinder-volumes vg[ DONE ]Adding Nova API manifest entries [ DONE ]Adding Nova Keystone manifest entries [ DONE ]Adding Nova Cert manifest entries [ DONE ]Adding Nova Conductor manifest entries [ DONE ]Creating ssh keys for Nova migration [ DONE ]Gathering ssh host keys for Nova migration [ DONE ]Adding Nova Compute manifest entries [ DONE ]Adding Nova Scheduler manifest entries [ DONE ]Adding Nova VNC Proxy manifest entries [ DONE ]Adding Openstack Network-related Nova manifest entries[ DONE ]Adding Nova Common manifest entries [ DONE ]Adding Neutron API manifest entries [ DONE ]Adding Neutron Keystone manifest entries [ DONE ]Adding Neutron L3 manifest entries [ DONE ]Adding Neutron L2 Agent manifest entries [ DONE ]Adding Neutron DHCP Agent manifest entries [ DONE ]Adding Neutron LBaaS Agent manifest entries [ DONE ]Adding Neutron Metering Agent manifest entries [ DONE ]Adding Neutron Metadata Agent manifest entries [ DONE ]Checking if NetworkManager is enabled and running [ DONE ]Adding OpenStack Client manifest entries [ DONE ]Adding Horizon manifest entries [ DONE ]Adding Swift Keystone manifest entries [ DONE ]Adding Swift builder manifest entries [ DONE ]Adding Swift proxy manifest entries [ DONE ]Adding Swift storage manifest entries [ DONE ]Adding Swift common manifest entries [ DONE ]Adding MongoDB manifest entries [ DONE ]Adding Ceilometer manifest entries [ DONE ]Adding Ceilometer Keystone manifest entries [ DONE ]Adding post install manifest entries [ DONE ]Installing Dependencies [ DONE ]Copying Puppet modules and manifests [ DONE ]Applying 192.168.10.10_prescript.pp192.168.10.10_prescript.pp: [ DONE ]Applying 192.168.10.10_amqp.ppApplying 192.168.10.10_mysql.pp192.168.10.10_amqp.pp: [ DONE ]192.168.10.10_mysql.pp: [ DONE ]Applying 192.168.10.10_keystone.ppApplying 192.168.10.10_glance.ppApplying 192.168.10.10_cinder.pp192.168.10.10_keystone.pp: [ DONE ]192.168.10.10_cinder.pp: [ DONE ]192.168.10.10_glance.pp: [ DONE ]Applying 192.168.10.10_api_nova.pp192.168.10.10_api_nova.pp: [ DONE ]Applying 192.168.10.10_nova.pp192.168.10.10_nova.pp: [ DONE ]Applying 192.168.10.10_neutron.pp192.168.10.10_neutron.pp: [ DONE ]Applying 192.168.10.10_neutron_fwaas.ppApplying 192.168.10.10_osclient.ppApplying 192.168.10.10_horizon.pp192.168.10.10_neutron_fwaas.pp: [ DONE ]192.168.10.10_osclient.pp: [ DONE ]192.168.10.10_horizon.pp: [ DONE ]Applying 192.168.10.10_ring_swift.pp192.168.10.10_ring_swift.pp: [ DONE ]Applying 192.168.10.10_swift.pp192.168.10.10_swift.pp: [ DONE ]Applying 192.168.10.10_mongodb.pp192.168.10.10_mongodb.pp: [ DONE ]Applying 192.168.10.10_ceilometer.pp192.168.10.10_ceilometer.pp: [ DONE ]Applying 192.168.10.10_postscript.pp192.168.10.10_postscript.pp: [ DONE ]Applying Puppet manifests [ DONE ]Finalizing [ DONE ]**** Installation completed successfully ******Additional information:* A new answerfile was created in: /root/packstack-answers-20160128-004334.txt* Time synchronization installation was skipped. Please note that unsynchronized time on server instances might be problem for some OpenStack components.* Did not create a cinder volume group, one already existed* File /root/keystonerc_admin has been created on OpenStack client host 192.168.10.10. To use the command line tools you need to source the file.* To access the OpenStack Dashboard browse to http://192.168.10.10/dashboard .Please, find your login credentials stored in the keystonerc_admin in your home directory.* Because of the kernel update the host 192.168.10.10 requires reboot.* The installation log file is available at: /var/tmp/packstack/20160128-004334-tNBVhA/openstack-setup.log* The generated manifests are available at: /var/tmp/packstack/20160128-004334-tNBVhA/manifests

创建云平台的网卡配置文件:

[root@openstack ~]# vim /etc/sysconfig/network-scripts/ifcfg-br-exDEVICE=br-exIPADDR=192.168.10.10NETMASK=255.255.255.0BOOTPROTO=staticDNS1=192.168.10.1GATEWAY=192.168.10.1BROADCAST=192.168.10.254NM_CONTROLLED=noDEFROUTE=yesIPV4_FAILURE_FATAL=yesIPV6INIT=noONBOOT=yesDEVICETYPE=ovsTYPE="OVSIntPort"OVS_BRIDGE=br-ex

修改网卡参数信息为:

[root@openstack ~]# vim /etc/sysconfig/network-scripts/ifcfg-eno16777728 DEVICE="eno16777728"ONBOOT=yesTYPE=OVSPortDEVICETYPE=ovsOVS_BRIDGE=br-exNM_CONTROLLED=noIPV6INIT=no

将网卡设备添加到OVS网络中:

[root@openstack ~]# ovs-vsctl add-port br-ex eno16777728 [root@openstack ~]# ovs-vsctl show55501ff1-856c-46f1-8a00-5c61e48bb64d    Bridge br-ex        Port br-ex            Interface br-ex                type: internal        Port "eno16777728"            Interface "eno16777728"    Bridge br-int        fail_mode: secure        Port br-int            Interface br-int                type: internal        Port patch-tun            Interface patch-tun                type: patch                options: {peer=patch-int}    Bridge br-tun        Port patch-int            Interface patch-int                type: patch                options: {peer=patch-tun}        Port br-tun            Interface br-tun                type: internal    ovs_version: "2.1.3"

重启系统让网络设备同步:

[root@openstack ~]# reboot

执行身份认证脚本:

[root@openstack ~]# source keystonerc_admin
[root@openstack ~(keystone_admin)]# openstack-status
== Nova services ==
openstack-nova-api: active
openstack-nova-cert: active
openstack-nova-compute: active
openstack-nova-network: inactive (disabled on boot)
openstack-nova-scheduler: active
openstack-nova-volume: inactive (disabled on boot)
openstack-nova-conductor: active
== Glance services ==
openstack-glance-api: active
openstack-glance-registry: active
== Keystone service ==
openstack-keystone: active
== Horizon service ==
openstack-dashboard: active
== neutron services ==
neutron-server: active
neutron-dhcp-agent: active
neutron-l3-agent: active
neutron-metadata-agent: active
neutron-lbaas-agent: inactive (disabled on boot)
neutron-openvswitch-agent: active
neutron-linuxbridge-agent: inactive (disabled on boot)
neutron-ryu-agent: inactive (disabled on boot)
neutron-nec-agent: inactive (disabled on boot)
neutron-mlnx-agent: inactive (disabled on boot)
== Swift services ==
openstack-swift-proxy: active
openstack-swift-account: active
openstack-swift-container: active
openstack-swift-object: active
== Cinder services ==
openstack-cinder-api: active
openstack-cinder-scheduler: active
openstack-cinder-volume: active
openstack-cinder-backup: active
== Ceilometer services ==
openstack-ceilometer-api: active
openstack-ceilometer-central: active
openstack-ceilometer-compute: active
openstack-ceilometer-collector: active
openstack-ceilometer-alarm-notifier: active
openstack-ceilometer-alarm-evaluator: active
== Support services ==
libvirtd: active
openvswitch: active
dbus: active
tgtd: inactive (disabled on boot)
rabbitmq-server: active
memcached: active
== Keystone users ==
+----------------------------------+------------+---------+----------------------+
| id | name | enabled | email |
+----------------------------------+------------+---------+----------------------+
| 7f1f43a0002e4fb9a04b9b1480294e08   | admin        | True | test@test.com             |
| c7570a0d3e264f0191d8108359100cdd  | ceilometer | True | ceilometer@localhost |
| 9d3d1b46599341638771c33bcebe17fc    | cinder         | True | cinder@localhost        |
| 52a803edcc4e479ea147e69ca2966f46    | glance         | True | glance@localhost        |
| 8b0bcd19b11f49059bc100d260f39d50  | neutron      | True | neutron@localhost     |
| 953e01b228ef480db551dd05d43eb6d1 | nova            | True | nova@localhost          |
| 16ced2f73c034e58a0951e46f22eddc8    | swift            | True | swift@localhost          |
+----------------------------------+------------+---------+----------------------+
== Glance images ==
+----+------+-------------+------------------+------+--------+
| ID | Name | Disk Format | Container Format | Size | Status |
+----+------+-------------+------------------+------+--------+
+----+------+-------------+------------------+------+--------+
== Nova managed services ==
+----+------------------+--------------------------+----------+---------+-------+----------------------------+-----------------+
| Id | Binary | Host | Zone | Status | State | Updated_at | Disabled Reason |
+----+------------------+--------------------------+----------+---------+-------+----------------------------+-----------------+
| 1 | nova-consoleauth   | openstack.linuxprobe.com | internal | enabled | up | 2016-01-29T04:36:20.000000 | - |
| 2 | nova-scheduler      | openstack.linuxprobe.com | internal | enabled | up | 2016-01-29T04:36:20.000000 | - |
| 3 | nova-conductor     | openstack.linuxprobe.com | internal | enabled  | up | 2016-01-29T04:36:20.000000 | - |
| 4 | nova-compute       | openstack.linuxprobe.com | nova      | enabled  | up | 2016-01-29T04:36:16.000000 | - |
| 5 | nova-cert           | openstack.linuxprobe.com | internal | enabled  | up | 2016-01-29T04:36:20.000000 | - |
+----+------------------+--------------------------+----------+---------+-------+----------------------------+-----------------+
== Nova networks ==
+----+-------+------+
| ID | Label | Cidr |
+----+-------+------+
+----+-------+------+
== Nova instance flavors ==
+----+-----------+-----------+------+-----------+------+-------+-------------+-----------+
| ID | Name | Memory_MB | Disk | Ephemeral | Swap | VCPUs | RXTX_Factor | Is_Public |
+----+-----------+-----------+------+-----------+------+-------+-------------+-----------+
| 1 | m1.tiny            | 512       | 1    | 0 | | 1 | 1.0 | True |
| 2 | m1.small         | 2048    | 20  | 0 | | 1 | 1.0 | True |
| 3 | m1.medium    | 4096    | 40  | 0 | | 2 | 1.0 | True |
| 4 | m1.large          | 8192    | 80  | 0 | | 4 | 1.0 | True |
| 5 | m1.xlarge        | 16384 | 160 | 0 | | 8 | 1.0 | True |
+----+-----------+-----------+------+-----------+------+-------+-------------+-----------+
== Nova instances ==
+----+------+--------+------------+-------------+----------+
| ID | Name | Status | Task State | Power State | Networks |
+----+------+--------+------------+-------------+----------+
+----+------+--------+------------+-------------+----------+

打开浏览器进入http://192.168.10.10/dashboard:
第22章 使用openstack部署云计算服务环境。第22章 使用openstack部署云计算服务环境。
查看登录的帐号密码:

[root@openstack ~]# cat keystonerc_admin export OS_USERNAME=adminexport OS_TENANT_NAME=adminexport OS_PASSWORD=14ad1e723132440cexport OS_AUTH_URL=http://192.168.10.10:5000/v2.0/export PS1='[\u@\h \W(keystone_admin)]\$ '

输入帐号密码后进入到Openstack管理中心:

第22章 使用openstack部署云计算服务环境。第22章 使用openstack部署云计算服务环境。

22.5 使用Openstack服务
22.5.1 配置虚拟网络

要想让云平台中的虚拟实例机能够互相通信,并且让外部的用户访问到里面的数据,我们首先就必需配置好云平台中的网络环境。

Openstack创建网络:
第22章 使用openstack部署云计算服务环境。第22章 使用openstack部署云计算服务环境。
编辑网络配置:
第22章 使用openstack部署云计算服务环境。第22章 使用openstack部署云计算服务环境。
点击创建子网:
第22章 使用openstack部署云计算服务环境。第22章 使用openstack部署云计算服务环境。
创建子网信息:
第22章 使用openstack部署云计算服务环境。第22章 使用openstack部署云计算服务环境。
填写子网详情(DHCP地址池中的IP地址用逗号间隔):
第22章 使用openstack部署云计算服务环境。第22章 使用openstack部署云计算服务环境。
子网详情:
第22章 使用openstack部署云计算服务环境。第22章 使用openstack部署云计算服务环境。
创建私有网络:
第22章 使用openstack部署云计算服务环境。第22章 使用openstack部署云计算服务环境。
创建网络:
第22章 使用openstack部署云计算服务环境。第22章 使用openstack部署云计算服务环境。
填写网络信息:
第22章 使用openstack部署云计算服务环境。第22章 使用openstack部署云计算服务环境。
设置网络详情:
第22章 使用openstack部署云计算服务环境。第22章 使用openstack部署云计算服务环境。
查看网络信息:
第22章 使用openstack部署云计算服务环境。第22章 使用openstack部署云计算服务环境。
添加路由信息:
第22章 使用openstack部署云计算服务环境。第22章 使用openstack部署云计算服务环境。
填写路由名称:

第22章 使用openstack部署云计算服务环境。第22章 使用openstack部署云计算服务环境。
设置路由的网关信息:
第22章 使用openstack部署云计算服务环境。第22章 使用openstack部署云计算服务环境。
设置网关:
第22章 使用openstack部署云计算服务环境。第22章 使用openstack部署云计算服务环境。
在网络拓扑中添加接口:
第22章 使用openstack部署云计算服务环境。第22章 使用openstack部署云计算服务环境。
添加接口信息:
第22章 使用openstack部署云计算服务环境。第22章 使用openstack部署云计算服务环境。
路由的接口信息(需要等待几秒钟后,内部接口的状态会变成ACTIVE):

第22章 使用openstack部署云计算服务环境。第22章 使用openstack部署云计算服务环境。

22.5.2 创建云主机类型

我们可以预先设置多个云主机类型的模板,这样可以灵活的满足用户的需求,先来创建云主机类型:
第22章 使用openstack部署云计算服务环境。第22章 使用openstack部署云计算服务环境。
填写云主机的基本信息:
第22章 使用openstack部署云计算服务环境。第22章 使用openstack部署云计算服务环境。
创建上传镜像:
第22章 使用openstack部署云计算服务环境。第22章 使用openstack部署云计算服务环境。

Cirros是一款极为精简的操作系统,非常小巧精简的Linux系统镜像,一般会在搭建Openstack后测试云计算平台可用性的系统,特点是体积小巧,速度极快,那么来上传Cirros系统镜像吧:

第22章 使用openstack部署云计算服务环境。第22章 使用openstack部署云计算服务环境。
查看已上传的镜像(Cirros系统上传速度超级快吧!):

第22章 使用openstack部署云计算服务环境。第22章 使用openstack部署云计算服务环境。

22.5.3 创建主机实例

创建云主机实例:
第22章 使用openstack部署云计算服务环境。第22章 使用openstack部署云计算服务环境。
填写云主机的详情(云主机类型可以选择前面自定义创建的):
第22章 使用openstack部署云计算服务环境。第22章 使用openstack部署云计算服务环境。
查看云主机的访问与安全规则:
第22章 使用openstack部署云计算服务环境。第22章 使用openstack部署云计算服务环境。
将私有网络网卡添加到云主机:
第22章 使用openstack部署云计算服务环境。第22章 使用openstack部署云计算服务环境。
查看安装后的脚本数据:
第22章 使用openstack部署云计算服务环境。第22章 使用openstack部署云计算服务环境。
查看磁盘的分区方式:
第22章 使用openstack部署云计算服务环境。第22章 使用openstack部署云计算服务环境。
主机实例的孵化过程大约需要10-30秒,然后查看已经运行的实例:

第22章 使用openstack部署云计算服务环境。第22章 使用openstack部署云计算服务环境。查看实例主机的网络拓扑(当前仅在内网中):

第22章 使用openstack部署云计算服务环境。第22章 使用openstack部署云计算服务环境。

为实例主机绑定浮动IP地址:

第22章 使用openstack部署云计算服务环境。第22章 使用openstack部署云计算服务环境。

为主机实例添加浮动IP

第22章 使用openstack部署云计算服务环境。第22章 使用openstack部署云计算服务环境。

选择绑定的IP地址:

第22章 使用openstack部署云计算服务环境。第22章 使用openstack部署云计算服务环境。

将主机实例与IP地址关联:

第22章 使用openstack部署云计算服务环境。第22章 使用openstack部署云计算服务环境。

此时再查看实例的信息,IP地址段就多了一个数据值(192.168.10.51):

第22章 使用openstack部署云计算服务环境。第22章 使用openstack部署云计算服务环境。

尝试从外部ping云主机实例(结果是失败的):

[root@openstack ~]# ping 192.168.10.51PING 192.168.10.51 (192.168.10.51) 56(84) bytes of data.From 192.168.10.10 icmp_seq=1 Destination Host UnreachableFrom 192.168.10.10 icmp_seq=2 Destination Host UnreachableFrom 192.168.10.10 icmp_seq=3 Destination Host UnreachableFrom 192.168.10.10 icmp_seq=4 Destination Host Unreachable^C--- 192.168.10.51 ping statistics ---6 packets transmitted, 0 received, +4 errors, 100% packet loss, time 5001mspipe 4

原因是我们没有设置安全组规则那,需要让外部流量允许进入到主机实例中:

第22章 使用openstack部署云计算服务环境。第22章 使用openstack部署云计算服务环境。

填写策略组的名称与描述:

第22章 使用openstack部署云计算服务环境。第22章 使用openstack部署云计算服务环境。

管理安全组的规则:

第22章 使用openstack部署云计算服务环境。第22章 使用openstack部署云计算服务环境。

添加安全规则:

第22章 使用openstack部署云计算服务环境。第22章 使用openstack部署云计算服务环境。

允许所有的ICMP数据包流入(当然根据工作有时还需要选择TCP或UDP协议,此时仅为验证网络连通性):

第22章 使用openstack部署云计算服务环境。第22章 使用openstack部署云计算服务环境。

编辑实例的安全策略组:

第22章 使用openstack部署云计算服务环境。第22章 使用openstack部署云计算服务环境。

将新建的安全组策略作用到主机实例上:

第22章 使用openstack部署云计算服务环境。第22章 使用openstack部署云计算服务环境。

再次尝试从外部ping虚拟实例主机:

[root@openstack ~]# ping 192.168.10.51PING 192.168.10.51 (192.168.10.51) 56(84) bytes of data.64 bytes from 192.168.10.51: icmp_seq=1 ttl=63 time=2.47 ms64 bytes from 192.168.10.51: icmp_seq=2 ttl=63 time=0.764 ms64 bytes from 192.168.10.51: icmp_seq=3 ttl=63 time=1.44 ms64 bytes from 192.168.10.51: icmp_seq=4 ttl=63 time=1.30 ms^C--- 192.168.10.51 ping statistics ---4 packets transmitted, 4 received, 0% packet loss, time 3004msrtt min/avg/max/mdev = 0.764/1.497/2.479/0.622 ms
22.5.5 添加云硬盘

云计算平台的特性就是要能够灵活的,弹性的调整主机实例使用的资源,我们可以来为主机实例多挂载一块云硬盘,首先来创建云硬盘设备:

第22章 使用openstack部署云计算服务环境。第22章 使用openstack部署云计算服务环境。

填写云硬盘的信息(以10GB为例):

第22章 使用openstack部署云计算服务环境。第22章 使用openstack部署云计算服务环境。
编辑挂载设备到主机云实例:
第22章 使用openstack部署云计算服务环境。第22章 使用openstack部署云计算服务环境。
将云硬盘挂载到主机实例中:
第22章 使用openstack部署云计算服务环境。第22章 使用openstack部署云计算服务环境。
查看云主机实例中的硬盘信息:
第22章 使用openstack部署云计算服务环境。第22章 使用openstack部署云计算服务环境。

22.6 控制云主机实例

经过上面的一系列配置,我们此时已经创建出了一台能够交付给用户使用的云主机实例了,查看下云平台的信息:
第22章 使用openstack部署云计算服务环境。第22章 使用openstack部署云计算服务环境。
编辑安全策略,允许TCP和UDP协议的数据流入到云主机实例中:
第22章 使用openstack部署云计算服务环境。第22章 使用openstack部署云计算服务环境。
分别添加TCP和UDP的允许规则:
第22章 使用openstack部署云计算服务环境。第22章 使用openstack部署云计算服务环境。
成功登录到云主机实例中(默认帐号为"cirros",密码为:"cubswin:)"):

[root@openstack ~]# ssh cirros@192.168.10.52The authenticity of host '192.168.10.52 (192.168.10.52)' can't be established.RSA key fingerprint is 12:ef:c7:fb:57:70:fc:60:88:8c:96:13:38:b1:f6:65.Are you sure you want to continue connecting (yes/no)? yesWarning: Permanently added '192.168.10.52' (RSA) to the list of known hosts.cirros@192.168.10.52's password: $

查看云主机实例的网络情况:

$ ip a 1: lo:  mtu 16436 qdisc noqueue     link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00    inet 127.0.0.1/8 scope host lo    inet6 ::1/128 scope host        valid_lft forever preferred_lft forever2: eth0:  mtu 1500 qdisc pfifo_fast qlen 1000    link/ether fa:16:3e:4f:1c:97 brd ff:ff:ff:ff:ff:ff    inet 10.10.10.51/24 brd 10.10.10.255 scope global eth0    inet6 fe80::f816:3eff:fe4f:1c97/64 scope link        valid_lft forever preferred_lft forever

挂载刚刚创建的云硬盘设备:

$ df -hFilesystem                Size      Used Available Use% Mounted on/dev                    494.3M         0    494.3M   0% /dev/dev/vda1                23.2M     18.0M      4.0M  82% /tmpfs                   497.8M         0    497.8M   0% /dev/shmtmpfs                   200.0K     68.0K    132.0K  34% /run$ mkdir disk$ sudo mkfs.ext4 /dev/vdbmke2fs 1.42.2 (27-Mar-2012)Filesystem label=OS type: LinuxBlock size=4096 (log=2)Fragment size=4096 (log=2)Stride=0 blocks, Stripe width=0 blocks655360 inodes, 2621440 blocks131072 blocks (5.00%) reserved for the super userFirst data block=0Maximum filesystem blocks=268435456080 block groups32768 blocks per group, 32768 fragments per group8192 inodes per groupSuperblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632Allocating group tables: done                            Writing inode tables: done                            Creating journal (32768 blocks): doneWriting superblocks and filesystem accounting information: done $ sudo mount /dev/vdb disk/$ df -hFilesystem                Size      Used Available Use% Mounted on/dev                    494.3M         0    494.3M   0% /dev/dev/vda1                23.2M     18.0M      4.0M  82% /tmpfs                   497.8M         0    497.8M   0% /dev/shmtmpfs                   200.0K     68.0K    132.0K  34% /run/dev/vdb                  9.8G    150.5M      9.2G   2% /home/cirros/disk
原创粉丝点击