date: 2021-02-14title: openstack之迁移镜像服务glance #标题
tags: glance #标签
categories: openstack # 分类
openstack所有组件均可成为一个独立的服务部署在一个节点上,这篇文章记录下如何基于openstack queens部署,将glance服务独立部署在一个新节点上,这样举一反三,可以根据业务需求,去将其他服务也独立出来。
停止原有glance服务
原glance服务所在节点执行以下操作。
# 停止glance服务
$ systemctl stop openstack-glance-api openstack-glance-registry
# 导出glance库
$ mysqldump -u root -p123.com --databases glance > /tmp/glance.sql
安装数据库并导入数据库
安装并启动数据库
在新的glance节点上执行。
# 安装数据库
$ yum -y install mariadb mariadb-server python2-PyMySQL
# 定义数据库配置文件
$ cat > /etc/my.cnf.d/openstack.cnf << EOF
[mysqld]
bind-address = 192.168.20.4
default-storage-engine = innodb
innodb_file_per_table
max_connections = 40960
collation-server = utf8_general_ci
character-set-server = utf8
EOF
# 启动并设置为开机自启
$ systemctl enable mariadb && systemctl start mariadb
# 进行安全初始化,设置root密码等
$ mysql_secure_installation
导入glance库
# 将导出的库文件同步过来
$ rsync -az 192.168.20.2:/tmp/glance.sql /tmp/
# 导入数据库
$ mysql -uroot -p123.com < /tmp/glance.sql
# 确认数据库已导入
$ mysql -uroot -p123.com -e 'show databases;'
+--------------------+
| Database |
+--------------------+
| information_schema |
| glance |
| mysql |
| performance_schema |
+--------------------+
# 确认相关表已存在
$ mysql -uroot -p123.com glance -e 'show tables;'
+----------------------------------+
| Tables_in_glance |
+----------------------------------+
| alembic_version |
| image_locations |
| image_members |
| image_properties |
| image_tags |
| images |
| metadef_namespace_resource_types |
| metadef_namespaces |
| metadef_objects |
| metadef_properties |
| metadef_resource_types |
| metadef_tags |
| migrate_version |
| task_info |
| tasks |
+----------------------------------+
数据库用户授权
$ mysql -uroot -p123.com -e "
GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' IDENTIFIED BY '123.com';"
安装glance服务
# 更换为阿里云源
$ mkdir /etc/yum.repos.d/bak
mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak/
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum clean all && yum makecache fast
$ yum -y install centos-release-openstack-queens
yum -y install openstack-glance openstack-utils
定义glance配置文件
# 从原glance节点拉取配置文件
$ rsync -az 192.168.20.2:/etc/glance/ /etc/glance/
# 修改galnce连接数据库的配置(192.168.20.4是我新数据库所在节点IP)
$ openstack-config --set /etc/glance/glance-registry.conf database connection mysql+pymysql://glance:123.com@192.168.20.4/glance
openstack-config --set /etc/glance/glance-api.conf database connection mysql+pymysql://glance:123.com@192.168.20.4/glance
# 修改镜像存放目录(选配)
$ openstack-config --set /etc/glance/glance-api.conf glance_store filesystem_store_datadir /data/glance/images/
# 由于配置文件中有定义controller,所以需要保证此节点可以解析到controller的地址
$ echo '192.168.20.2 controller' >> /etc/hosts
# 如果更改了镜像存放目录,请创建相关目录并更改属主
$ mkdir -p /data/glance && chown glance /data/glance
启动glance服务并加入开机自启
$ systemctl enable openstack-glance-api openstack-glance-registry
systemctl start openstack-glance-api openstack-glance-registry
$ ss -lnpt |grep glance # 确认端口在监听
LISTEN 0 128 *:9191 *:* users:(("glance-registry",pid=23621,fd=5),("glance-registry",pid=23620,fd=5),("glance-registry",pid=23599,fd=5))
LISTEN 0 128 *:9292 *:* users:(("glance-api",pid=23623,fd=4),("glance-api",pid=23622,fd=4),("glance-api",pid=23598,fd=4))
镜像迁移
# 将原节点的images文件迁移到新节点
$ rsync -az 192.168.20.2:/var/lib/glance/images/ /data/glance/images/
# 确认文件属主为glance(若属主不对,请自行更改)
$ ll /data/glance/images/
总用量 12420
-rw-r-----. 1 glance glance 12716032 2月 12 16:13 effd9c04-b22a-4a9e-8208-fa6f421aa048
修改keystone服务目录的glance的api地址
在keystone所在节点执行下述操作。
# 查看当前image相关记录还是原来的
$ openstack endpoint list | grep image
| 3b852c88b7034367a4bafc3f0255d4eb | RegionOne | glance | image | True | admin | http://controller:9292 |
| 6c0c698d3b1943a8b13e3c51983196c2 | RegionOne | glance | image | True | internal | http://controller:9292 |
| bd542fa1ebb9405d945deacfcfc651c1 | RegionOne | glance | image | True | public | http://controller:9292 |
# 修改keystone数据库记录(登录到keystone服务的数据库)
$ mysqldump -uroot -p123.com keystone endpoint > /tmp/endpoint.sql
# 备份导出的表
$ cp /tmp/endpoint.sql{,.bak}
# 更新记录
$ vim /tmp/endpoint.sql
# 到末行模式中,将原image路径(http://controller:9292)替换为新image路径(http://192.168.20.4:9292)
:% s#http://controller:9292#http://192.168.20.4:9292#g
# 导入更改后的数据
$ mysql -uroot -p123.com keystone < /tmp/endpoint.sql
# 确认数据已更改
$ openstack endpoint list | grep image
| 3b852c88b7034367a4bafc3f0255d4eb | RegionOne | glance | image | True | admin | http://192.168.20.4:9292 |
| 6c0c698d3b1943a8b13e3c51983196c2 | RegionOne | glance | image | True | internal | http://192.168.20.4:9292 |
| bd542fa1ebb9405d945deacfcfc651c1 | RegionOne | glance | image | True | public | http://192.168.20.4:9292 |
修改计算节点的nova配置文件
主要是给nova指定新glance服务所在的url。
# 所有计算节点都需要执行下面命令
$ openstack-config --set /etc/nova/nova.conf glance api_servers http://192.168.20.4:9292
# 重启 nova 相关服务
$ systemctl restart openstack-nova-api # 控制节点执行
$ systemctl restart openstack-nova-compute # 所有计算节点执行
验证glance迁移成功
上传镜像至glance
控制节点执行
$ wget https://mirrors.ustc.edu.cn/centos-cloud/centos/7/images/CentOS-7-x86_64-GenericCloud-1907.qcow2.xz
$ xz -d CentOS-7-x86_64-GenericCloud-1907.qcow2.xz
# 上传镜像
$ source admin-openrc # 加载管理员账户变量信息
$ openstack image create "Centos-7-x86_64" \
--file CentOS-7-x86_64-GenericCloud-1907.qcow2 \
--disk-format qcow2 --container-format bare \
--public
# 确认镜像上传成功
$ openstack image list
+--------------------------------------+-----------------+--------+
| ID | Name | Status |
+--------------------------------------+-----------------+--------+
| 123b3e09-b546-409c-860c-e3c518696c08 | Centos-7-x86_64 | active |
| effd9c04-b22a-4a9e-8208-fa6f421aa048 | cirros | active |
+--------------------------------------+-----------------+--------+
基于新镜像创建实例
访问dashboard,进行如下操作:
可以成功创建实例,则表示glance服务迁移成功。