bian@TOC
一、openstack简介
OpenStack是一个由NASA(美国国家航空航天局)和Rackspace合作研发并发起的,以Apache许可证授权的自由软件和开放源代码项目。
OpenStack是一个开源的云计算管理平台项目,由几个主要的组件组合起来完成具体工作。OpenStack支持几乎所有类型的云环境,项目目标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台。OpenStack通过各种互补的服务提供了基础设施即服务(IaaS)的解决方案,每个服务提供API以进行集成。
openstack是一个云平台管理的项目,它不是一个软件。也就是说我们可以使用openstack来管理我们一个数据中心大量资源池。它里面包含了很多子项目。
二、基本搭建
官方文档:https://docs.openstack.org/mitaka/zh_CN/install-guide-rdo/environment.html
1、控制节点环境配置
1.主机网络
我们此处配置的是双网卡:第一块网卡正常桥接、第二块网卡用于虚拟机之间的通信
参考官方文档:gogogo
step1:配置网络接口
[root@server1 ~]# cd /etc/sysconfig/network-scripts/
[root@server1 network-scripts]# cp ifcfg-eth0 ifcfg-eth1
[root@server1 network-scripts]# vim ifcfg-eth1
[root@controller network-scripts]# cat ifcfg-eth1
DEVICE=eth1
ONBOOT=yes
BOOTPROTO=none
[root@server1 network-scripts]# ifup eth1
step2:配置域名解析
设置节点主机名为 controller。
编辑 /etc/hosts 文件包含以下内容:
[root@server1 network-scripts]# hostnamectl set-hostname controller
[root@server1 network-scripts]# logout
Connection to 172.25.254.1 closed.
[westos@westos_student50 Desktop]$ ssh root@172.25.254.1
root@172.25.254.1's password:
[root@controller ~]#
2.网络时间协议文档(同步时间)**
官方文档:网络时间协议文档
[root@controller ~]# yum install chrony
[root@controller ~]# vim /etc/chrony.conf
server 172.25.254.50 iburst 同步主机时间
[root@controller ~]# systemctl start chronyd
[root@controller ~]# systemctl is-enabled chronyd ##该服务默认开机自启
enabled
[root@controller ~]# chronyc sources -v
210 Number of sources = 1
.-- Source mode '^' = server, '=' = peer, '#' = local clock.
/ .- Source state '*' = current synced, '+' = combined , '-' = not combined,
| / '?' = unreachable, 'x' = time may be in error, '~' = time too variable.
|| .- xxxx [ yyyy ] +/- zzzz
|| Reachability register (octal) -. | xxxx = adjusted offset,
|| Log2(Polling interval) --. | | yyyy = measured offset,
|| \ | | zzzz = estimated error.
|| | | \
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^? westos_student50.westos.> 0 8 0 - +0ns[ +0ns] +/- 0ns
[root@controller ~]# date
Mon Apr 11 16:44:18 CST 2022
顺便再提一嘴:只要涉及到集群,注意两点 一点是时间,(比如证书生效的时间、数据备份的时间)一点是解析!
3.OpenStack包**
在真机上操作:把mitaka解压到apache的发布目录下:
[root@westos_student50 media]# mkdir /var/www/html/openstack
[root@westos_student50 media]# tar xf mitaka.tar -C /var/www/html/openstack
虚拟机上操作:设置网络仓库
[root@controller ~]# cd /etc/yum.repos.d/
[root@controller yum.repos.d]# ls
dvd.repo redhat.repo
[root@controller yum.repos.d]# vim openstack.repo
[root@controller yum.repos.d]# cat openstack.repo
[openstack]
name=mitaka
baseurl=http://172.25.254.50/openstack/mitaka ##设置完检查一下该地址是否能访问到(下图显示没问题)
gpgcheck=0
加粗样式
接下来 完成安装:
(1)升级包:
[root@controller yum.repos.d]# yum upgrade
(2)安装 OpenStack 客户端
yum install python-openstackclient
4.SQL数据库**
参考文档:SQL数据库的配置
安全并配置组件
(1)安装软件包:
yum install mariadb mariadb-server python2-PyMySQL -y
(2)创建并编辑 /etc/my.cnf.d/openstack.cnf,然后完成如下动作:
[root@controller yum.repos.d]# vim /etc/my.cnf.d/openstack.cnf
[root@controller yum.repos.d]# cat /etc/my.cnf.d/openstack.cnf
[mysqld]
bind-address = 172.25.254.1 ##该值为控制节点的管理网络IP地址以使得其它节点可以通过管理网络访问数据库:
default-storage-engine = innodb
innodb_file_per_table
max_connections = 4096
collation-server = utf8_general_ci
character-set-server = utf8
(3)启动数据库服务,并将其配置为开机自启:
systemctl enable --now mariadb.service
(4)为了保证数据库服务的安全性,运行mysql_secure_installation
脚本。特别需要说明的是,为数据库的root用户设置一个适当的密码。
mysql_secure_installation
5.消息队列**
消息队列:它主要用来暂存生产者生产的消息,供后续其他消费者来消费。
(1)安装包
yum install rabbitmq-server
(2)启动消息队列服务并设置开机自启
systemctl enable --now rabbitmq-server.service
该服务监听的端口是25672
(3)添加 openstack 用户
rabbitmqctl add_user openstack openstack ## 为方便操作 设置密码和用户都为一串字符
(4)给openstack用户配置写和读权限:
rabbitmqctl set_permissions openstack ".*" ".*" ".*"
查看上述读写权限的划分:
[root@controller yum.repos.d]# rabbitmq-plugins list
[root@controller yum.repos.d]# rabbitmq-plugins enable rabbitmq_management
下图展示了openstack用户的权限:
6.Memcached**
(1)安装软件包并设置开机自启
yum install memcached python-memcached -
systemctl enable --now memcached.service
(2)编辑/etc/sysconfig/memcached
在这里插入代码片
下面是原先的内容:
修改后的内容:
systemctl restart memcached.service
三、认证服务(keystone)
1.浅识keystone
对于keystone的基本知识,可以参考这里,keystone详解
keystone是OpenStack的核⼼组件之⼀,为OpenStack⼤家族中的其他组件提供统⼀的⾝份认证服务,包括⾝份认证、令牌发放和校验服务列表、定义⽤户权限等。OpenStack中所有服务的授权和认证都需要经过keystone,因此keystone是OpenStack中第⼀个需要安装的核⼼组件。
keystone的具体功能如下:
管理⽤户及其权
限维护各种服务的endpoint
认证和鉴权
2.先决条件
(1)根据下列步骤创建数据库
[root@controller yum.repos.d]# mysql -p ##用数据库连接客户端以 root 用户连接到数据库服务器
## 创建用户 对``keystone``数据库授予恰当的权限,使本地和远程都可以连接数据库 (注意密码规范 做一个记录表 别到最后忘了密码)
MariaDB [(none)]> CREATE DATABASE keystone;
Query OK, 1 row affected (0.00 sec)
## 将keystone数据库的所有权限授予本地用户keystone,登陆密码是keystone
MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' \
-> IDENTIFIED BY 'keystone';
Query OK, 0 rows affected (0.00 sec)
## 将keystone数据库的所有权限授予远程用户keystone,登陆密码是keystone
MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' \
-> IDENTIFIED BY 'keystone';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> bye #退出数据库客户端。
(2)生成一个随机值在初始的配置中作为管理员的令牌。
o