资源描述
20180902
作者:
宁夏大学
20180902
Opens tack的搭建
目录
目录
目录 1
第一部分————基础知识 1
1. opens tack是什么 1
2. Openstack的计算设施————Nova 4
3. Openstack的镜像服务器————Glance 6
4. Openstack的管理Web的接口————Horizon 7
5.openstack的存储设备———— swift 8
5. Openstack的认证服务————Keystone 10
第二部分————openstack的搭建 11
1.openstack安装的准备工作 11
1.1实验环境 11
1.2网络规划 12
1.3实验环境的安装 13
2.实验环境软件的安装 22
2.1基础软件包---EPEL仓库 22
2.2yun安装 23
3.基础服务部署 24
3.1数据库服务 24
3.2消息代理服务RabbitMQ 26
4.认证服务keystone 27
4.1keystone的安装 27
4.2keystone的配置 28
4.3keystone管理 30
4.4验证keystone安装 32
5.Image services(Glance) 33
5.1glance安装 33
5.2glance配置准备 33
5.3设置数据库 34
5.4设置rabbitmq 35
5.5设置keystone 35
5.6glance启动 36
5.7测试glance 37
6.Computer Services(Nova) 39
6.1NOVA安装 39
6.2创建配置文件 39
6.3nova的配置 40
6.4创建nova service和endpoint 43
6.5启动nova service 44
6.6安装novnc并启动该服务 45
6.7验证nova的安装 45
7.Dashboard(Horizon) 46
7.1horizon配置 46
7.2apache配置 46
7.3启动apache 47
8. .Networking services(Neutron) 48
8.1neutron安装 48
8.2neutron配置 48
8.3neutron plugin 51
8.4neutron启动 52
8.5测试neutron安装 52
第一部分————基础知识
1. opens tack是什么
为了更好的理解,我们首先来说一下云计算的类型。根据所提供服务的类型,云计算有以下三种落地方式:
1、Iaas(基础架构即服务),用户能从中申请到硬件或虚拟硬件,包括裸机或虚拟机,然后在上边安装操作系统或其他应用程序。
2、PaaS(平台即服务),用户能从中申请到一个安装了操作系统以及支撑应用程序运行所需要的运行库等软件的物理机或虚拟机,然后在上边安装其他应用程序,但不能修改已经预装好的操作系统和运行环境。
3、SaaS(软件即服务),用户可以通过网络以租赁的方式来使用一些软件,而不是购买,比较常见的模式是提供一组账号密码。
OpenStack就是一种IaaS。2010年7月,RackSpace和美国国家航空航天局合作,分别贡献出RackSpace云文件平台代码和NASA Nebula平台代码,并以Apache许可证开源发布了OpenStack,OpenStack由此诞生。OpenStack第一版的代号为 Austin,以RackSpace所在的美国德州Texas首府命名,计划每隔几个月发布一个全新的版本,并且以26个英文字母为首字母从A到Z顺序命名后面的版本。第一版仅有Swift和Nova两个项目。
2011年2月,OpenStack社区发布了Bexar版本,这是OpenStack的第二版,新增了Glance来提供镜像服务。
2011年4月,OpenStack社区发布了更加稳定的Cactus版本,但是这个版本没有新的项目。
2011年9月,OpenStack发布了它的第四个版本Diablo,从此OpenStack的版本更新定为每半年一次,分别是当年的春秋两季。
…….
OpenStack目前共涵盖了七个核心组件,分别是计算(Compute)、对象存储(Object Storage)、认证(Identity)、用户界面(Dashboard)、块存储(Block Storage)、网络(Network)和镜像服务(Image Service)。每个组件都是多个服务的集合,一个服务意味着运行着的一个进程。
Compute(Nova)Compute的项目代号是Nova,他根据需求提供虚拟机服务,比如创建虚拟机或对虚拟机做热迁移等。
Object Storage(Swift)它允许存储或检索对象,也可以认为它允许存储或检索文件,它能以低成本的方式管理大量无结构数据。
Identity(Keystone)为所有OpenStack服务提供身份验证和授权,跟踪用户以及他们的权限,提供一个可用服务及API列表。
DashBoard(Horizon)它为所有OpenStack的服务提供一个模块化的基于Django的界面,通过这个界面,不论是最终用户还是运维人员都可以完成大多数的操作,比如启动虚拟机,分配IP地址,动态迁移等。
Block Storage(Cinder)提供块存储服务
Network(Neutron)用于提供网络连接服务,允许用户创建自己的虚拟网络并连接各种网络设备接口。
ImageService(Glance)提供一个虚拟机镜像的存储、查询和检索服务,通过提供一个虚拟磁盘映像的目录和存储库,为Nova虚拟机提供镜像服务。
下面以创建虚拟机为例说明一下各个组件之间是如何相互配合完成工作的。用户首先接触到的是界面,也就是Horizon。通过Horizon上的简单界面操作,一个创建虚拟机的请求被发送到OpenStack系统后端。既然要启动一个虚拟机,就必须指定虚拟机操作系统是什么类型,就必须下载启动镜像以供虚拟机启动使用,这件事情就有Glance来完成的,而此时Glance所管理的镜像是有可能存储在Swift上的,所以需要与Swift交互得到需要的镜像文件。
在创建虚拟机的时候,自然而然地需要Cinder提供块服务和Neutron提供网络服务,以便该虚拟机有volume可以使用,能被分配到IP 地址与外界网络连接,而且之后改虚拟机资源的访问要经过KeyStone的认证之后才可以继续。至此,OpenStack的所有核心组件都参与了这个创建虚拟机的操作。
(1) 官方的解释相信大家都已经了解了,不了解也没有关系。现在从常识的角度来给大家解释和说明。OpenStack是一个云平台管理的项目,它不是一个软件。这个项目由几个主要的组件组合起来完成一些具体的工作。OpenStack是一个旨在为公共及私有云的建设与管理提供软件的开源项目,OpenStack被公认作为基础设施即服务(简称IaaS)资源的通用前端。如果这些还不明白,那么从另外的角度给大家介绍:首先让大家看下面两个图就很简单明了了:
此图为openstack的登录界面
可以说他是一个框架,甚至可以从软件的角度来理解它。如果不明白,就从传统开发来讲解。不知道你是否了解oa,erp等系统,他和oa,erp有什么不同。很简单就是openstack是用做云计算的一个平台,或则一个解决方案。它是云计算一个重要组成部分。
(2) openstack能干什么。
大家都知道阿里云平台,百度云平台,而阿里云平台据传说就是对openstack的二次开发。对于二次开发相信只要接触过软件的都会明白这个概念。不明白的自己网上去查一下。也就是说openstack,可以搭建云平台,什么云平台,公有云,私有云。
(3) openstack自身都包含什么
以下是5个OpenStack的重要构成部分:
Nova – 计算服务
Swift – 存储服务
Glance – 镜像服务
Keystone – 认证服务
Horizon – UI服务
2. Openstack的计算设施————Nova
Nova是OpenStack计算的弹性控制器。OpenStack云实例生命期所需的各种动作都将由Nova进行处理和支撑,这就意味着Nova以管理平台的身份登场,负责管理整个云的计算资源、网络、授权及测度。虽然Nova本身并不提供任何虚拟能力,但是它将使用libvirt API与虚拟机的宿主机进行交互。Nova通过Web服务API来对外提供处理接口,而且这些接口与Amazon的Web服务接口是兼容的。
功能及特点
l 实例生命周期管理
l 计算资源管理
l 网络与授权管理
l 基于REST的API
l 异步连续通信
l 支持各种宿主:Xen、XenServer/XCP、KVM、UML、VMware vSphere及Hyper-V
OpenStack计算部件
l Nova弹性云包含以下主要部分:
l API Server(nova-api)
l 消息队列(rabbit-mq server)
l 运算工作站(nova-compute)
l 网络控制器(nova-network)
l 卷管理(nova-volume)
l 调度器(nova-scheduler)
API服务器(nova-api)
API服务器提供了云设施与外界交互的接口,它是外界用户对云实施管理的唯一通道。通过使用web服务来调用各种EC2的API,接着API服务器便通过消息队列把请求送达至云内目标设施进行处理。作为对EC2-api的替代,用户也可以使用OpenStack的原生API,我们把它叫做“OpenStack API”。
消息队列(Rabbit MQ Server)
OpenStack内部在遵循AMQP(高级消息队列协议)的基础上采用消息队列进行通信。Nova对请求应答进行异步调用,当请求接收后便则立即触发一个回调。由于使用了异步通信,不会有用户的动作被长置于等待状态。例如,启动一个实例或上传一份镜像的过程较为耗时,API调用就将等待返回结果而不影响其它操作,在此异步通信起到了很大作用,使整个系统变得更加高效。
运算工作站(nova-compute)
运算工作站的主要任务是管理实例的整个生命周期。他们通过消息队列接收请求并执行,从而对实例进行各种操作。在典型实际生产环境下,会架设许多运算工作站,根据调度算法,一个实例可以在可用的任意一台运算工作站上部署。
网络控制器(nova-network)
网络控制器处理主机的网络配置,例如IP地址分配,配置项目VLAN,设定安全群组以及为计算节点配置网络。
卷工作站(nova-volume)
卷工作站管理基于LVM的 实例卷,它能够为一个实例创建、删除、附加卷,也可以从一个实例中分离卷。卷管理为何如此重要?因为它提供了一种保持实例持续存储的手段,比如当结束一个 实例后,根分区如果是非持续化的,那么对其的任何改变都将丢失。可是,如果从一个实例中将卷分离出来,或者为这个实例附加上卷的话,即使实例被关闭,数据 仍然保存其中。这些数据可以通过将卷附加到原实例或其他实例的方式而重新访问。
因此,为了日后访问,重要数据务必要写入卷中。这种应用对于数据服务器实例的存储而言,尤为重要。
调度器(nova-scheduler)
调度器负责把nova-API调用送达给目标。调度器以名为“nova-schedule”的守护进程方式运行,并根据调度算法从可用资源池中恰当地选择运算服务器。有很多因素都可以影响调度结果,比如负载、内存、子节点的远近、CPU架构等等。强大的是nova调度器采用的是可插入式架构。
目前nova调度器使用了几种基本的调度算法:
随机化:主机随机选择可用节点;
可用化:与随机相似,只是随机选择的范围被指定;
简单化:应用这种方式,主机选择负载最小者来运行实例。负载数据可以从别处获得,如负载均衡服务器。
3. Openstack的镜像服务器————Glance
OpenStack镜像服务器是一套虚拟机镜像发现、注册、检索系统,我们可以将镜像存储到以下任意一种存储中:
本地文件系统(默认)
l OpenStack对象存储
l S3直接存储
l S3对象存储(作为S3访问的中间渠道)
l HTTP(只读)
Glance构件
l Glance控制器
l Glance注册器
· Glance-API:
主要负责接收响应镜像管理命令的Restful请求,分析消息请求信息并分发其所带的命令(如新增,删除,更新等)。默认绑定端口是9292。
· Glance-Registry:
主要负责接收响应镜像元数据命令的Restful请求。分析消息请求信息并分发其所带的命令(如获取元数据,更新元数据等)。默认绑定的端口是9191。
功能及特点
提供镜像相关服务
4. Openstack的管理Web的接口————Horizon
Horizon是一个用以管理、控制OpenStack服务的Web控制面板,它可以管理实例、镜像、创建密匙对,对实例添加卷、操作Swift容器等。除此之外,用户还可以在控制面板中使用终端(console)或VNC直接访问实例。总之,Horizon具有如下一些特点:
· 实例管理:创建、终止实例,查看终端日志,VNC连接,添加卷等
· 访问与安全管理:创建安全群组,管理密匙对,设置浮动IP等
· 偏好设定:对虚拟硬件模板可以进行不同偏好设定
· 镜像管理:编辑或删除镜像
· 查看服务目录
· 管理用户、配额及项目用途
· 用户管理:创建用户等
· 卷管理:创建卷和快照
· 对象存储处理:创建、删除容器和对象
· 为项目下载环境变量
5.openstack的存储设备———— swift
Swift为OpenStack提供一种分布式、持续虚拟对象存储,它类似于Amazon Web Service的S3简单存储服务。Swift具有跨节点百级对象的存储能力。Swift内建冗余和失效备援管理,也能够处理归档和媒体流,特别是对大数据(千兆字节)和大容量(多对象数量)的测度非常高效。
功能及特点:
· 海量对象存储
· 大文件(对象)存储
· 数据冗余管理
· 归档能力-----处理大数据集
· 为虚拟机和云应用提供数据容器
· 处理流媒体
· 对象安全存储
· 备份与归档
· 良好的可伸缩性
Swift组件
· Swift账户
· Swift容器
· Swift对象
· Swift代理
· Swift RING
Swift代理服务器
用户都是通过Swift-API与代理服务器进行交互,代理服务器正是接收外界请求的门卫,它检测合法的实体位置并路由它们的请求。
此外,代理服务器也同时处理实体失效而转移时,故障切换的实体重复路由请求。
Swift对象服务器
对象服务器是一种二进制存储,它负责处理本地存储中的对象数据的存储、检索和删除。对象都是文件系统中存放的典型的二进制文件,具有扩展文件属性的元数据(xattr)。
注意:xattr格式被Linux中的ext3/4,XFS,Btrfs,JFS和ReiserFS所支持,但是并没有有效测试证明在XFS,JFS,ReiserFS,Reiser4和ZFS下也同样能运行良好。不过,XFS被认为是当前最好的选择。
Swift容器服务器
容器服务器将列出一个容器中的所有对象,默认对象列表将存储为SQLite文件(译者注:也可以修改为MySQL,安装中就是以MySQL为例)。容器服务器也会统计容器中包含的对象数量及容器的存储空间耗费。
Swift账户服务器
账户服务器与容器服务器类似,将列出容器中的对象。
Ring(索引环)
Ring容器记录着Swift中物理存储对象的位置信息,它是真实物理存储位置的实体名的虚拟映射,类似于查找及定位不同集群的实体真实物理位置的索引服务。这里所谓的实体指账户、容器、对象,它们都拥有属于自己的不同的Rings。
5. Openstack的认证服务————Keystone
Keystone为所有的OpenStack组件提供认证和访问策略服务,它依赖自身REST(基于Identity API)系统进行工作,主要对(但不限于)Swift、Glance、Nova等进行认证与授权。事实上,授权通过对动作消息来源者请求的合法性进行鉴定;
Keystone采用两种授权方式,一种基于用户名/密码,另一种基于令牌(Token)。除此之外,Keystone提供以下三种服务:
· 令牌服务:含有授权用户的授权信息
· 目录服务:含有用户合法操作的可用服务列表
· 策略服务:利用Keystone具体指定用户或群组某些访问权限
认证服务组件:
服务入口:如Nova、Swift和Glance一样每个OpenStack服务都拥有一个指定的端口和专属的URL,我们称其为入口(endpoints)。
· 区位:在某个数据中心,一个区位具体指定了一处物理位置。在典型的云架构中,如果不是所有的服务都访问分布式数据中心或服务器的话,则也称其为区位。
· 用户:Keystone授权使用者
PS:代表一个个体,OpenStack以用户的形式来授权服务给它们。用户拥有证书(credentials),且可能分配给一个或多个租户。经过验证后,会为每个单独的租户提供一个特定的令牌。
· 服务:总体而言,任何通过Keystone进行连接或管理的组件都被称为服务。举个例子,我们可以称Glance为Keystone的服务。
· 角色:为了维护安全限定,就云内特定用户可执行的操作而言,该用户关联的角色是非常重要的。
PS:一个角色是应用于某个租户的使用权限集合,以允许某个指定用户访问或使用特定操作。角色是使用权限的逻辑分组,它使得通用的权限可以简单地分组并绑定到与某个指定租户相关的用户。
· 租间:租间指的是具有全部服务入口并配有特定成员角色的一个项目。
PS:一个租间映射到一个Nova的“project-id”,在对象存储中,一个租间可以有多个容器。根据不同的安装方式,一个租间可以代表一个客户、帐号、组织或项目。
第二部分————openstack的搭建
1.openstack安装的准备工作
14
20180902
1.1实验环境
由于我们采用的式伪分布模式来搭建opens tack平台,所以这里我们采用虚拟机来实现伪分布节点,采用的软硬件配置如下:
1.1.1host主机硬件环境
1.1.2软件环境
主机OS windows10专业版64位(当然,其他也行,我试过windows7专业版64位)
虚拟平台 Oracle VM VirtualBoc 5.0.26
Linux OS CentOS-6.5-x86_64
至少建立两台虚拟机,分别作为控制,网络和计算节点,这里建议采用克隆方式来完成。
1.2网络规划
两节点网络规划如下:
主机名
IP地址
作用描述
Openstack-
Eth0:192.168.56.111
控制节点
Openstack-
Eth0:192.168.56.112
计算节点
1.3实验环境的安装
1.3.1安装Oracle VM VirtualBox
1.3.2建立虚拟机
虚拟电脑的安装位置不建议选在系统启动盘,因为后续实验做完会有很大的空间被占用,为防止影响系统速度,建议选择别的盘来安装,我的安装地址如下:
安装完毕重启即可:
1.3.3网络的设置
编辑/etc/sysconfig/network-scripts/ifcfg-eth0和/etc/sysconfig/network-scripts/ifcfg-eth1两个文件,分别对网卡一和网卡二进行设置。
(1)设置网卡1
[root@openstack-node1~]#vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
(2)置网卡2
[root@openstack-node1~]#vim /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=dhcp
IPADDR=192.168.56.111
NETMASK=255.255.255.0
1.3.4网络内部域名解析和hostname的配置
(1)设置主机的hostname
[root@openstack-node1~]#vim /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=openstack-
(2)设置主机节点的域名解析
[root@openstack-node1~]#vim /etc/hosts
新添加:
192.168.56.111 openstack-
192.168.56.112 openstack-
注意:openstack-node1s是主机名,openstack-是完整的主机域名,这个设置如果不对会导致启动rabbitmq错误.
1.3.5内核参数调整
[root@openstack-node1~]#vim /etc/sysctl.conf
Net.ipv4.ip_forward=1
Net.ipv4.conf.all,rp_filter=0
Net.ipv4.conf.default.rp_filter=0
[root@openstack-node1~]#sysctl -p
1.3.6关闭iptables和selinux
关闭防火墙
[root@openstack-node1~]#/etc/init.d/iptables stop
[root@openstack-node1~]#chkconfig iptables off
[root@openstack-node1~]#chkconfig –list | grep iptables
关闭selinux
[root@openstack-node1~]#vim /etc/sysconfig/selinux
SELINUX=disabled
1.3.7系统的克隆
C:\VM>nage.exe clonevdi “F:\OS- VM\openstack-node1.vdi” “F:\OS- VM\openstack-node2.vdi”
1.3.8xshell5的安装
安装xshell,建立openstack-node1和openstack-node2的连接:
2.实验环境软件的安装
2.1基础软件包---EPEL仓库
[root@openstack-node1~]#rpm -ivh
2.2yun安装
[root@openstack-node1~]# yum install -y python-pip gcc gcc-c++ make libtool patch automake python-devel libxslt-devel MySQL-python openssl-devel libudev-devel git wget libvirt-python libvirt qemu-kvm gedit python-numdisplay python-eventlet device-mapper bridge-utils libffi-devel libffi python-crypto lrzsz swig
2.2.1安装redhat的rdo仓库
创建仓库
[root@openstack-node1~]#vim /etc/yum.repos.d/rdo-release.repo
[openstack-icehouse]
name=OpenStack Icehouse Repository
baseurl=http://repos.fedorapeople.org/repos/openstack/EOL/openstack-icehouse/epel-6/
enabled=1
gpgcheck=0
gpgkey=
2.2.2Keystone安装
[root@openstack-node1~]# yum install openstack-keystone python-keystoneclient
2.2.3Glance的安装
[root@openstack-node1~]# yum install openstack-glance python-glanceclient python-crypto
2.2.4Nova控制节点安装
[root@openstack-node1~]#yum install openstack-nova-api openstack-nova-cert \
openstack-nova-conductor openstack-nova-console openstack-nova-novncproxy \
openstack-nova-scheduler python-novaclient
注意:nova.conf是配置Nova的核心配置文件,Nova的配置主要围绕该配置文件
2.2.5Neutron控制节点安装
[root@openstack-node1~]# yum install openstack-neutron openstack-neutron-ml2 python-neutronclient openstack-neutron-linuxbridge
2.2.6Horizon安装
[root@openstack-node1~]# yum install -y httpd mod_wsgi memcached python-memcached openstack-dashboard
2.2.7Cinder控制节点安装
[root@openstack-node1~]# yum install openstack-cinder python-cinderclient
2.2.8Cinder存储结点安装
[root@openstack-node1~]# yum install openstack-cinder
3.基础服务部署
3.1数据库服务
3.1.1Mysql安装
[root@openstack-node1~]# yum install mysql-server
[root@openstack-node1~]# cp /usr/share/mysql/my-f /etc/f
[root@openstack-node1~]#vim /etc/f
增加以下配置”
[mysqld]
default-storage-engine = innodb
innodb_file_per_table
collation-server = utf8_general_ci
init-connect = 'SET NAMES utf8'
character-set-server = utf8
[root@openstack-node1~]# chkconfig mysqld on
[root@openstack-node1~]# /etc/init.d/mysqld start
3.1.2数据库的安装
[root@openstack-node1~]# mysql -u root
mysql>show databases;
创建keystone数据库并授权
mysql> create database keystone;
mysql> grant all on keystone.* to keystone@'192.168.56.0/255.255.255.0' identified by'keystone';
创建glance数据库并授权
mysql> create database glance;
mysql> grant all on glance.* to glance@'192.168.56.0/255.255.255.0' identified by 'glance';
创建nova数据库并授权
mysql> create database nova;
mysql> grant all on nova.* to nova@'192.168.56.0/255.255.255.0' identified by 'nova';
创建neutron并授权
mysql> create database neutron;
mysql> grant all on neutron.* to neutron@'192.168.56.0/255.255.255.0' identified by 'neutron';
创建cinder并授权
mysql> create database cinder;
mysql> grant all on cinder.* to cinder@'192.168.56.0/255.255.255.0' identified by 'cinder';
3.2消息代理服务RabbitMQ
3.2.1RabbitMQ安装
[root@openstack-node1~]#yum -y install ncurses-devel
[root@openstack-node1~]# yum install -y erlang rabbitmq-server
[root@openstack-node1~]# chkconfig rabbitmq-server on
3.2.2启用Web监控插件
启用后就可以通过 http://IP:15672/来访问 web 管理界面。默认yum安装的 rabbitmq-server没有将rabbitmq-plugins 命令放到搜索路径,需要使用绝对路径来执行。
[root@openstack-node1~]# /usr/lib/rabbitmq/bin/rabbitmq-plugins list
[root@openstack-node1~]# /usr/lib/rabbitmq/bin/rabbitmq-plugins enable rabbitmq_management
[root@openstack-node1~]# /etc/init.d/rabbitmq-server restart
打开本地浏览器,输入http://IP:15672/,这里的IP为192.168.56.111,即输入
http://192.168.56.111:15672,打开如下图的rabbitmq管理界面,用户名和密码都为guest。
4.认证服务keystone
4.1keystone的安装
4.1.1安装包的下载
[root@openstack-node1~]#cd /usr/local/src
[root@open-node1 src]#
wget
wget
wget
wget
wget
wget
tar zxf keystone-2014.1.3.tar.gz
tar zxf nova-2014.1.3.tar.gz
tar zxf glance-2014.1.3.tar.gz
tar zxf neutron-2014.1.3.tar.gz
tar zxf horizon-2014.1.3.tar.gz
tar zxf cinder-2014.1.3.tar.gz
下载过程中遇到个别包下载失败的情况时,只需单独重新下载,无需下载全部。
4.2keystone的配置
4.2.1建配置文件
[root@openstack-node1 src]#cd keystone-2014.1.3
[root@openstack-node1 keystone-2014.1.3]#cp etc/keystone-paste.ini /etc/keystone
[root@openstack-node1 keystone-2014.1.3]# cp etc/policy.v3cloudsample.json /etc/keystone
cd
cd /etc
cd keystone
★因为前后目录有变化,所以我们用这三条命令对文件地址做出改变,后续内容也会遇到类似情况,处理方法同此处。
[root@openstack-node1 keystone]# mv policy.v3cloudsample.json policy.v3clo
展开阅读全文