简介
OpenStack是一个开源的云计算管理平台项目,是一系列软件开源项目的组合,由NASA(美国国家航空航天局)和Rackspace合作研发并发起,以Apache许可证授权的开源代码项目 OpenStack为私有云和公有云提供可扩展的弹性的云计算服务,项目目标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台OpenStack覆盖了网络、虚拟化、操作系统、服务器等各个方面,它是一个正在开发中的云计算平台项目,根据成熟及重要程度的不同,被分解成核心项目、孵化项目,以及支持项目和相关项目,每个项目都有自己的委员会和项目技术主管,而且每个项目都不是一成不变的,孵化项目可以根据发展的成熟度和重要性,转变为核心项目核心组件1、计算(Compute)Nova:一套控制器,用于为单个用户或使用群组管理虚拟机实例的整个生命周期,根据用户需求来提供虚拟服务。负责虚拟机创建、开机、关机、挂起、暂停、调整、迁移、重启、销毁等操作,配置CPU、内存等信息规格2、对象存储(Object Storage)Swift:一套用于在大规模可扩展系统中通过内置冗余及高容错机制实现对象存储的系统,允许进行存储或者检索文件,可为Glance提供镜像存储,为Cinder提供卷备份服务3、镜像服务(Image Service)Glance:一套虚拟机镜像查找及检索系统,支持多种虚拟机镜像格式(AKI、AMI、ARI、ISO、QCOW2、Raw、VDI、VHD、VMDK),有创建上传镜像、删除镜像、编辑镜像基本信息的功能4、身份服务(Identity Service)Keystone:为OpenStack其他服务提供身份验证、服务规则和服务令牌的功能,管理Domains、Projects、Users、Groups、Roles5、网络&地址管理(Network)Neutron:提供云计算的网络虚拟化技术,为OpenStack其他服务提供网络连接服务。为用户提供接口,可以定义Network、Subnet、Router,配置DHCP、DNS、负载均衡、L3服务,网络支持GRE、VLAN,插件架构支持许多主流的网络厂家和技术,如OpenvSwitch6、块存储(Block Storage)Cinder:为运行实例提供稳定的数据块存储服务,它的插件驱动架构有利于块设备的创建和管理,如创建卷、删除卷,在实例上挂载和卸载卷7、UI 界面(Dashboard)Horizon:OpenStack中各种服务的Web管理门户,用于简化用户对服务的操作,例如:启动实例、分配IP地址、配置访问控制等8、测量(Metering)Ceilometer:能把OpenStack内部发生的几乎所有的事件都收集起来,然后为计费和监控以及其它服务提供数据支撑9、部署编排(Orchestration)Heat:提供了一种通过模板定义的协同部署方式,实现云基础设施软件运行环境(计算、存储和网络资源)的自动化部署10、数据库服务(Database Service)Trove:为用户在OpenStack的环境提供可扩展和可靠的关系和非关系数据库引擎服务
前期准备
准备Centos7虚拟机,配置IP地址和hostname,同步系统时间,关闭防火墙和selinux,修改ip地址和hostname映射
ip hostname 192.168.29.130 controller部署keystone、glance、nova、neutron组件部署详细步骤可参考:https://blog.51cto.com/14832653/2516210
部署服务
安装依赖服务
#安装下载依赖包的服务 [root@controller ~]# yum install yum-utils gettext -y #下载依赖包 [root@controller ~]# yumdownloader openstack-dashboard --resolve --destdir=/tmp/package [root@controller ~]# cd /tmp/package #安装依赖包 [root@controller ~]# yum localinstall *.rpm -y下载解压源码包从github上可获取源码包https://github.com/openstack/horizon/tree/stable/queens
[root@controller ~]# unzip horizon-stable-queens.zip [root@controller ~]# mv horizon-stable-queens/ /horizon-stable-queens/修改配置文件
[root@controller ~]# cp /horizon-stable-queens/openstack_dashboard/local/local_settings.py.example /horizon-stable-queens/openstack_dashboard/local/local_settings.py [root@controller ~]# vi /horizon-stable-queens/openstack_dashboard/local/local_settings.py DEBUG = False WEBROOT = '/dashboard' ALLOWED_HOSTS = ['horizon.example.com','*' ] SESSION_ENGINE = 'django.contrib.sessions.backends.cache' OPENSTACK_API_VERSIONS = { "identity": 3, "image": 2, "volume": 2, } OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT = True CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache', 'LOCATION': 'controller:11211', }, } OPENSTACK_HOST = "controller" OPENSTACK_KEYSTONE_URL = "http://%s:5000/v3" % OPENSTACK_HOST OPENSTACK_KEYSTONE_DEFAULT_ROLE = "user"编译安装
[root@controller ~]# cd /horizon-stable-queens/ [root@controller horizon-stable-queens]# ./manage.py compilemessages [root@controller horizon-stable-queens]# ./manage.py collectstatic [root@controller horizon-stable-queens]# ./manage.py compress [root@controller horizon-stable-queens]# ./manage.py make_web_conf --wsgi [root@controller horizon-stable-queens]# ./manage.py make_web_conf --apache > /etc/httpd/conf.d/openstack-dashboard.conf修改配置文件
[root@controller ~]# vi /etc/httpd/conf.d/openstack-dashboard.conf WSGIScriptAlias /dashboard /horizon-stable-queens/openstack_dashboard/wsgi/horizon.wsgi <Location "/dashboard"> Require all granted </Location> Alias /dashboard/static /horizon-stable-queens/static <Location "/dashboard/static"> SetHandler None </Location>修改所属用户及用户组
[root@controller ~]# chown -R apache:apache /horizon-stable-queens重启服务
[root@controller ~]# systemctl restart httpd memcached测试验证
浏览器访问:http://ip/dashboard