此文章是Openstack安装部署认证服务(Keystone)、镜像服务(Glance)以及仪表盘(Horizon)
环境配置
关闭防火墙、SElinux、双机互信、修改/etc/hosts文件
NTP时间同步部署
ntp服务端:
1、yum install -y ntp
2、修改配置文件
vim /etc/ntp.conf
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
server 127.127.1.0 iburst
systemctl restart ntpd
systemctl enable ntpd
ntp客户端:
1、yum install -y ntp
写计划任务 crontab -e -u root
*/1 * * * * /usr/sbin/ntpdate controller //controller为控制节点
每一分钟执行一次时间同步。
3、验证
crontab -l -u root
date
安装软件
1、在CentOS中,extras
仓库提供用于启用OpenStack仓库的RPM包。CentOS默认启用extras
仓库,因此你 可以直接安装用于启用OpenStack仓库的包。
#yum install centos-release-openstack-ocata
2、升级所有节点的包
#yum upgrade //如果更新了一个新内核,重启主机来使用新内核。
3、 安装 OpenStack 客户端
# yum install python-openstackclient
4、 RHEL和 CentOS 默认启用 SELinux 。安装 openstack-selinux包实现对OpenStack服务的安全策略进行自动管理:
# yum install openstack-selinux
# yum install mariadb mariadb-server python2-PyMySQL
5、 创建并编辑 /etc/my.cnf.d/openstack.cnf
在[mysqld]中,设置“bind-address”值为控制节点的管理网络IP地址以是的其他节点可以通过管理网络访问访问数据库。
[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
配置完成重启服务,设置开机自启
# systemctl enable mariadb.service
# systemctl restart mariadb.service
6、 安装完mysql-server会提示可以运行mysql_secure_installation。运行mysql_secure_installation会执行几个设置:
–为root用户设置密码
–删除匿名账号
–取消root用户远程登录
–删除test库和对test库的访问权限
–刷新授权表使修改生效
mysql_secure_installation
Enter current password for root (enter for none):<–初次运行直接回车
Set root password? [Y/n] #是否设置root用户密码,输入y并回车或直接回车
New password: #设置root用户的密码
Re-enter new password: #再输入一次你设置的密码
Remove anonymous users? [Y/n] #是否删除匿名用户,生产环境建议删除,所以直接回车
Disallow root login remotely? [Y/n] #是否禁止root远程登录,根据自己的需求选择Y/n并回车,建议禁止
Remove test database and access to it? [Y/n] #是否删除test数据库,直接回车
Reload privilege tables now? [Y/n] #是否重新加载权限表,直接回车
7、安装消息队列服务软件
# yum install rabbitmq-server -y
启动消息队列服务并将其配置为随系统启动:
# systemctl enable rabbitmq-server.service
# systemctl start rabbitmq-server.service
8、 添加openstack用户"admin",用合适的密码替代‘redhat’:
#rabbitmqctl add_user admin redhat
为用户设置权限
# rabbitmqctl set_permissions openstack ".*" ".*" ".*"
9、 安装memcache认证服务的认证机制使用Memcached来缓存token,一般运行在控制节点上。在控制节点上执行:
# yum install memcached python-memcached -y
编辑/etc/sysconfig/Memcached,controller可以写成控制节点IP
OPTIONS="-l 127.0.0.1,::1,controller"
重启memcache服务
#systemctl enable memcached.service
#systemctl restart memcached.service
一、认证服务
1、配置identity之前,必须创建数据库。
#mysql -u root -predhat
# create database keystone;
# GRANT ALL PRIVILEGES ON keystone. TO ‘keystone’@‘localhost’ IDENTIFIED BY ‘redhat’;
# GRANT ALL PRIVILEGES ON keystone. TO ‘keystone’@’%’ IDENTIFIED BY ’ redhat ';
2、安装以下包
# yum install openstack-keystone httpd mod_wsgi -y
3、配置文件/etc/keystone/keystone.conf,并完成如下操作:
[database]
connection=mysql+pymysql://keystone:redhat@controller/keystone
#redhat是创建keystone数据库时设置的密码
[token]
provider=fernet
4、初始化身份认证服务数据库
# su -s /bin/sh -c "keystone-manage db_sync" keystone
5、初始化Fernet key;
# keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
# keystone-manage credential_setup --keystone-user keystone --keystone-group keystone
//admin 为用户名
6、bootstrap认证服务
**# 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用户的密码,请自行定义。
7、配置/etc/httpd/conf/httpd.conf
serverName controller
创建软链接 /usr/share/keystone/wsgi-keystone.conf
ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/
重启apache http服务
systemctl enable httpd.service
systemctl restart httpd.service
8、配置admin用户 vim /root/admin.sh
$ export OS_USERNAME=admin
$ export OS_PASSWORD=ADMIN_PASS //ADMIN_PASS为bootstrap认证服务时设置的密码
$ 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
9、Identity service为其他OpenStack服务提供认证服务,而认证服务需要domains, projects, users和roles。因此安装好keystone后先创建service项目:
sourse admin.sh
openstack project create --domain default --description "Service Project" service
10、一般的操作无需使用admin用户,创建一个demo项目和用户,作为普通用户使用
#创建一个demo项目
openstack project create --domain default --description "Demo Project" demo
#创建一个demo 用户
openstack user create --domain default --password-prompt demo
密码为:redhat
11、创建user角色,并且将user角色添加到demo项目和用户中:
# openstack role create user
# openstack role add --project demo --user demo user
此步骤可重复执行,创建额外的项目和用户。
12、安全起见,禁用暂时的认证令牌机制。编辑/etc/keystone/keystone-paste.ini,将[pipeline:public_api]、 [pipeline:admin_api]、 [pipeline:api_v3] sections 中的admin_token_auth删除。此处没做,因为没有此文件。
13、取消设置临时的OS_AUTH_URL和 OS_PASSWORD环境变量
$ unset OS_AUTH_URL OS_PASSWORD
14、admin用户请求认证token
$ 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
此处需要输入bootstrap认证服务时设置的admin密码
15、demo用户请求认证token
$ 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
需要输入步骤19中创建demo用户时添加的密码
16、创建openstack客户端环境脚本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 //admin用户密码
export OS_AUTH_URL=http://controller:35357/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
export OS_PROJECT_DOMAIN_NAME=Default
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_NAME=demo
export OS_USERNAME=demo
export OS_PASSWORD=redhat //demo用户密码
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
17、加载admin-openrc文件,作为admin用户运行客户端,请求认证token:
source admin-openrc
18、请求认证
openstack token issue
二、仪表盘
1、yum install -y openstack-dashboard
若出现报错Error: Package: python-django-1.8.14-1.el7.noarch (centos-openstack-ocata)
卸载在安装一下:
yum remove centos-release-openstack-ocata
yum install centos-release-openstack-ocata
2、编辑文件 /etc/openstack-dashboard/local_settings并完成如下动作:
OPENSTACK_HOST = "controller"
允许您的主机访问信息中心:
ALLOWED_HOSTS = ['one.example.com', 'two.example.com']
或者
ALLOWED_HOSTS = ['*']
配置 memcached会话存储服务:
SESSION_ENGINE = 'django.contrib.sessions.backends.cache'
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
'LOCATION': 'controller:11211',
}
}
启用第3版认证API:
OPENSTACK_KEYSTONE_URL = "http://%s:5000/v3" % OPENSTACK_HOST
启用对域的支持
OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT = True
配置API版本:
OPENSTACK_API_VERSIONS = {
"identity": 3,
"image": 2,
"volume": 2,
}
配置Default为通过仪表板创建的用户的默认域:
OPENSTACK_KEYSTONE_DEFAULT_DOMAIN = "Default"
通过仪表盘创建的用户默认角色配置为 user :
OPENSTACK_KEYSTONE_DEFAULT_ROLE = "user"
如果您选择网络参数1,禁用支持3层网络服务:
OPENSTACK_NEUTRON_NETWORK = {
'enable_router': False,
'enable_quotas': False,
'enable_distributed_router': False,
'enable_ha_router': False,
'enable_lb': False,
'enable_firewall': False,
'enable_vpn': False,
'enable_fip_topology_check': False,
}
可以选择性地配置时区:
TIME_ZONE = "TIME_ZONE"
时区这里重启服务如果报错就改回原来的。
重启web服务器以及会话存储服务:
systemctl restart httpd.service memcached.service
3、验证
登录http://192.168.20.99/dashboard,(控制节点IP)查看dashboard页面,确认dashboard安装成功。默认域为default,可以使用admin用户登录,也可以实验demo用户登录。
访问horizon,报错500,网上解决方法如下
horizon页面出来,输入用户名和密码,报错如下:
cd /var/lib/openstack-dashboard/
ls –ltrh
chown www-data:www-data /var/lib/openstack-dashboard/secret_key
ls –ltrh
service apache2 reload
查看/var/log/apache2/error.log日志,错误信息“RuntimeError: Unable to create a new session key. It is likely that the cache is unavailable”
解决方法:
1)、修改/etc/openstack-dashboard/local_settings.py,
将‘SESSION_ENGINE = 'django.contrib.sessions.backends.cache’改成
’SESSION_ENGINE = ‘django.contrib.sessions.backends.file’
2)、重新加载web 服务器配置
systemctl restart httpd
4、登录控制面板后创建flavor、创建实例,访问实例控制器,发现无法连接。因为vnc地址是127.0.0.1,而不是controller IP。
解决方法:
1)、修改controller上的/etc/nova/nova.conf
novncproxy_base_url=http://$my_ip:6080/vnc_auto.html
2)、修改computer上的/etc/nova/nova.conf
novncproxy_base_url=http://172.171.3.20:6080/vnc_auto.html
3)、重启nova相关服务
#控制节点
systemctl restart nova-api nova-consoleauth nova-scheduler nova-conductor nova-novncproxy
#计算节点
systemctl restart nova-compute
三、镜像服务
1、创建glance数据库
mysql -uroot -predhat
CREATE DATABASE glance;
对glance数据库授予恰当权限:
GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' IDENTIFIED BY 'redhat';
GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' IDENTIFIED BY 'redhat';
glance 密码为 :redhat
2、获得admin凭证来获取只有管理员能执行的命令的访问权限
source admin-openrc
3、创建glance用户
$ openstack user create --domain default --password-prompt glance
输入glance用户密码:redhat
4、添加admin 角色到 glance用户和 service项目上。
$ openstack role add --project service --user glance admin
5、创建glance
服务实体:
openstack service create --name glance --description "OpenStack Image" image
6、创建镜像服务的 API 端点:
$ openstack endpoint create --region RegionOne image public http://controller:9292
$ openstack endpoint create --region RegionOne image internal http://controller:9292
$ openstack endpoint create --region RegionOne image admin http://controller:9292
7安装配置组件
安装glance
yum install openstack-glance
8、修改配置文件/etc/glance/glance-api.conf
在 [database] 部分,配置数据库访问:
[database]
connection=mysql+pymysql://glance:redhat@controller/glance
//redhat为镜像服务选择的密码
在 [keystone_authtoken] 和 [paste_deploy] 部分,配置认证服务访问:
[keystone_authtoken]
auth_uri=http://controller:5000
auth_url=http://controller:35357
memcached_servers=controller:11211
auth_type=password
project_domain_name=default
user_domain_name=default
project_name=service
username=glance
password=redhat //redhat为认证服务中glance用户的密码
[paste_deploy]
flavor = keystone
在 [glance_store] 部分,配置本地文件系统存储和镜像文件位置:
[glance_store]
stores = file,http
default_store = file
filesystem_store_datadir = /var/lib/glance/images/
9、修改配置文件/etc/glance/glance-registry.conf
在 [database] 部分,配置数据库访问:
[database]
connection = mysql+pymysql://glance:redhat@controller/glance
//redhat为glance镜像服务的密码
在 [keystone_authtoken] 和 [paste_deploy] 部分,配置认证服务访问:
[keystone_authtoken]
auth_uri = http://controller:5000
auth_url = http://controller:35357
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = glance
password = redhat //redhat在认证服务中为glance用户创建的密码
[paste_deploy]
flavor = keystone
10、更新镜像服务数据库
su -s /bin/sh -c "glance-manage db_sync" glance
11、启动镜像服务
# systemctl enable openstack-glance-api.service \
openstack-glance-registry.service
# systemctl restart openstack-glance-api.service \
openstack-glance-registry.service
11、验证
获得admin凭证来获取只有管理员能执行的命令的访问权限
. admin-openrc
下载源镜像:
$ wget http://download.cirros-cloud.net/0.3.5/cirros-0.3.5-x86_64-disk.img
12、使用 QCOW2 磁盘格式, bare 容器格式上传镜像到镜像服务并设置公共可见,这样所有的项目都可以访问它:
$ openstack image create "cirros" \
--file cirros-0.3.5-x86_64-disk.img \
--disk-format qcow2 --container-format bare \
--public
13、确认镜像的上传并验证属性
openstack image list
glance image-list
删除镜像
glance image-delete da4dbab4-aa70-46f5-92a1-0979c0666eb7