openstack部署Keystone、Glance、Horizon服务步骤

此文章是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
  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值