《Linux就该这么学》自学笔记_ch22_使用openstackb部署云计算服务环境
文章主要内容:
对于销售内容涉及方方面面,业务范围遍布全球的互联网巨头企业,自然少不了庞大的基础设施的支撑。传统的硬件设施一旦投入就要一大笔钱,并且在业务的淡季也要一直的空闲,这样无疑产生了资源和资金的巨大浪费。
最初的云计算是由Google与Amazon分别提出的,核心理念之一就是通过云计算服务降低用户对资源拥有的成本。
NIST(美国国家标准与技术研究院)对于云计算的定义:云计算是一种按使用量付费的服务模式,这是一种能够提供可用的、便捷的、按需求的网络访问模式,计算共享池能够快速的为用户提供网络、服务器、存储、应用软件及其他服务,并且只需要花费很少的管理时间。
NIST针对于云计算的服务模式提出了3个服务层次:
图中灰色的为要用户自己管理的内容,可见级别越高,云计算服务所提供的服务越多,用户需要操心的事项越少。
Openstack最初是由NASA和Rackspace共同发起的云端计算服务项目,该项目以Apache许可证授权的方式成为了一款开源产品,目的是将多个组件整合后从而实现一个开源的云计算平台,目前Openstack项目正在被超过一百家厂商共同研发,并已经支持了几乎所有的常见云计算环境,拥有了良好的可扩展性,而且部署搭建Openstack服务也变得十分简单,目前国内对于云计算的需求也逐渐增加,很多中国企业也加入到了Openstack项目研发当中,Openstack项目也正在随着全球内得到了众多厂商的参与支持而快速成熟。
通过Openstack云计算项目,能够将诸如计算能力、存储、网络和软件等资源抽象成服务,以便让用户可以通过互联网远程来享用,付费的形式也变得因需而定,调整方便,拥有极强的虚拟可扩展性,是公共和私有云的建设与管理软件中的优秀开源项目。
Openstack作为一个云平台的管理项目,其功能组件覆盖了网络、虚拟化、操作系统、服务器等多个方面,每个功能组件交由不同的项目委员会来研发和管理,目前核心的项目包括有:
功能 | 项目名称 | 描述 |
计算服务 | Nova | 负责虚拟机的创建、开关机、挂起、迁移、调整CPU、内存等规则。 |
对象存储 | Swift | 用于在大规模可扩展系统中通过内置的冗余及高容差机制实现对象存储的系统。 |
镜像服务 | Glance | 用于创建、上传、删除、编辑镜像信息的虚拟机镜像查找及索引系统。 |
身份服务 | Keystone | 为其他的功能服务提供身份验证、服务规则及服务令牌的功能。 |
网络管理 | Neutron | 用于为其他服务提供云计算的网络虚拟化技术,可自定义各种网络规则,支持主流的网络厂商技术。 |
块存储 | Cinder | 为虚拟机实例提供稳定的数据块存储的创建、删除、挂载、卸载、管理等服务。 |
图形界面 | Horizon | 为用户提供简单易用的Web管理界面,降低用户对功能服务的操作难度。 |
测量服务 | Ceilometer | 收集项目内所有的事件,用于监控、计费或为其他服务提供数据支撑。 |
部署编排 | Heat | 实现通过模板方式进行自动化的资源环境部署服务。 |
数据库服务 | Trove | 为用户提供可扩展的关系或非关系性数据库服务。 |
Openstack项目的版本按照ABCDEFG……的顺序发布,每6个月更新一次。Openstack版本发布历史:
版本名称 | 发布时间 |
Liberty | 2015年10月15日 |
Kilo | 2015年4月30日 |
Juno | 2014年10月16日 |
Icehouse | 2014年4月17日 |
Havana | 2013年10月17日 |
Grizzly | 2014年4月4日 |
Folsom | 2012年9月27日 |
Essex | 2012年4月5日 |
Diablo | 2011年9月22日 |
Cactus | 2011年4月15日 |
Bexar | 2011年2月3日 |
Austin | 2010年10月21日 |
Openstack是一个云计算的平台,也像是部署云操作系统的工具集,可以通过调取不同的组件来构建虚拟计算及云计算服务,比较重要的包括有计算(compute)、对象存储(Objectstorage)、认证(Identity)、仪表板(Dashboard)、块存储(Block Storage)、网络(Network)和镜像服务(image service),Openstack服务组件协同工作拓扑:
Nova提供计算服务:Nova可以称作是Openstack云计算平台中最核心的服务组件了,它作为计算的弹性控制器来管理虚拟化、网络及存储等资源,为Openstack的云主机实例提供可靠的支撑,其功能由不同的API来提供。
Glance提供镜像服务:Openstack镜像服务是一套用于主机实例来发现、注册、索引的系统,功能相比较也很简单,具有基于组件的架构、高可用、容错性、开发标准等优良特性,虚拟机的镜像可以被放置到多种存储上。
Swift提供存储服务:Swift模块是一种分布式、持续虚拟对象存储,具有跨节点百级对象的存储能力,并且支持内建冗余和失效备援的功能,同时还能够处理数据归档和媒体流,对于超大数据和多对象数量非常高效。
Horizon提供管理服务:Horizon是一个用于管理、控制Openstack云计算平台服务器的Web控制面板,用户能够在网页中管理主机实例、镜像、创建密钥对、管理实例卷、操作Swift容器等操作。
Quantum提供网络服务:重要的网络管理组件。
Cinder提供存储管理服务:用于管理主机实例中的存储资源。
Heat提供软件部署服务:用于在主机实例创建后简化配置操作。
实验用的是Openstack的Juno版本。
安装Openstack软件前需要做的配置:
1.虚拟机硬件需求:内存8G,开启虚拟化功能,多添加一块20G的硬盘。
2.更改主机名以及主机名(/etc/hostname)与IP地址的映射文件(/etc/hosts):主机名openstack.kamin.com,IP地址172.24.8.101,DNS172.24.8.101,网关172.24.8.1。
vim /etc/hostname openstack.kamin.com vim /etc/hosts ... 172.24.8.101 openstack.kamin.com openstack ...
3.下载EPEL仓库源和Openstack-juno软件安装包,上传到虚拟机。下载地址:https://www.linuxprobe.com/tools/。
4.解压上一步上传的压缩包,并写成repo文件。
tar xjvf epel.tar.bz2 #解压EPEL包 vim /etc/yum.repos.d/epel.repo #写入EPEL的yum仓库信息 [epel] name=epel baseurl=file:///media/EPEL enabled=1 gpgcheck=0 tar xjvf openstack-juno.tar.bz2 #解压openstack包 vim /etc/yum.repos.d/openstack.repo #写入openstack的yum仓库信息 [openstack] name=openstack baseurl=file:///media/openstack-juno enabled=1 gpgcheck=0
5.将新添加的硬盘做成逻辑卷,暂时只需创建卷组,逻辑卷待有需要再进一步创建。
pvcreate /dev/sdb
vgcreate cinder-volumes /dev/sdb
以上步骤即做好安装openstack的前期工作。为方便日后回忆知识点,本人将在此阶段设置快照。
部署openstack
#1.安装Openstack的应答文件 yum install -y openstack-packstack #2.安装Openstack服务程序 packstack --allinone --provision-demo=n --nagios-install=n #3.创建云平台的网卡配置文件 vim /etc/sysconfig/network-scripts/ifcfg-br-ex DEVICE=br-ex IPADDR=192.168.10.10 NETMASK=255.255.255.0 BOOTPROTO=static DNS1=192.168.10.1 GATEWAY=192.168.10.1 BROADCAST=192.168.10.254 NM_CONTROLLED=no DEFROUTE=yes IPV4_FAILURE_FATAL=yes IPV6INIT=no ONBOOT=yes DEVICETYPE=ovs TYPE="OVSIntPort" OVS_BRIDGE=br-ex #4.修改网卡信息 vim /etc/sysconfig/network-scripts/ifcfg-eno16777728 DEVICE=eno16777728 ONBOOT=yes TYPE=OVSPort DEVICETYPE=ovs OVS_BRIDGE=br-ex NM_CONTROLLED=no IPV6INIT=no #5.将网卡设备添加到OVS网络中 ovs-vsctl add-port br-ex eno16777728 ovs-vsctl show #6.重启系统让网络设备同步 reboot #7.执行身份验证脚本 source keystonerc_admin openstack-status #8.查看登录云平台管理页面的账号密码 cat keystonerc_admin
打开浏览器访问172.24.8.101/dashboard,输入第8步查出的账号密码,即可登入Openstack管理中心。
要想让云平台中的虚拟实例机能够互相通信,并且让外部的用户访问到里面的数据,必需配置好云平台中的网络环境。
1.Openstack创建网络:管理员 -> 网络,创建网络,相应的参数值:
填好参数后点击“创建网络”即生成一个网络。
2.创建子网信息。点击网络名称“wlan”,弹出wlan这个网络的详情,点击右下方“创建子网”。相应的参数值:
填好参数后点击“已创建”即成功创建子网。
3.创建私有网络:项目 -> 网络 -> 网络,创建网络,相应参数值:
点击“已创建”即成功创建私有网络及其子网。
4.添加路由信息。项目 -> 路由,新建路由,路由名称:router_wlan_private,点击“新建路由”即成功创建一个路由。点击新创建路由右边的“设置网关”,外部网络:wlan。点击“设置网关”即成功设置网关。
5.在网络拓扑中添加接口。项目 -> 网络 -> 网络拓扑,鼠标找到正方形的接口,点击“增加接口”。相应参数值:
填好参数后点击“增加接口”即可成功增加接口
1.创建云主机类型。管理员》云主机类型》创建运作主机类型,相应参数值:
填好参数后点击“创建云主机类型”完成创建。
2.创建上传镜像。上传一个cirros镜像(下载地址:http://download.cirros-cloud.net/0.4.0/cirros-0.4.0-x86_64-disk.img)。管理员》系统》镜像》创建镜像,相应参数值:
点击“创建镜像”完成镜像创建。
1.创建主机实例。项目》Compute》实例》启动云主机。云主机详细参数:
可用域:nova
云主机名称:cirros-0.4.0
云主机类型:LP_standard
云主机数量:1
云主机启动源:从镜像启动
镜像名称:Cirros(12.6MB)
已选择的网络:选择先前创建好的私有网络
点击“运行”,等待主机实例孵化完成。可以通过网络拓扑看到实例主机(当前仅在内网中)。
2.为实例主机绑定浮动IP地址。项目》实例》动作》绑定浮动IP,点击“IP地址”框右边的“+”按钮,选择资源池为“wlan”,此时会从资源池中按递增顺序分配IP地址(从172.24.8.111开始),点击“分配IP”,点击“关联”,完成实例主机与IP地址绑定。
此时查看实例信息,会发现IP地址一栏出现私网地址和公网地址。不过此时实例主机既ping不通,也不能ssh,因为还没有设置安全组规则(说白了就是防火墙)。
3.设置安全组规则。
4.编辑实例的安全策略组。将新建的安全组策略应用到主机实例上。项目》Compute》实例》动作》编辑安全组。
现在,外部就能ping同实例主机以及ssh了。
云计算平台的特性就是要能够灵活的,弹性的调整主机实例使用的资源,可以来为主机实例多挂载一块云硬盘(基于虚拟机的做成逻辑卷的额外硬盘)。
1.创建云硬盘设备。项目》Compute》云硬盘》创建云硬盘,相应参数:
2.编辑挂载设备到云主机实例,项目》Compute》云硬盘》动作》编辑挂载,连接到云主机,选中先前创建的云主机实例。
查看云平台信息:项目》Compute》概况,
通过ssh登入云主机实例,cirros系统规定要用cirros登录,cirros-0.4.0版本的默认密码为gocubsgo,若要执行某些管理员才能执行的命令,使用sudo命令。
ssh cirros@172.24.8.111 $ ip a #查看网卡信息 $ df -h #查看挂载信息 $ mkdir disk $ sudo mkfs.ext4 /dev/vdb #格式化先前添加的云硬盘(10G)为ext4格式 $ sudo mount /dev/vdb disk/ #挂载 $ df -h