摘要

openstack的设计基本上是按照亚马逊进行设置的,我们可以将openstack理解为开源版本的aws。因为它很多地方都参考亚马逊进行操作的,而且openstack的很多api跟亚马逊是相通的。



OpenStack基础环境 [一]

 


 

 

OpenStack基础环境 [一]

openstack
时间:2016年11月22日

 

openstack介绍

 openstack是一个云平台管理的项目,它不是一个软件。也就是说我们可以使用openstack来管理我们一个数据中心大量资源池。它里面包含了很多子项目

openstack 设计基本原则 openstack基础_openstack 设计基本原则

<img src="https://s2.51cto.com/images/blog/202312/12165502_65781fe6c1f2b80073.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=" alt="image_1b25l8lci9tvktkei712s8un59.png-46.2kB" title=""></p>

openstack包含三大项:计算 网络 存储
  openstack主要目标是来简化资源的管理和分配,把计算 网络 存储。三大项虚拟成三大资源池,例如需要计算资源我这里可以提供,需要网络资源这里也可以提供以及存储资源的需求,对外提供api,通过api进行交互
  openstack的设计基本上是按照亚马逊进行设置的,我们可以将openstack理解为开源版本的aws。因为它很多地方都参考亚马逊进行操作的,而且openstack的很多api跟亚马逊是相通的。
  openstack火起来的原因首先是apache旗下的开源软件,第二它是由python进行编写
(因为python比较简单,深受技术人员的喜欢)

openstack官方网站:http://www.openstack.org

 

openstack版本介绍

openstack 设计基本原则 openstack基础_openstack 设计基本原则_02

<img src="https://s2.51cto.com/images/blog/202312/12165502_65781fe6de77217214.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=" alt="image_1b25lemg8s41aji1c30vkivq2m.png-143.1kB" title=""> <br />

 openstack版本是每6个月发布一次,每次版本的顺序按照A-Z进行排序。
那么我们应该如何选择版本呢?
  我们选择版本的时候,除了新版本的那些功能不得不用,那我们可以选择新的版本。其实我们可以选择稍微落后的一个版本。上述图不够准确,现在已经达到N版。国内openstack是从E班开始火的。因为E版本当时是比较完善的,国内openstack最火的时候是在G版的时候。现在国内不论是传统行业还是互联网行业都在使用openstack

 

openstack架构

openstack 设计基本原则 openstack基础_openstack 设计基本原则_03

<img src="https://s2.51cto.com/images/blog/202312/12165502_65781fe6f3c8169443.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=" alt="image_1b25lh9fd4bs1cb6q8g1v0r67f13.png-40.3kB" title=""></p>

服务名称

项目名称

描述

Dasgviard

Horizon

基于Openstack API接口使用diango开发的Web管理

Compute

Nova

通过虚拟化技术提供计算资源池

Networking

Neutron

实现了虚拟机的网络资源管理。

 

 

 

Storage (存储)

 

 

Object Storage

Swift

对象存储,适用于“一次写入、多次读取”

Block Storage

Cinder

块存储,提供存储资源池

 

 

 

Share

Services (共享服务)

 

Identify Service

Keystone

认证管理

Image Service

Glance

提供虚拟镜像的注册和存储管理

Telemetry

Ceilometer

提供监控和数据采集、计量服务

 

 

 

Higher-level Services (高层服务)

 

 

Orchestration

Heat

自动化部署的组件

Database Service

Trove

提供数据库应用服务

openstack 设计基本原则 openstack基础_openstack 设计基本原则_04

<img src="https://s2.51cto.com/images/blog/202312/12165503_65781fe70f14b36815.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=" alt="image_1b25lidia998o14cdh1mk0doo9.png-112.2kB" title=""></p>

解释:这里面所有的服务都是围绕着VM进行提供服务的,虚拟机需要什么资源,我们就提供什么资源

  我们可以将服务分为两大类,一个是服务的提供者,一个是服务的消费者。提供者是我可以提供某个服务,消费者是我可以用到这个服务。
  openstack默认是没有创建虚拟机的功能,是通过调用KVM来创建虚拟机还可以调用esxi来创建虚拟机,总之openstack没有创建虚拟机的功能都是通过调用其他服务来进行操作。openstack就是一个框架,它可以调用其他的服务,所以openstack也就是一个管理平台

 

Openstack服务介绍

MySQL:为各个服务提供数据存储
RabbitMq:为各个服务之间通信提供认证和服务注册
Keystone:为各个服务器之间通讯提供认证和服务注册
Glance:为虚拟机提供镜像管理
Nova:为虚拟机提供计算资源
Neutron:为虚拟机提供网络资源

 

Openstack环境准备-MySQL、RabbirMQ

中文文档:http://docs.openstack.org/mitaka/zh_CN/install-guide-rdo/
提示:这个中文文档是直接翻译过来的,所以会有很多不通顺的地方

特别提示:环境请和我保持一致!!!!!!!!保持一致!保持一致!保持一致!
本次我们安装Openstack M版,M版是在2016-4月发布的

环境

 

[root@linux-node1 ~]# cat /etc/redhat-release CentOSLinux release 7.2.1511(Core)[root@linux-node1 ~]# uname -r3.10.0-327.36.2.el7.x86_64[root@linux-node1 ~]# cat /etc/hosts127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4::1 localhost localhost.localdomain localhost6 localhost6.localdomain6192.168.56.11 linux-node1.abcdocker.com192.168.56.12 linux-node2.abcdocker.com

安装时间同步

 

[root@linux-node1 ~]# yum install ntpdate -y[root@linux-node1 ~]# ntpdate time1.aliyun.com[root@linux-node1 ~]# timedatectl set-timezone Asia/Shanghai#设置时区另一种设置时区方法[root@linux-node1 ~]# cp /usr/share/zoneinfo/Asia/Shanghai/etc/localtime

提示: 生产环境中必须保证openstack节点时间同步,如果时间不同步是无法创建虚拟机的

 

openstack基础软件包安装

基础软件包需要在所有的Openstack节点上进行安装,包括控制节点和计算节点
1、安装EPEL仓库

 

[root@linux-node1 ~]# rpm -ivh http://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm

2、安装Openstack仓库

 

[root@linux-node1 ~]# yum install -y centos-release-openstack-mitaka#安装完成后会在/etc/yum.repos.d/下生成CentOS-OpenStack-mitaka.repo

3、安装Openstack客户端

 

[root@linux-node1 ~]# yum install -y python-openstackclient提示:会把openstack常用的客户端都进行安装

4、安装openstack SELinux管理包

 

yum install -y openstack-selinux

如果我们没有进行关闭selinux openstack-selinux就会自动帮我们设置

openstack 设计基本原则 openstack基础_ide_05

<img src="https://s2.51cto.com/images/blog/202312/12165503_65781fe72e67c340.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=" alt="image_1b25m5tpi1pm1h6bk5l1191k32m.png-94.4kB" title=""></p>

RabbitMq在openstack几大用处
1.做服务之间相互通讯的工具
2.信息同步(异步执行)
如果没有RabbitMq服务之间将无法进行通讯

提示:如果是生产环境,数据库是需要做备份的,否则数据库一挂数据将会丢失,openstack也将无法进行提供服务

 

安装数据库

 

[root@linux-node1 ~]# yum install -y mariadb mariadb-server python2-PyMySQLcentos7 默认安装mysql 会在/etc/my.cnf里面includedir /etc/my.cnf.d/所以我们需要将配置文件放在这个目录下就可以生效[root@linux-node1 ~]# cd /etc/my.cnf.d/[root@linux-node1 my.cnf.d]# vim openstack.cnf[mysqld]bind-address =192.168.56.11#监听的IP地址(也可以写0.0.0.0)default-storage-engine = innodb #默认存储引擎[innodb]innodb_file_per_table # 使用独享表空间max_connections =4096#最大连接数是4096 (默认是1024)collation-server = utf8_general_ci #数据库默认校对规则character-set-server = utf8 #默认字符集

 

启动数据库

 

[root@linux-node1 ~]# systemctl start mariadb[root@linux-node1 ~]# systemctl enable mariadbCreated symlink from/etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service.

启动后我们需要进行检查

为了保证数据库服务的安全性,运行mysql_secure_installation脚本。特别需要说明的是,为数据库的root用户设置一个适当的密码。

 

[root@linux-node1 ~]# mysql_secure_installation#它会帮我们删除测试数据库等

数据库安装完成后我们需要给我们后面所要用到的服务创建用户并进行授权

创建认证服务的数据库并进行授权

 

[root@linux-node1 ~]# mysql -uroot -p123456创建keystone数据库create database keystone;grant all on keystone.* to 'keystone'@'localhost' identified by'keystone';grant all on keystone.* to 'keystone'@'%' identified by'keystone';

创建镜像数据库并进行授权

 

创建glance数据库create database glance;grant all on glance.* to 'glance'@'%' identified by'glance';grant all on glance.* to 'glance'@'localhost' identified by'glance';

创建虚拟化数据库并进行授权

 

创建nova数据库create database nova;grant all on nova.* to 'nova'@'localhost' identified by'nova';grant all on nova.* to 'nova'@'%' identified by'nova';

因为Nova有2个项目,所以我们要创建2个数据库
创建nova-api数据库

 

create database nova_api;grant all on nova_api.* to 'nova_api'@'localhost' identified by'nova_api';grant all on nova_api.* to 'nova_api'@'%' identified by'nova_api';

提示:nova_api是新版本才有

创建网络资源管理数据库

 

create database neutron;grant all on neutron.* to 'neutron'@'%' identified by'neutron';grant all on neutron.* to 'neutron'@'localhost' identified by'neutron';

刷新

 

flush privileges;

安装消息队列rabbitmq

 

[root@linux-node1 ~]# yum install rabbitmq-server -y消息队列的端口是5672

启动消息队列服务并将其配置为随系统启动:

 

[root@linux-node1 ~]# systemctl enable rabbitmq-server.service[root@linux-node1 ~]# systemctl start rabbitmq-server.service

因为我们一会要使用openstack,所以我们在rabbitmq上创建一个openstack用户

 

[root@linux-node1 ~]# rabbitmqctl add_user openstack openstack[root@linux-node1 ~]# rabbitmqctl add_user用户密码

openstack用户读写权限

 

[root@linux-node1 ~]# rabbitmqctl set_permissions openstack ".*"".*"".*".*分别代表配置、写入、读取

提示:如果rabbitmq没有启动说明主机名没有解析

开启rabbitmq监控插件
rabbitmq有很多插件,我们可以使用rabbitmq-plugins list查看可用插件
rabbitmq_management插件提供一个web界面,所以我们要将它开启

 

[root@linux-node1 ~]# rabbitmq-plugins enable rabbitmq_managementrabbitmq启动之后会监听15672

openstack 设计基本原则 openstack基础_ide_06

<img src="https://s2.51cto.com/images/blog/202312/12165503_65781fe772ea779194.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=" alt="image_1b25mknrh17121mn3147c2d02kv13.png-65.3kB" title=""></p>

访问路径:http://ip:15672
默认Username:guest
默认Password:guest

示例图

openstack 设计基本原则 openstack基础_linux_07

<img src="https://s2.51cto.com/images/blog/202312/12165503_65781fe79a1e399212.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=" alt="image_1b25mlkl0bc1mae1g094jfuk61g.png-20kB" title=""> <br />

提示:这里不能使用openstack用户进行登陆,因为我们如果想使用openstack用户进行登陆还需要在web页面进行授权

现在我们就进行rabbitmq的管理界面了

openstack 设计基本原则 openstack基础_linux_08

<img src="https://s2.51cto.com/images/blog/202312/12165503_65781fe7b43ed76006.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=" alt="image_1b25mmtt24ma11bh1216jrn6o51t.png-32.9kB" title=""> <br />

rabbitmq默认有一个httpapi,我们如果想监控 可以使用http的api进行监控。里面基本上想监控的东西都有,可以通过脚本来获取通过url来判断等。

openstack 设计基本原则 openstack基础_ide_09

<img src="https://s2.51cto.com/images/blog/202312/12165503_65781fe7d80a297875.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=" alt="image_1b25mnkri15572drua0171d12lh2a.png-24.7kB" title=""></p>

基础介绍完!