date: 2021-02-14title: openstack之迁移镜像服务glance #标题
tags: glance #标签
categories: openstack # 分类

openstack所有组件均可成为一个独立的服务部署在一个节点上,这篇文章记录下如何基于openstack queens部署,将glance服务独立部署在一个新节点上,这样举一反三,可以根据业务需求,去将其他服务也独立出来。

停止原有glance服务

原glance服务所在节点执行以下操作。

  1. # 停止glance服务
  2. $ systemctl stop openstack-glance-api openstack-glance-registry
  3. # 导出glance库
  4. $ mysqldump -u root -p123.com --databases glance > /tmp/glance.sql

安装数据库并导入数据库

安装并启动数据库

在新的glance节点上执行。

  1. # 安装数据库
  2. $ yum -y install mariadb mariadb-server python2-PyMySQL
  3. # 定义数据库配置文件
  4. $ cat > /etc/my.cnf.d/openstack.cnf << EOF
  5. [mysqld]
  6. bind-address = 192.168.20.4
  7. default-storage-engine = innodb
  8. innodb_file_per_table
  9. max_connections = 40960
  10. collation-server = utf8_general_ci
  11. character-set-server = utf8
  12. EOF
  13. # 启动并设置为开机自启
  14. $ systemctl enable mariadb && systemctl start mariadb
  15. # 进行安全初始化,设置root密码等
  16. $ mysql_secure_installation

导入glance库

  1. # 将导出的库文件同步过来
  2. $ rsync -az 192.168.20.2:/tmp/glance.sql /tmp/
  3. # 导入数据库
  4. $ mysql -uroot -p123.com < /tmp/glance.sql
  5. # 确认数据库已导入
  6. $ mysql -uroot -p123.com -e 'show databases;'
  7. +--------------------+
  8. | Database |
  9. +--------------------+
  10. | information_schema |
  11. | glance |
  12. | mysql |
  13. | performance_schema |
  14. +--------------------+
  15. # 确认相关表已存在
  16. $ mysql -uroot -p123.com glance -e 'show tables;'
  17. +----------------------------------+
  18. | Tables_in_glance |
  19. +----------------------------------+
  20. | alembic_version |
  21. | image_locations |
  22. | image_members |
  23. | image_properties |
  24. | image_tags |
  25. | images |
  26. | metadef_namespace_resource_types |
  27. | metadef_namespaces |
  28. | metadef_objects |
  29. | metadef_properties |
  30. | metadef_resource_types |
  31. | metadef_tags |
  32. | migrate_version |
  33. | task_info |
  34. | tasks |
  35. +----------------------------------+

数据库用户授权

  1. $ mysql -uroot -p123.com -e "
  2. GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' IDENTIFIED BY '123.com';"

安装glance服务

  1. # 更换为阿里云源
  2. $ mkdir /etc/yum.repos.d/bak
  3. mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak/
  4. wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
  5. wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
  6. yum clean all && yum makecache fast
  7. $ yum -y install centos-release-openstack-queens
  8. 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,进行如下操作:

openstack之迁移镜像服务glance - 图1

openstack之迁移镜像服务glance - 图2

openstack之迁移镜像服务glance - 图3

可以成功创建实例,则表示glance服务迁移成功。