(一)需求背景
当openstack管理的计算节点越来越多的时候,控制节点的压力越来越大,由于所有的服务都安装在控制节点,这时候控制节点上的openstack服务随时都团灭的风险。
openstack是基于soa架构设计的,我们已经实现了horizon的迁移,接下来,我们实现glance镜像服务的迁移,后面其他的服务都可以迁移,让控制节点只保留一个keystone服务,是soa架构的最佳实践。
本次,我们将glance镜像服务,由控制节点迁移到compute2上。
(二)glance镜像服务迁移的主要步骤
1:停止控制节点上的glance服务
glance-api glance-registry
2:备份迁移glance数据库
3:在新的节点上安装配置glance
4:迁移原有glance镜像文件
5:修改keystone中glance的api地址
6:修改所有节点nova配置文件中glance的api地址
7:测试,上传镜像,创建实例
(三)操作过程
①控制节点上关闭相关服务:
systemctl stop openstack-glance-api.service openstack-glance-registry.service
systemctl disable openstack-glance-api.service openstack-glance-registry.service
②在控制节点上备份库:
mysqldump -uroot -B glance >glance.sql
scp glance.sql 10.0.0.32:/root
③数据库迁移
在compute2上进行数据库安装:
yum install mariadb-server.x86_64 python2-PyMySQL -y
systemctl start mariadb
systemctl enable mariadb
mysql_secure_installation
#导入glance数据库的备份
mysql < glance.sql
#登录验证
mysql glance -e 'show tabkes;'
#授权
GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost'
IDENTIFIED BY 'GLANCE_DBPASS';
GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%'
IDENTIFIED BY 'GLANCE_DBPASS';
④安装glance服务
在compute2上安装glance:
yum install openstack-glance -y
在控制节点上将配置文件发送至compute2上:
[root@controller ~]# scp -rp /etc/glance/glance-api.conf 10.0.0.32:/etc/glance/glance-api.conf
[root@controller ~]# scp -rp /etc/glance/glance-registry.conf 10.0.0.32:/etc/glance/glance-registry.conf
修改配置文件:
#修改连接数据库的信息,只修改[database]下的
connection = mysql+pymysql://glance:GLANCE_DBPASS@10.0.0.32/glance
#若没有openstack-config --set命令,需要安装yum install openstack-utils -y
openstack-config --set /etc/glance/glance-api.conf database connection mysql+pymysql://glance:GLANCE_DBPASS@10.0.0.32/glance
openstack-config --set /etc/glance/glance-registry.conf database connection mysql+pymysql://glance:GLANCE_DBPASS@10.0.0.32/glance
#启动服务,设置自启
systemctl start openstack-glance-api.service openstack-glance-registry.service
systemctl enable openstack-glance-api.service openstack-glance-registry.service
⑤迁移镜像
#将控制节点上的镜像文件迁移到新的节点
[root@computer2 glance]# scp -rp 10.0.0.11:/var/lib/glance/images/* /var/lib/glance/images/
#之前的文件目录权限是glance,迁移后恢复下权限
[root@computer2 images]# chown -R glance:glance /var/lib/glance/images/
⑥修改keystone上的glance的api地址
在控制节点上检查:
#发现keystone服务目录里的地址依旧是之前的controller地址,所以需要修改数据里的数据
openstack endpoint list | grep image
查看相关数据库:
msyql keystone:
select * from endpoint
#将keystone库的endpoint表导出
mysqldump -uroot keystone endpoint >endpoint.sql
cp endpoint.sql /opt/
修改数据库配置文件:
sed -i 's#http://controller:9292#http://10.0.0.32:9292#g' endpoint.sql
或者vim修改,c代表检查,会高亮需要替换的行,Y进行确定
:%s#http://controller:9292#http://10.0.0.32:9292#gc
导入修改好的数据库文件:
[root@controller ~]# mysql keystone < endpoint.sql
查看glance接口地址:
[root@controller ~]# openstack endpoint list|grep image
#会从keystone查找glance地址,所以有回显就是成功的
[root@controller ~]# openstack image list
⑦修改所有节点nova配置文件里面的glance地址
sed -i 's#http://controller:9292#http://10.0.0.32:9292#g' /etc/nova/nova.conf
grep '9292' /etc/nova/nova.conf
控制节点重启:
systemctl restart openstack-nova-api.service
计算节点重启:
systemctl restart openstack-nova-compute.service
⑧验证:上传镜像,然后基于镜像创建实例
1、上传镜像:
项目-镜像-创建镜像(centos-cloud)
上传后查看服务器上的镜像存储位置:/var/lib/glance/image
2、创建实例:
项目-实例-启用实例
qemu-img info .. #查看镜像信息
启动实例过程中查看nova中信息:从glance上下载镜像到服务器本地,并进行格式转换。下载后存放的位置:
/var/lib/nova/instance/_base/
以后启动的实例都是基于base目录下的文件做的链接克隆