一,环境
在centOS 7.3中部署Openstack,按照官网只需要控制节点和计算节点,网络节点安装和控制节点安装在一起。安装过程中一直出现的问题以及解决方法用红色已经标志出来了。
官网:https://docs.openstack.org/project-install-guide/ocata/rdo-services.html
(1)网络
控制节点和计算节点都需要两个网络接口,一个作为管理网络接口,一个作为外部网络接口。接口配置如下:
控制节点:管理网络 IP地址10.0.0.11
子网掩码 255.255.255.0
默认网关 10.0.0.1
外部网络 IP地址10.190.16.40
子网掩码 255.255.255.0
默认网关 10.190.16.1
计算节点:管理网络 IP地址10.0.0.31
子网掩码 255.255.255.0
默认网关 10.0.0.1
外部网络 IP地址10.190.16.41
子网掩码 255.255.255.0
默认网关 10.190.16.1
(2)网络时间协议(NTP)
控制节点:
1,配置/etc/chrony.conf文件,按照你环境的要求,对下面的键进行添加,修改或者删除:
server NTP_SERVER iburst
使用NTP服务器的主机名或者IP地址替换NTP_SERVER。配置支持设置多个server值。
2,为了允许其他节点可以连接到控制节点的 chrony后台进程,“/etc/chrony.conf ”文件添加下面的键:
allow 10.0.0.0/24
3,启动 NTP服务并将其配置为随系统启动:
# systemctl enable chronyd.service
# systemctl start chronyd.service
计算节点:
# yum install chrony
1,编辑``/etc/chrony.conf``文件并注释除controller``server``值外的所有”server”内容。修改它引用控制节点:
server controller iburst
2,启动 NTP服务并将其配置为随系统启动:
# systemctl enable chronyd.service
# systemctl start chronyd.service
验证操作:
1,在控制节点上执行这个命令
chronyc sources
在 Name/IP address 列的内容应显示NTP服务器的主机名或者IP地址。在S列的内容应该在NTP服务目前同步的上游服务器前显示*。
2,在所有其他节点执行相同命令
chronyc sources
在 Name/IP address 列的内容应显示控制节点的主机名。
(3)OpenStack包(所有节点)
1,安装包
# yum install centos-release-openstack-ocata
2,安装 OpenStack客户端:
# yum install python-openstackclient
3,RHEL 和 CentOS 默认启用了 SELinux .安装openstack-selinux软件包以便自动管理OpenStack服务的安全策略:
# yum install openstack-selinux
(4)SQL数据库(控制节点)
1,安装包
# yum install mariadb mariadb-server python2-PyMySQL
2,创建并编辑 /etc/my.cnf.d/openstack.cnf
[mysqld]
bind-address = 10.0.0.11
default-storage-engine = innodb
innodb_file_per_table = on
max_connections = 4096
collation-server = utf8_general_ci
character-set-server = utf8
3,启动数据库服务,并将其配置为开机自启:
# systemctl enable mariadb.service
# systemctl start mariadb.service
4,为了保证数据库服务的安全性,运行``mysql_secure_installation``脚本。特别需要说明的是,为数据库的root用户设置一个适当的密码。
# mysql_secure_installation
(5)消息队列(控制节点)
1,安装包:
# yum install rabbitmq-server
2,启动消息队列服务并将其配置为随系统启动:
# systemctl enable rabbitmq-server.service
# systemctl start rabbitmq-server.service
3,添加 openstack用户:
# rabbitmqctl add_user openstack RABBIT_PASS
4,给``openstack``用户配置写和读权限:
# rabbitmqctl set_permissions openstack ".*" ".*" ".*"
(6)Memcached(控制节点)
1,安装软件包:
# yum install memcached python-memcached
2,配置 /etc/sysconfig/memcached
OPTIONS="-l 127.0.0.1,::1" 修改127.0.0.1为控制节点的管理IP 10.0.0.11
后面没有controller,要不后面网页打不开
3,启动Memcached服务,并且配置它随机启动。
# systemctl enable memcached.service
# systemctl start memcached.service
二,认证服务(keystone)
(1)安装并配置
1,创建一个数据库和管理员令牌
创建 keystone 数据库:
CREATE DATABASE keystone;
对``keystone``数据库授予恰当的权限:
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' \
IDENTIFIED BY 'KEYSTONE_DBPASS';
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' \
IDENTIFIED BY 'KEYSTONE_DBPASS';
2,安装包
# yum install openstack-keystone httpd mod_wsgi
3,配置/etc/keystone/keystone.conf(在文件前面直接添加下面配置)
[database]
# ...
connection = mysql+pymysql://keystone:KEYSTONE_DBPASS@controller/keystone
[token]
# ...
provider = fernet
4,初始化身份认证服务的数据库:
# su -s /bin/sh -c "keystone-manage db_sync" keystone
5,初始化Fernet keys:
# keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
# keystone-manage credential_setup --keystone-user keystone --keystone-group keystone
6,Bootstrap身份认证服务
# keystone-manage bootstrap --bootstrap-password admin\
--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
替换 ADMIN_PASS为一个适当的密码,这里创建了一个admin用户,密码ADMIN_PASS。