本节书摘来自异步社区《OpenStack云计算实战手册(第2版)》一书中的第2章,第2.3节,作者: 【英】Kevin Jackson , 【美】Cody Bunch 更多章节内容可以访问云栖社区“异步社区”公众号查看。
2.3 用MySQL配置OpenStack镜像服务
默认情况下,OpenStack镜像服务,即Glance,被配置使用本地SQL数据库存储。为了弹性扩展,必须配置一个中心的、可扩展且更具可靠的数据库层。因此,可使用MySQL数据库来达到这个目的。
准备工作
请在开始前确认已经登录到一个已经安装了OpenStack镜像服务的服务器上。
登录到使用Vagrant创建的OpenStack控制节点,执行以下命令:
vagrant ssh controller
操作步骤
执行下列步骤。
1.安装OpenStack镜像服务后,可使用下面的方法创建MySQL数据库,命名为glance。
MYSQL_ROOT_PASSWORD=openstack
mysql -uroot -p$MYSQL_ROOT_PASSWORD \
-e 'CREATE DATABASE glance;'
2.接下来,创建一个对该数据库有权限的用户glance,其密码设置为openstack,方法如下:
MYSQL_GLANCE_PASSWORD=openstack
mysql -uroot -p$MYSQL_ROOT_PASSWORD \
-e "GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%'
IDENTIFIED BY '${MYSQL_GLANCE_PASSWORD}';"
mysql -uroot -p$MYSQL_ROOT_PASSWORD \
-e "GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost'
IDENTIFIED BY '${MYSQL_GLANCE_PASSWORD}';"
3.然后,需要通过编辑OpenStack镜像服务的配置文件/etc/glance/glance-registry.conf和/etc/glance/glance-api.conf,修改其数据库名称及连接相关信息,使得OpenStack镜像服务能使用刚才创建的数据库。
sudo sed -i "s,^sql_connection.*,sql_connection = \
mysql://glance:${MYSQL_DB_PASSWORD}@172.16.0.200/glance," \
/etc/glance/glance-{registry,api}.conf
4.用下面的方式重启glance-registry服务。
sudo stop glance-registry
sudo start glance-registry
5.同样重启glance-api服务。
sudo stop glance-api
sudo start glance-api
6.该glance数据库将通过Ubuntu 12.04升级或降级服务版本。首先设置版本为0,执行:
glance-manage version_control 0
7.同步数据库,确保插入正确的表结构。为此,使用以下命令:
sudo glance-manage db_sync
工作原理
OpenStack镜像服务是由两个服务组成的,glance-api和glance-registry服务,其中,glance-
registry服务连接到后端数据库,glance-registry会根据我们先前设定的glance数据库和用户设置对数据库进行操作。
完成之后,可以通过修改/etc/glance/glance-registry.conf和/etc/glance/glance-registry.conf 文件中相应的设置,让glance知道从什么地址、用什么方式、连接哪个数据库。其配置遵循标准的SQLAlchemy链接,语法如下:
sql_connection = mysql://USER:PASSWORD@HOST/DBNAME