摘要
openstack的设计基本上是按照亚马逊进行设置的,我们可以将openstack理解为开源版本的aws。因为它很多地方都参考亚马逊进行操作的,而且openstack的很多api跟亚马逊是相通的。
OpenStack基础环境 [一]
OpenStack基础环境 [一]
openstack
时间:2016年11月22日
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版本介绍
<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架构
<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 | 提供数据库应用服务 |
<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 -r
3.10.0-327.36.2.el7.x86_64
[root@linux-node1 ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.56.11 linux-node1.abcdocker.com
192.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
就会自动帮我们设置
<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-PyMySQL
centos7 默认安装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 mariadb
Created 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_management
rabbitmq启动之后会监听15672
<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
示例图
<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
的管理界面了
<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默认有一个http
的api
,我们如果想监控 可以使用http的api进行监控。里面基本上想监控的东西都有,可以通过脚本来获取通过url
来判断等。
<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>
基础介绍完!