一.OpenStack详述
OpenStack简介
- OpenStack是一个是一个开源的云计算管理平台项目,是一系列软件开源项目的组合。通过命令或者基于Web的可视化控制面板来管理IaaS云端资源池(服务器、存储和网络)。它2010年由美国国家航空航天局(NASA)和Rackspace合作研发。
- 但是至2016年开始OpenStack就已经在走下坡路,美国国家航空航天局NASA在2012年停止OpenStack相关研发工作,揭开了OpenStack的式微序曲,在此之后,越来越多的IT厂商开始放弃OpenStack:2015年,Rackspace宣布将客户的业务迁移到 AWS 上;2015年10月,惠普宣布关闭基于OpenStack的公共云服务Helion;2016年2月,思科宣布将在2018年3月停止基于OpenStack的公共云服务Intercloud;2016年11月,OpenStack核心成员Mirantis,裁掉了约100名OpenStack开发者;2017年4月,英特尔决定不再投资OpenStack创新中心。
- 阿里云、亚马逊AWS、微软Azure、谷歌GCP,自主研发的都是互联网公司,而选择OpenStack如IBM、英特尔、华为,包括退出的思科与惠普,都是传统的IT厂家。
- OpenStack是否式微暂且不说
- OpenStack支持KVM、Xen、Lvc、Docker等虚拟软件或容器,默认为KVM。通过安装驱动,也支持Hyper-V和Vmware ESXi,不过有些功能暂时不支持,具体的虚拟机管理器支持矩阵参见网站 http://docs.openstack.org/developer/nova/support-matrix.html
- OpenStack采用Python语言开发,遵循Apache开源协议,因此相比CloudStack来说,更轻量化,效率更高。OpenStack每半年更新一个版本,截止目前发布的版本是第21版本OpenStack Ussuri,各个版本的发行时间表参考网站 https://releases.openstack.org/。
- OpenStack主要任务是给用户提供IaaS服务
IaaS(基础设施即服务):IaaS提供最底层的IT基础设施服务,包括处理能力,存储空间,网络资源等,用户可以从中获取硬件或者虚拟硬件资源(包括裸机或者虚拟机),之后可以申请到的资源安装操作系统和其他应用程序,一般面向对象是IT管理人员
PaaS(平台即服务):是把已经安装好开发环境的系统平台作为一种服务通过互联网提供给用户。用户可以在上面安装其他的应用程序,但是不能修改已经安装好的操作系统和运行环境。一般面向对象是开发人员,需要了解平台提供环境下的应用开发和部署
SaaS(软件即服务):SaaS可以直接通过互联网为用户提供软件和应用程序的服务,用户可以通过和租聘的方式获取安装在厂商或者服务提供商哪里的软件。一般面向的对象是普通用户,最常见模式是提供给用户一组账号和密码
OpenStack的组件功能
- OpenStack生态系统已从“孵化/集成”模式转移到“大帐篷”模式,在此模式下,既保持了对规模较小的核心项目的关注,也积极鼓励在更广泛的主流生态环境中的自由创新,而以前的“孵化/集成”模式只是把孵化成功的项目集成到主流生态中
- “大帐篷”模式把OpenStack的组件进行分类,目前包括6个核心组件(Nova、Neutron、Swift、Cinder、Keystone、Glance)和14个可选组件,每个组件包含若干个服务,后续版本中组件分类及数量都可能会发生变化,如下所示
分类 | 服务 | 组件名称 | 描述 |
核心组件 | 计算服务 | Nova | 管理虚拟机的整个生命周期:创建、运行、挂起、调度、关闭、销毁等。这是真正的执行部件。接受 DashBoard 发來的命令并完成具体的动作。但是 Nova 不是虛拟机软件,所以还需要虚拟机软件(如 KVM、Xen、Hyper-v 等)配合 |
网络服务 | Neutron | 管理网络资源,提供/一组应用编程接口(API),用户可以调用它们来定义网络(如 VLAN ),并把定义好的网络附加给租户。Networking 是一个插件式结构,支持当前主流的网络设备和最新网铬技术 | |
对象存储 | Swift | 是 NoSQL 数据库,类似 HBase,为虚拟机提供非结构化数据存储,它把相同的数据存储在多台计箅机上,以确保数据不会丢失。用户可通过 RESTful 和 HTTP 类型的 API 来和它通信。这是实际的存储项目,类似 Ceph,不过在 OpcnStack 具体实施时,人们更愿意采用 Ceph。 | |
块存储 | Cinder | 管理块设备,为虚拟机管理 SAN 设备源。但是它本身不是块设备源, 需要一个存储后端来提供实际的块设备源(如 iSCSI、FC等)。 Cinder 相当于一个管家,当虚拟机需要块设备时,询问管家去哪里获取具体的块设备。它也是插件式的,安装在具体的 SAN 设备里。 | |
认证服务 | Keystone | 为其他服务提供身份验证、权限管理、令牌管理及服务名册管理。要使用云计算的所有用户事先需要在 Keystone 中建立账号和密码,并定义权限(注意:这里的“用户”不是指虚拟机里的系统账户,如 Windows 7 中的 Administrator )。另外,OpenStack 服务(如 Nova、Neutron、Swift、Cinder 等)也要在里面注册,并且登记具体的 API,Keystone 本身也要注册和登记 API | |
镜像服务 | Glance | 存取虚拟机磁盘镜像文件,Compute 服务在启动虚拟机时需要从这里获取镜像文件。这个组件不同于上面的 Swift 和 Cinder,这两者提供的 存储是在虚拟机里使用的 | |
可选组件 | 基于web的管理界面 | Horizon | 提供了一个网页界面,用户登录后可以做这些操作:管理虚拟机、配置权限、分配 IP 地址、创建租户和用户等。本质上就是通过图形化的 操作界面控制其他服务(如 Compute、Networking 等)。当然,如果你熟悉命令,也可以直接采用命令来完成相应的任务 |
编排 | Heat | 如果要在成千上万个虚拟机里安装和配置同一个软件,该怎么办?采用 Orchestrates 是一个不错的主意,它向每个虚拟机里注人一个名叫 heat-cfntools 的客户端工具,然后就能同时操作很多虚拟机 | |
大数据平台搭建 | Sahana | 使用户能够在 OpenStack 平台上(利用虚拟机)一键式创建和管理 Hadoop 集群,实现类似 AWS 的 EMR(Amazon Elastic MapReduce Service)功能。用户只需要提供简单的配置参数和模板,如版本信息(CDH 版本)、集群拓扑(几个 Slave、几个 Datanode)、节点配置信息(CPU、内存)等,Sahara 服务就能够在几分钟内根据提供的模板快速 部署 Hadoop、Spark 及 Storm 集群。Sahana 是一个大数据分析项目 | |
裸机管理 | Ironic | 把裸金属机器(与虚拟机相对)加人到资源池中 | |
消息服务 | Zaqar | Zaqar 为 Web 和移动开发者提供多租户云消息和通知服务,开发人员可以通过 REST API 在其云应用的不同组件中通过不同的通信模式(如 生产者/消费者或发布者/订阅者)来传递消息 | |
计量 | Ceilometer | 结合 Aodh、CloudKitty 两个组件,完成计费任务,如结算、消耗的 资源统计、性能监控等。OpenStack 之所以能管理公共云,一是因为 Ceilometer 的存在,二是因为引人了租户的概念 | |
密钥管理 | Barbican | 是 OpenStack 的密钥管理组件,其他组件可以调用 Barbican 对外暴露的 REST API 来存储和访问密钥 | |
文件系统共享 | Manila | 为虚拟机提供文件共享服务,不过需要存储后端的配合 | |
|
OpenStack的优势
- OpenStack在控制性、兼容性、可扩展性、灵活性方面具备有优势,它可能成为云计算领域的行业标准
- 控制性:完全开源的平台,模块化的设计,提供相应的API接口,方便与第三技术集成,从而满足自身业务需求
- 兼容性:OpenStack兼容其他公有云,方便用户进行数据迁移
- 可扩展性:OpenStack采用模块化的设计,支持主流发行版本的Linux,可以通过横向扩展,增加节点、添加资源
- 灵活性:用户可以根据自己的需要建立基础设施,也可以轻松地为自己的群集增加规模。OpenStack项目采用Apache2许可,意味着第三方厂家可以重新发布源代码
二.部署单节点OpenStack具体步骤
环境要求
- 本实验使用VMware虚拟机,下面是该虚拟机的配置
角色 | 系统 | 内存 | 磁盘 | CPU(启用虚拟化功能) |
客户端 | CentOS7.6 | 8G | 40G系统盘 150G数据盘 | 双核双线程 |
注:虚拟机处于NAT模式下,保证能够正常上网
安装步骤
- 关闭安全性功能
systemctl stop firewalld
systemctl disable firewalld ##永久性关闭
setenforce 0
vi /etc/sysconfig/selinux ##永久性关闭
SELINUX=disabled
- 关闭NetworkManager服务
systemctl disable NetworkManager
systemctl stop NetworkManager
- YUM源配置
##删除原有的源
cd /etc/yum.repos.d/
rm -rf *
##配置YUM源
vim CentOS-Base.repo
[openstack-train]
name=openstack-train
baseurl=https://mirrors.aliyun.com/centos/7/cloud/x86_64/openstack-train/
enabled=1
gpgcheck=0
#[openstack-ocata]
#name=openstack-ocata
#baseurl=https://mirrors.aliyun.com/centos/7/cloud/x86_64/openstack-ocata/
#enabled=1
#gpgcheck=0
#[openstack-rocky]
#name=openstack-rocky
#baseurl=https://mirrors.aliyun.com/centos/7/cloud/x86_64/openstack-rocky/
#enabled=1
#gpgcheck=0
[kvm-common]
name=kvm-common
baseurl=https://mirrors.aliyun.com/centos/7/virt/x86_64/kvm-common/
enabled=1
gpgcheck=0
[base]
name=CentOS-$releasever - Base - 163.com
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
baseurl=http://mirrors.163.com/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=http://mirrors.163.com/centos/RPM-GPG-KEY-CentOS-7
#released updates
[updates]
name=CentOS-$releasever - Updates - 163.com
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates
baseurl=http://mirrors.163.com/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=http://mirrors.163.com/centos/RPM-GPG-KEY-CentOS-7
#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras - 163.com
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras
baseurl=http://mirrors.163.com/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=http://mirrors.163.com/centos/RPM-GPG-KEY-CentOS-7
#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus - 163.com
baseurl=http://mirrors.163.com/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://mirrors.163.com/centos/RPM-GPG-KEY-CentOS-7
name=CentOS-$releasever - Updates - 163.com
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates
baseurl=http://mirrors.163.com/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=http://mirrors.163.com/centos/RPM-GPG-KEY-CentOS-7
#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras - 163.com
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras
baseurl=http://mirrors.163.com/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=http://mirrors.163.com/centos/RPM-GPG-KEY-CentOS-7
#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus - 163.com
baseurl=http://mirrors.163.com/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://mirrors.163.com/centos/RPM-GPG-KEY-CentOS-7
- 删除原有的缓存,建立新的缓存
[root@localhost yum.repos.d]# yum clean all
[root@localhost yum.repos.d]# yum makecache
- 同步阿里云的时间
[root@control ~]# yum -y install ntpdate
[root@control ~]# ntpdate ntp.aliyun.com
##创建计划性任务表,每两分钟更新一次时钟
[root@control ~]# crontab -e
*/2 * * * * /usr/sbin/ntpdate ntp.aliyun.com >>/var/log/ntpdate.log
[root@control ~]# systemctl restart crond
[root@control ~]# systemctl enable crond
[root@control ~]# tail -f /var/log/ntpdate.log ###动态查看更新日志文件,这条命令可以不敲
- 安装OpenStack T版
[root@OpenStack ~]# yum -y install centos-release-openstack-train
- 安装OpenStack-packstack软件包
[root@OpenStack ~]# yum -y install openstack-packstack
- 安装OpenStack-Train
packstack --allinone
##出现如下界面则安装成功
**** Installation completed successfully ******
- 查看密码
[root@localhost ~]# cat keystonerc_admin
unset OS_SERVICE_TOKEN
export OS_USERNAME=admin
export OS_PASSWORD='ccd4412cb85a4667' ##此为登录OpenStack密码
export OS_REGION_NAME=RegionOne
export OS_AUTH_URL=http://192.168.43.104:5000/v3
export PS1='[\u@\h \W(keystone_admin)]\$ '
export OS_PROJECT_NAME=admin
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_DOMAIN_NAME=Default
export OS_IDENTITY_API_VERSION=3
[root@localhost ~]#
- 登录http://192.168.43.104/dashboard/ 测试,账户为admin,密码为ccd4412cb85a4667
- 上传镜像到本机中,用于在OpenStack中创建系统
- 利用Xftp上传镜像到已经创建好的数据盘中
[root@localhost ~]# source keystonerc_admin
[root@localhost ~(keystone_admin)]# ll
总用量 68
-rw-------. 1 root root 1880 1月 4 16:15 anaconda-ks.cfg
-rw-r--r--. 1 root root 1911 1月 4 17:31 initial-setup-ks.cfg
-rw-------. 1 root root 374 2月 20 16:34 keystonerc_admin
-rw-------. 1 root root 319 2月 20 16:34 keystonerc_demo
-rw-------. 1 root root 51681 2月 20 16:28 packstack-answers-20200220-162837.txt
drwxr-xr-x. 2 root root 6 1月 4 18:05 公共
drwxr-xr-x. 2 root root 6 1月 4 18:05 模板
drwxr-xr-x. 2 root root 6 1月 4 18:05 视频
drwxr-xr-x. 2 root root 6 1月 4 18:05 图片
drwxr-xr-x. 2 root root 6 1月 4 18:05 文档
drwxr-xr-x. 2 root root 6 1月 4 18:05 下载
drwxr-xr-x. 2 root root 6 1月 4 18:05 音乐
drwxr-xr-x. 2 root root 6 1月 4 18:05 桌面
[root@localhost ~(keystone_admin)]# cd /data
[root@localhost data(keystone_admin)]# openstack image create --container-format bare --disk-format iso --public --file CentOS-7-x86_64-DVD-1810.iso ISO_CentOS7.6
+------------------+------------------------------------------------------+
| Field | Value |
+------------------+------------------------------------------------------+
| checksum | 5b61d5b378502e9cba8ba26b6696c92a |
| container_format | bare |
| created_at | 2019-04-27T18:15:22Z |
| disk_format | iso |
| file | /v2/images/9a3469e6-4bde-4544-8fe3-daa909c6682d/file |
| id | 9a3469e6-4bde-4544-8fe3-daa909c6682d |
| min_disk | 0 |
| min_ram | 0 |
| name | ISO_CentOS7.6 |
| owner | c44490a1222c4a23861b4b87147a744c |
| protected | False |
| schema | /v2/schemas/image |
| size | 4588568576 |
| status | active |
| tags | |
| updated_at | 2019-04-27T18:16:01Z |
| virtual_size | None |
| visibility | public |
+------------------+------------------------------------------------------+