#openstack #keystone #deployment
注:如需转载,注明出处,谢谢。
如有问题,请留言或私信我以便修改,谢谢。
实验环境
CentOS 7.4
MacBook Air (远端服务器上POWER架构的服务器 )
Openstack版本:Pike
禁用SELINUX
SELINUX是Linux的一个安全子系统,他可以控制程序只能访问特定的文件,因为我们要修改一些配置文件,为了防止不能用vi修改,需要打开防火墙。
'''
修改/etc/selinux/config
'''
#...
SELINUX = disabled
#...
然后重启主机,使得改变有效。
安装epel解除安装包的依赖关系
sudo yum install epel
同步本机时间
sudo yum install chrony
sudo nano /etc/chrony.cnf
#添加server的ip地址(可随意选择自己喜欢的,如server 202.120.2.101 iburst 上海交通大学的服务器,在这里我选择了我们实验用的服务器)
server 9.114.219.12 iburst
sudo systemctl enable chronyd.service
sudo systemctl start chronyd.service
安装MariaDBMS
sudo yum install mariadb mariadb-server python2-PyMySQL
sudo nano /etc/my.cnf.d/openstack.cnf
#添加内容
[mysqld]
bind-address = 9.114.111.207(本虚拟机ip)
default-storage-engine = innodb
innodb_file_per_table = on
max_connections = 4096
collation-server = utf8_general_ci
character-set-server = utf8
sudo systemctl enable mariadb.service
sudo systemctl start mariadb.service
mysql_secure_installation (安全性能权限设置,所有选项默认y)
创建Power描述文件(若虚拟机服务器为x86架构,此步骤可省去)
由于远端使用的是Power架构的处理机,而keystone service也算是x86架构的一个web app,所以需要一个描述文件,使得keystone能够安装在power架构的机器上。
sudo nano etc/yum.repos.d/rdo.repo
#添加内容
[rdo-pike]
name=RDO
Pike baseurl=http://mirror.centos.org/centos/7/cloud/x86_64/openstack-pike
enabled=1
gpgcheck=0
[rdo-pike-dependency]
name=RDO Pike Dependency for PowerLinux
baseurl=ftp://ftp.unicamp.br/pub/ppc64el/centos/7_4/openstack/pike/
enabled=1
gpgcheck=0
创建Keystone自己的Database
OpenStack每一个服务都需要有一个自己的database来记录信息,Keystone更是如此,且此步骤是在安装Keystone之前就要做好的。
mysql -u root -p
CREATE DATABASE keystone;
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' \ IDENTIFIED BY 'KEYSTONE_DBPASS';
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' \ IDENTIFIED BY 'KEYSTONE_DBPASS';
改变KEYSTONE_DBPASS 如:123
安装Keystone以及 httpd 和 mod-wsgi
sudo yum install openstack-keystone httpd mod-wsgi
# 确保这三项全部安装成功
sudo nano /etc/keystone/keystone.conf
‘’修改database段的connection,以及token段的provider‘’
[database]
# ...
connection = mysql+pymysql://keystone:KEYSTONE_DBPASS@controller/keystone
[token]
# ...
provider = fernet
KEYSTONE_DBPASS与前面对应(如:123)
controller改为9.114.111.207(虚拟机IP地址)
配置Keystone&配置Apache HTTP server(此部分大多在root下进行)
sudo -i
'''
配置Keystone
'''
su -s /bin/sh -c "keystone-manage db_sync" keystone
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 ADMIN_PASS \
--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
# controller改成本机IP地址9.114.111.207
# ADMIN_PASS改为你设定的
#配置Apache HTTP Server
nano /etc/httpd/conf/httpd.conf
#修改ServerName
ServerName 9.114.111.207
#链接配置文件(安装过程中进行一次即可)
ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/
systemctl enable httpd.service
systemctl start httpd.service
'''
此时可以exit root
'''
export OS_USERNAME=admin
export OS_PASSWORD=ADMIN_PASS
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
export OS_IDENTITY_API_VERSION=3
#同样,controller改为9.114.111.207
#ADMIN_PASS也要与前面设置的对应,我没有设置,就是ADMIN_PASS.
遇到的问题
- MariaDB没有正常启动和连接到Keystone服务
- 原因:Database的配置文件没有修改bind-adress为9.114.111.207,且由于bind-adress错误导致最开始MariaDB无法启动;
- 解决:删除原先创建的keystone的database,并按照前面描述的重新修改配置文件;
- Apache HTTP 无法连接到 endpoint
- 原因:没有在root下进行连接等操作,导致获取到的权限不够,一部分操作无法完成。
- 解决:sudo -i 然后重新进行keystone以及apache http的配置,并且所有的Apache HTTP配置语句的controller都改成9.114.111.1207;
参考文献以及验证
- 前面的安装步骤参考文献(openstack官方文档)是
OpenStack Docs: SQL database for RHEL and CentOS
OpenStack Docs: Install and configure
- 到了这里,Keystone的安装已经完成,可以使用openstack的api进行验证是否安装成功,如:
#直接执行下面的命令,若出现table,则说明安装成功
openstack project create --domain default \
--description "Service Project" service