安装部署openstack
第一步:准备基础环境–控制节点和计算节点都要做
环境:
CPU处理器要支持虚拟化
内存2GB
磁盘空间50GB
添加一块网卡用于上网的
3台虚拟机:
192.168.80.100 controller(控制节点)主机名controller
192.168.80.101 compute01(计算节点)主机名compute01
192.168.80.102 客户端
1、域名解析和关闭防火墙(所有机器上都做)
关闭防火墙并开机不自启
systemctl stop firewalld && systemctl disable firewalld
关闭SElinux并进入配置文件中设置开机不自启
setenforce 0
vi /etc/selinux/config
vi /etc/hosts //配置域名解析添加这2行
192.168.80.100 controller
192.168.80.101 compute01
修改2台主机名
hostnamectl set-hostname controller
hostnamectl set-hostname compute01
时间同步服务
1、安装软件包:
yum install chrony -y
2、编辑 /etc/chrony.conf 文件,按照你环境的要求,对下面的键进行添加,末尾新增:
server controller iburst
注:使用NTP服务器的主机名或者IP地址配置支持设置多个值。
开启并开机自启
systemctl start chronyd && systemctl enable chronyd
到此控制节点时间服务器完成
其它节点服务器
yum install chrony -y
vi /etc/chrony.conf
server controller iburst
systemctl start chronyd && systemctl enable chronyd
到此其他节点服务器完成
验证:
在控制节点上执行以下命令:
chronyc sources
date 查看时间是否同步
在所有其他节点执行相同命令:
chronyc sources
date 查看时间是否同步
到此时间同步完成
安装openstack库
安装和openstack对应版本相关的仓库
yum install -y centos-release-openstack-queens.noarch
yum -y upgrade
//进行系统整体升级,升级完成后要重新启动操作系统
注意:在升级的时候如果某个包替换错误可以init 6在执行更新命令,不行在yum clean all 清除缓存并重建仓库缓存yum makecache在执行更新命令
更新成功
init 6 //重启系统 查看一下版本
安装 OpenStack 客户端:
yum install python-openstackclient -y
安装数据库
大多数 OpenStack 服务使用 SQL 数据库来存储信息。 典型地,数据库运行在控制节点上。
安装软件包:
yum install mariadb mariadb-server python2-PyMySQL -y
上面这个安装可能过程会报错 要重启在执行命令
vi /etc/my.cnf.d/openstack.cnf ///创建新文件并编辑添加以下内容:
[mysqld]
bind-address = 192.168.80.100 //设置监听地址
default-storage-engine = innodb //设置默认存储引擎
innodb_file_per_table = on //设置独享表空间
max_connections = 4096 //设置最大连接数
collation-server = utf8_general_ci //设置校对规则
character-set-server = utf8 //设置创建数据库时的默认字符集
systemctl start mariadb && systemctl enable mariadb
netstat -anpt | grep 3306
mysql_secure_installation
对数据库进行安全加固
操作如下:
回车——y——123——123——y——n——y——y
消息队列
OpenStack 使用 message queue 协调操作和各服务的状态信息。消息队列服务一般运行在控制节点上。
OpenStack支持好几种消息队列服务包括 RabbitMQ, Qpid, 和 ZeroMQ。
不过,大多数发行版本的OpenStack包支持特定的消息队列服务。安装 RabbitMQ 消息队列服务,因为大部分发行版本都支持它。
安装包:
yum install rabbitmq-server -y
启动消息队列服务并将其配置为随系统启动:
systemctl enable rabbitmq-server && systemctl start rabbitmq-server
rabbitmq-plugins enable rabbitmq_management //使用此插件实现web管理,执行这条命令出现以下内容说明操作正确
netstat -anpt | grep 5672 //当开启rabbitmq_management,15672端口才会工作
注:
15672:管理端口
25672:server间内部通信口
5672: client端通信口
测试:在浏览器中http://192.168.80.100:15672/
帐号:guest
密码:guest
在字符端中:rabbitmqctl add_user openstack abc123
//创建并添加openstack用户,密码abc123
rabbitmqctl set_permissions openstack ".*" ".*" ".*"
//给openstack用户配置写和读权限
到此消息队列完成
安装Memcached服务
认证服务认证缓存使用Memcached缓存令牌。缓存服务memecached运行在控制节点。
安装软件包:
yum install memcached python-memcached -y
vi /etc/sysconfig/memcached
修改成以下内容:
OPTIONS="-l 127.0.0.1,::1,controller"
启动Memcached服务,并且配置它随机启动。
systemctl enable memcached && systemctl start memcached
netstat -anpt | grep 11211 查看11211是否在工作
到此memcache完成
OpenStack服务可以使用Etcd,这是一种分布式的可靠键值存储,用于分布式键锁定、存储配置、跟踪服务生命周期和其他场景。
yum install etcd -y
vi /etc/etcd/etcd.conf
systemctl start etcd && systemctl enable etcd
安装和配置openstack身份认证服务(代码名称keystone)
身份认证服务:
为认证管理,授权管理和服务目录服务管理提供单点整合。其它OpenStack服务将身份认证服务当做通用统一API来使用。
出于性能原因,这个配置部署Fernet令牌和Apache HTTP服务处理请求并使用Memcached存储tokens而不用SQL数据库。
注: Token是访问资源的钥匙。它是通过Keystone验证后的返回值,在之后的与其他服务交互中只需要携带Token值即可。每个Token都有一个有效期,Token只在有效期内是有效的。
先决条件:
在配置 OpenStack 身份认证服务前,你必须创建一个数据库和管理员令牌。
用数据库连接客户端以 root 用户连接到数据库服务器
mysql -u root -p
创建 keystone 数据库
CREATE DATABASE keystone;
对keystone数据库授予恰当的权限
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'abc123';
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'abc123';
flush privileges;
退出数据库
运行以下命令来安装包。
yum install openstack-keystone httpd mod_wsgi -y
注:mod_wsgi的Apache HTTP服务器来服务认证服务请求,端口为5000和35357。缺省情况下,Kestone服务仍然监听这些端口。然而,可以手动禁用keystone服务。
cd /etc/keystone/
cp keystone.conf keystone.conf.bak
//备份一下,以免之后步骤出错,无法还原
egrep -v "^#|^$" keystone.conf.bak > keystone.conf
去掉以#开头的和空行
vi keystone.conf 修改keystore配置文件
修改以下内容:
[database]connection = mysql+pymysql://keystone:abc123@controller/keystone
//定义初始管理令牌的值,使用刚生成的令牌值
//配置数据库访问
[token]provider = fernet
//配置Fernet UUID令牌的提供者
初始化身份认证服务的数据库:
su -s /bin/sh -c "keystone-manage db_sync" keystone
注:忽略输出中任何不推荐使用的信息。
初始化Fernet keys:
keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
keystone-manage credential_setup --keystone-user keystone --keystone-group keystone
引导身份服务:
keystone-manage bootstrap --bootstrap-password abc123 \
--bootstrap-admin-url http://controller:35357/v3/ \
--bootstrap-internal-url http://controller:5000/v3/ \
--bootstrap-public-url http://controller:5000/v3/ \
--bootstrap-region-id RegionOne
到此身份认证完成
配置 Apache HTTP 服务器
vi /etc/httpd/conf/httpd.conf
修改以下内容:
ServerName controller
ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/
//创建 /usr/share/keystone/wsgi-keystone.conf链接文件
启动httpd服务设置为开机启动
systemctl start httpd && systemctl enable httpd
netstat -anpt | grep http //80 35357 5000 端口监听
注:35357:用于管理,只有admin_role可以使用
5000:用于业务,普通用户使用
创建服务实体和API端点
身份认证服务提供服务的目录和他们的位置。每个你添加到OpenStack环境中的服务在目录中需要一个 service 实体和一些 API 端点 。
先决条件:
默认情况下,身份认证服务数据库不包含支持传统认证和目录服务的信息。必须使用为身份认证服务创建的临时身份验证令牌用来初始化的服务实体和API端点。
使用环境变量以缩短命令行的长度。
export OS_USERNAME=admin
export OS_PASSWORD=abc123 管理员密码,之前设置的
export OS_PROJECT_NAME=admin
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_DOMAIN_NAME=Default
export OS_AUTH_URL=http://controller:35357/v3 配置端点URL
export OS_IDENTITY_API_VERSION=3 配置认证 API 版本
env|grep ^OS
//查看全局变量是否生效
创建服务实体和API端点
1、在Openstack环境中,认证服务管理服务目录。服务使用这个目录来决定您的环境中可用的服务。
创建服务实体和身份认证服务:
openstack service create \
--name keystone --description "OpenStack identity" identity
//为身份认证服务创建服务实体keystone
常规(非管理)任务应该使用无特权的项目和用户。
此处创建一个demo项目和用户
1)创建demo项目
openstack project create \
--domain default \
--description "Demo Project" demo
2)创建demo用户
openstack user create \
--domain default \
--password-prompt demo
密码设置为abc123
3)创建user角色:
openstack role create user
4)添加 user角色到 demo 项目和用户:
openstack role add --project demo --user demo user
注:可以重复此过程来创建额外的项目和用户
验证操作
在安装其他服务之前确认身份认证服务的操作。
注:在控制节点上执行以下操作。
1、重置OS_TOKEN和OS_URL 环境变量:
unset OS_TOKEN OS_URL
2、作为 admin 用户,请求认证令牌:
openstack --os-auth-url \
http://controller:35357/v3 \
--os-project-domain-name default \
--os-user-domain-name default \
--os-project-name admin \
--os-username admin token issue
密码:abc123
注:此处密码使用的是admin的密码
4、作为demo 用户,请求认证令牌:
openstack --os-auth-url http://controller:5000/v3 \
--os-project-domain-name default --os-user-domain-name default \
--os-project-name demo --os-username demo token issue
注:这个命令使用demo用户的密码和API端口5000,这样只会允许对身份认证服务API的常规(非管理)访问。
到此验证操作完成
创建OpenStack客户端环境脚本
前面使用环境变量和命令选项的组合通过openstack客户端与身份认证服务交互。
为了提升客户端操作的效率,OpenStack支持简单的客户端环境变量脚本即OpenRC 文件。
这些脚本通常包含客户端所有常见的选项,当然也支持独特的选项。
1、创建脚本
创建 admin 和 demo项目和用户创建客户端环境变量脚本。
接下来的部分会引用这些脚本,为客户端操作加载合适的的凭证。
1)创建openstack客户端环境脚本,编辑文件 admin-openrc 并添加如下内容:
cd /etc/keystone/
vi admin-openrc
export OS_PROJECT_DOMAIN_NAME=default
export OS_USER_DOMAIN_NAME=default
export OS_PROJECT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=abc123
export OS_AUTH_URL=http://controller:35357/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
2)编辑文件 demo-openrc 并添加如下内容
vi demo-openrc
export OS_PROJECT_DOMAIN_NAME=default
export OS_USER_DOMAIN_NAME=default
export OS_PROJECT_NAME=demo
export OS_USERNAME=demo
export OS_PASSWORD=abc123
export OS_AUTH_URL=http://controller:35357/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
2、使用脚本
使用特定租户和用户运行客户端,可以在运行之前简单地加载相关客户端脚本。
如:
1)加载admin-openrc文件来身份认证服务的环境变量位置和admin项目和用户证书:
. admin-openrc
2)请求认证令牌:
openstack token issue
(3)加载demo-openrc文件来身份认证服务的环境变量位置和demo项目和用户证书:
. demo-openrc
(4)验证配置,请求认证令牌信息
openstack token issue
环境脚本完成
来源:CSDN
作者:看上去很美、
链接:https://blog.csdn.net/qeeezz11224/article/details/85238031