上篇说到我的openstack的部署环境是ubuntu16.04,安装的版本是ocata。其实我最开始安装的版本是mitaka,因为mitaka有中文的安装部署文档。官方的Demo配置是ubuntu14.04+mitaka,我在ubunttu16.04上面安装mitaka的时候碰到问题没法解决才重新去看的官网上面最新的安装Demo,示例采用的ocata版本,我又重新安装了ocata版本。
环境说明:
ubuntu16.04+openstack-ocata
安装的时双节点,一个控制节点controller,一个计算节点compute。
controller 192.168.44.11
compute 192.168.44.22
控制节点上部署keystone,glance,nova控制部分,neutron服务,计算节点部署的nova的计算部分。
在正式开始安装openstack之前需要安装一些辅助的工具,这里特别对网络说明下。
利用vagrant软件如上一篇对虚拟机设置IP和主机名,同时安装插件后设置可以通过主机名直接通信。这时每个虚拟机上可以看到有三个网卡,以我部署的controller节点为例,如下图:
其中enp0s8网卡上面显示的内网地址是在vagrant的配置文件中为虚拟机配置的IP地址,这张网卡在后面部署neutron的时候会用到,另外两张网卡暂时不过多关注。
下面说说搭建过程,基础环境就按照官网上面的步骤来,其中主机网络环节可以省略,相关配置已经在vagrant中完成。
我是切换到root用户下操作的。不特别说明节点的步骤都是指在控制节点上面完成。
------------------------------------------------
基础环境部分
-------------------------------------------------
1.首先要更新包:
apt-get update
apt-get upgrade
2.安装NTP同步各个节点时间:
控制节点:
1):apt install chrony
2):编辑/etc/chrony/chrony.conf文件,设置:server 192.168.44.11 iburst
这个配置是说以控制节点的时钟为准同步各个节点时间。
3):编辑/etc/chrony/chrony.conf文件,设置:allow 192.168.44.0/24
这是指哪个范围内的节点可以连接到控制节点,即同步机器IP范围,这里设置为取前24位的局域网段。
4):重启NTP服务:service chrony restart
计算节点:
1):apt install chrony
2):编辑/etc/chrony/chrony.conf文件,设置:server controller iburst
意思是与控制节点的时间同步。
3):注释掉行:pool 2.debian.pool.ntp.org offline iburst
4):重启NTP服务:service chrony restart
3:安装openstack基础包,这一步两个节点上都按照下面步骤执行
1)安装基础包: apt install software-properties-common add-apt-repository cloud-archive:ocata
2):更新包:apt update && apt dist-upgrade
3):安装openstack客户端:apt install python-openstackclient
4:安装mariadb数据库
1):apt install mariadb-server python-pymysql
2):新建并编辑文件/etc/mysql/mariadb.conf.d/99-openstack.cnf,做通用设置,其中bind-address设置为控制节点的IP:
[mysqld] bind-address = 192.168.44.11 default-storage-engine = innodb innodb_file_per_table = on max_connections = 4096 collation-server = utf8_general_ci character-set-server = utf8
3):重启数据库服务:service mysql restart
4):数据库安全加固:mysql_secure_installation
5:消息队列
1):安装rabbitmq消息队列:apt install rabbitmq-server
2):设置连接消息队列的用户名/密码(openstack/123456):rabbitmqctl add_user openstack 123456
3):给用户分配权限读,写,访问:rabbitmqctl set_permissions openstack ".*" ".*" ".*"
6:安装缓存memchaced
1):apt install memcached python-memcache
2):编辑配置文件/etc/memcached.conf,设置:-l 192.168.44.11
意思是缓存设置缓存采用控制节点的IP地址
3):重启缓存服务:service memcached restart
--------------------------------------------------------------------------
keystone
---------------------------------------------------------------------------
1:数据库部分
1):root账号连接到数据库:mysql
2):创建keystone数据库:MariaDB [(none)]> CREATE DATABASE keystone;
3):对用户/密码(keystone/keystone)授予数据库keystone权限:
MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'keystone';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'keystone';
4):退出数据库
2:keystone安装配置部分
1):安装keystone: apt install keystone
2):边界配置文件/etc/keystone/keystone.conf
a):[database]块配置,注释掉该块其他的connection配置选项:
connection = mysql+pymysql://keystone:KEYSTONE_DBPASS@controller/keystone
其中KEYSTONE_DBPASS替换为前面keystone用户设置的密码:keystone;
b):[token]
块配置:provider = fernet
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 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
ADMIN_PASS替换为admin用户的密码;
3:apache服务部分
apache服务在ubuntu上面是默认安装,不需要再次安装
1):编辑文件/etc/apache2/apache2.conf,设置:ServerName controller
2):重启apache服务并删除默认的SQLite数据库配置:
service apache2 restart
rm -f /var/lib/keystone/keystone.db
3):设置管理员用户认证相关信息写入环境变量:
$ 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
其中ADMIN_PASS为管理员用户admin的密码
###########################################
创建项目,角色和用户
1:创建service项目:openstack project create --domain default --description "Service Project" service
2:创建demo项目,分以下几步:
1)创建demo项目:openstack project create --domain default --description "Demo Project" demo
2):创建demo用户:openstack user create --domain default --password-prompt demo
根据提示输入密码
3):创建user角色:openstack role create user
4):角色user将项目demo和用户demo关联起来:openstack role add --project demo --user demo user
####################################################
验证
1:移除临时令牌,编辑/etc/keystone/keystone-paste.ini文件,移除[pipeline:public_api],[pipeline:admin_api],[pipeline:api_v3]下的admin_token_auth。
2.重置环境变量OS_AUTH_URL和OS_PASSWORD:unset OS_AUTH_URL OS_PASSWORD
3:以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
按照提示输入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用户的密码
######################################
上面是通过环境变量和命令选项的组合,并且还需要用户手动输入一次密码来为用户申请访问相关服务端点的令牌,为了提高效率,可以将用户密码和申请令牌需要的相关指存放到脚本中,自动加载,申请令牌时可以简化命令,同时减少输入密码的交互。
1.为admin用户创建脚本,创建编辑文件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=ADMIN_PASS export OS_AUTH_URL=http://controller:35357/v3 export OS_IDENTITY_API_VERSION=3 export OS_IMAGE_API_VERSION=2
ADMIN_PASS替换为admin用户的密码;
2:为demo用户创建脚本,创建编辑文件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=DEMO_PASS export OS_AUTH_URL=http://controller:5000/v3 export OS_IDENTITY_API_VERSION=3 export OS_IMAGE_API_VERSION=2
DEMO_PASS替换为demo用户的密码;
3:加入脚本后的申请令牌方式,以admin用户为例:
1):加载用户脚本:
. admin-openrc
2):申请令牌: openstack token issue
-----------------------------------------------------------------------------------------------------
总结:
1.上面的安装过程中,没有碰到大的问题,按照教程一步一步来就可以,一个需要注意的地方就是apache服务器的配置。
2.关于服务端点的理解,管理员用户对应的端口和普通用户对应的端口不同,不同的令牌之间的权限有何区别需要梳理。
3.还有就是启动keystone服务的命令。