[TOC]
## 迁移说明
当openstack管理的计算节点越来越多的时候,控制节点的压力越来越大,由于所有的服务都安装在控制节点,这时候控制节点上的openstack服务随时都团灭的风险。
openstack是基于soa架构设计的,服务都可以迁移,本次我们演示将glance镜像服务,由控制节点迁移到compute2上
**glance镜像服务迁移的主要步骤**
1. 停止控制节点上的glance服务
2. 新节点迁移glance数据库
3. 在新的节点上安装配置glance
4. 迁移原有glance镜像文件
5. 修改keystone中glance的api地址
6. 修改所有节点nova配置文件中glance的api地址
7. 测试,上传镜像,创建实例
## 迁移实施
### 1)停止控制节点上的glance服务
**停止服务**
```sh
systemctl stop openstack-glance-api.service openstack-glance-registry.service
systemctl disable openstack-glance-api.service openstack-glance-registry.service
```
**导出数据库**
```sh
mysqldump -uroot -B glance >glance.sql
```
### 2)新节点迁移glance数据库
**新节点安装数据库**
```sh
yum install mariadb-server.x86_64 python2-PyMySQL -y
systemctl start mariadb
systemctl enable mariadb
mysql_secure_installation
```
**导入glance数据库并授权**
```sh
scp controller:/root/glance.sql /root/
mysql < glance.sql
mysql>
GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' \
IDENTIFIED BY 'GLANCE_DBPASS';
GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' \
IDENTIFIED BY 'GLANCE_DBPASS';
```
### 3)安装配置glance服务
**安装glance服务**
```sh
yum install openstack-glance -y
```
**修改glance配置文件**
```sh
#从controller拷贝配置
ssh controller 'cat /etc/glance/glance-api.conf' >/etc/glance/glance-api.conf
ssh controller 'cat etc/glance/glance-registry.conf' >/etc/glance/glance-registry.conf
#修改数据库信息
sed -i "/connection/ s#controller#$(hostname)#g" /etc/glance/glance-api.conf
sed -i "/connection/ s#controller#$(hostname)#g" /etc/glance/glance-registry.conf
```
**启动服务**
```sh
systemctl start openstack-glance-api.service openstack-glance-registry.service
systemctl enable openstack-glance-api.service openstack-glance-registry.service
```
### 4)迁移原有镜像文件
```sh
scp -rp 10.0.0.11:/var/lib/glance/images/* /var/lib/glance/images
chown -R glance:glance /var/lib/glance/images/
```
### 5)修改keystone中glance的api地址
**在控制节点上**
```sh
#导出数据库
mysqldump -uroot keystone endpoint >endpoint.sql
cp endpoint.sql /opt/endpoint.sql.bak
#修改文件并导回数据库
sed -i 's#http://controller:9292#http://10.0.0.32:9292#g' endpoint.sql
mysql keystone < endpoint.sql
#验证
openstack endpoint list|grep image
```
### 6)修改所有节点nova配置文件
```sh
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 openstack-nova-compute.service
```
### 7)测试,上传镜像,创建实例
[centos7镜像列表](http://mirrors.ustc.edu.cn/centos-cloud/centos/7/images/)
[centos7.4-1809下载地址](http://mirrors.ustc.edu.cn/centos-cloud/centos/7/images/CentOS-7-x86_64-GenericCloud-1809.qcow2)