部署条件:
在安装openstack服务前,需要安装数据库mysql、消息队列、缓存memcached、etcd服务
一、安装并配置数据库
大多数 OpenStack 服务使用 SQL 数据库来存储信息。 典型地,数据库运行在控制节点上。
1)安装软件包
yum install mariadb mariadb-server python2-PyMySQL -y
2)创建并编辑 /etc/my.cnf.d/openstack.cnf
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 //设置创建数据库时的默认字符集
(3) 设置开机自启并开启
systemctl start mariadb && systemctl enable mariadb
(4)验证有没有开启成功
(5)对数据库进行安全加固
mysql_secure_installation
操作如下:
回车键——y——密码——密码——y——n——y——y
二、安装并配置消息队列
OpenStack 使用 message queue 协调操作和各服务的状态信息。消息队列服务一般运行在控制节点上。
OpenStack支持好几种消息队列服务包括 RabbitMQ, Qpid, 和 ZeroMQ。
不过,大多数发行版本的OpenStack包支持特定的消息队列服务。
本实验安装 RabbitMQ 消息队列服务,因为大部分发行版本都支持它。
1)安装软件包
yum install rabbitmq-server -y
2)启动消息队列服务并将其配置为随系统启动
systemctl start rabbitmq-server && systemctl enable rabbitmq-server
3)使用此插件实现web管理
rabbitmq-plugins enable rabbitmq_management
4)验证是否开启成功
netstat -anpt | grep 5672
注:当开启rabbitmq_management,15672端口才会工作
15672:管理端口
25672:server间内部通信口
5672: client端通信口
6)测试web页面
在浏览器中输入http://192.168.80.100:15672/
7)创建并添加openstack用户,其密码为abc123
rabbitmqctl add_user openstack abc123
8)给openstack用户配置写和读权限
rabbitmqctl set_permissions openstack ".*" ".*" ".*"
三、安装并配置memcached
认证服务认证缓存使用Memcached缓存令牌。缓存服务memecached运行在控制节点。
1)安装软件包:
yum install memcached python-memcached -y
2)修改memcached配置文件
vi /etc/sysconfig/memcached 修改成以下内容:
OPTIONS="-l 127.0.0.1,::1,controller"
3)启动Memcached服务,并且配置它随机启动。
systemctl start memcached && systemctl enable memcached
4)查看memcached服务是否在工作
netstat -anpt | grep 11211
四、Etcd服务
OpenStack服务可以使用Etcd,这是一种分布式可靠的键值存储,用于分布式键锁定、存储配置、跟踪服务实时性和其他场景。
1)安装软件包
yum install etcd -y
2)修改etcd配置文件
vi /etc/etcd/etcd.conf
修改以下内容:
#[Member]
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_PEER_URLS="http://192.168.80.100:2380"
ETCD_LISTEN_CLIENT_URLS="http://192.168.80.100:2379"
ETCD_NAME="controller"
#[Clustering]
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.80.100:2380"
ETCD_ADVERTISE_CLIENT_URLS="http://192.168.80.100:2379"
ETCD_INITIAL_CLUSTER="controller=http://192.168.80.100:2380"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster-01"
ETCD_INITIAL_CLUSTER_STATE="new"
:%s /localhost/192.168.80.100/g 将里面的localhost替换成192.168.80.100
grep -v “^#” /etc/etcd/etcd.conf
3)开机自启并启动
systemctl start etcd && systemctl enable etcd
五、安装和配置openstack身份认证服务(代码名称keystone)
认证服务为其他openstack服务提供验证和授权服务,为所有服务提供终端目录。
其他openstack服务降身份认证服务当作通用统一API来使用。
出于性能原因,这个配置部署Fernet令牌和Apache HTTP服务处理请求并使用Memcached存储tokens而不用SQL数据库。
注: Token是访问资源的钥匙。它是通过Keystone验证后的返回值,在之后的与其他服务交互中只需要携带Token值即可。每个Token都有一个有效期,Token只在有效期内是有效的。
部署条件:
在配置 OpenStack 身份认证服务前,必须创建一个数据库和管理员令牌。
1、创建数据库
1)用数据库连接客户端以 root 用户连接到数据库服务器
mysql -u root -pabc123 //进入数据库
2)创建 keystone 数据库
CREATE DATABASE keystone;
3)对keystone数据库授予恰当的权限
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'abc123';
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'abc123';
4)刷新权限
flush privileges;
5)退出
quit
2、安装并配置keystone组件
1)安装软件包
yum install openstack-keystone httpd mod_wsgi -y
注:mod_wsgi的Apache HTTP服务器来服务认证服务请求,端口为5000和35357。缺省情况下,Kestone服务仍然监听这些端口。然而,可以手动禁用keystone服务。
2)修改keystore配置文件
cd /etc/keystone/
cp keystone.conf keystone.conf.bak
//备份一下,以免之后步骤出错,无法还原
egrep -v "^#|^$" keystone.conf.bak > keystone.conf
去掉以#开头的和空行
vi keystone.conf
[database]
connection = mysql+pymysql://keystone:abc123@controller/keystone
//配置数据库访问
[token]
provider = fernet //配置Fernet UUID令牌的提供者
保存退出
3)初始化身份认证服务的数据库:
su -s /bin/sh -c "keystone-manage db_sync" keystone
4)初始化Fernet keys:
keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
keystone-manage credential_setup --keystone-user keystone --keystone-group keystone
5)引导身份服务:
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
3、配置Apache HTTP服务器
1)修改httpd配置文件
vi /etc/httpd/conf/httpd.conf
修改以下内容:
ServerName controller
2)创建到/usr/share/keystone/wsgi-keystone的链接配置文件
ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/
3)开机自启并启动
systemctl start httpd && systemctl enable httpd
4)查看开启情况
netstat -anpt | grep http
注:
35357:用于管理,只有admin_role可以使用
5000:用于业务,普通用户使用
5)配置管理帐户
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 版本
6)查看全局变量是否生效
env|grep ^OS
4、创建域、项目、用户和角色
身份服务为每个OpenStack服务提供身份验证服务。身份验证服务使用域、项目、用户和角色的组合
本实验使用一个service项目,该项目为添加到环境中的每个服务包含一个惟一的用户。
1)创建service项目
openstack project create --domain default \
--description "Service Project" service
常规(非管理)任务应该使用非特权项目和用户。作为示例,本实验创建演示项目和用户
2)创建demo项目
openstack project create --domain default \
--description "Demo Project" demo
3)创建demo用户
openstack user create --domain default \
--password-prompt demo
4)创建user角色
openstack role create user
5)将user角色添加到demo项目和demo用户中
openstack role add --project demo --user demo user
注:此命令不提供输出。
5、验证操作
在安装其他服务之前,验证身份服务的操作。
在控制节点上执行以下操作:
1)取消临时OS_AUTH_URL和OS_PASSWORD环境变量
unset OS_AUTH_URL OS_PASSWORD
注:不执行此操作,会报错
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
3)作为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
6、创建OpenStack客户端环境脚本
为admin和demo项目及用户创建客户端环境脚本。本实验的未来部分将引用这些脚本,以加载用于客户端操作的适当凭证。
1)创建并编辑admin-openrc文件
cd //到/root目下创建
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
3)加载admin-openrc文件,用标识服务的位置、管理项目和用户凭据填充环境变量
. admin-openrc
4)请求认证令牌
openstack token issue