Openstack之三:部署镜像glance服务及控制端高可用环境实现

一、glance服务概括:

    Glance是OpenStack镜像服务组件,glance服务默认监听在9292端口,其接收REST API请求,然后通过其他模块(glance-registry及image store)来完成诸如镜像的获取、上传、删除等操作,Glance提供restful API可以查询虚拟机镜像的metadata,并且可以获得镜像,通过Glance,虚拟机镜像可以被存储到多种存储上,比如简单的文件存储或者对象存储(比如OpenStack中swiftx项目)是在创建虚拟机的时候,需要先把镜像上传到glance,对镜像的列出镜像、删除镜像和上传镜像都是通过glance进行理,glance有两个主要的服务,一个是glace-api接收镜像的删除上传和读取,一个是glance-Registry。

    glance-registry负责与mysql数据交互,用于存储或获取镜像的元数据(metadata),提供镜像元数据相关的REST接口,通过glance-registry可以向数据库中写入或获取镜像的各种数据,glance-registyr监听的端口是9191,glance数据库中有两张表,一张是glance表,一张是imane property表,image表保存了镜像格式、大小等信息,image property表保存了镜像的定制化信息。

   image store 是一个存储的接口层,通过这个接口glance可以获取镜像,image store支持的存储有Amazon的S3、openstack本身的swift、还有ceph、glusterFS、sheepdog等分布式存储,image store是镜像保存与读取的接口,但是它只是一个接口,具体的实现需要外部的支持,glance不需要配置消息队列,但是需要配置数据库和keystone。

部署安装文档:https://docs.openstack.org/ocata/zh_CN/install-guide-rdo/glance-install.html

二、创建并初始化数据库:

1、在mysql服务器创建glance数据库并授权

[root@openstack-1 ~]# mysql 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 13
Server version: 10.3.10-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> CREATE DATABASE glance;  #创建数据库glance
Query OK, 1 row affected (0.073 sec)

MariaDB [(none)]> GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' IDENTIFIED BY 'centos'; #对数据库授权
Query OK, 0 rows affected (0.132 sec)

 2、在控制台一验证是否可以连接glance用户,此时可以连接。

[root@openstack-1 ~]# mysql -uglance -pcentos  -h192.168.7.100
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 15
Server version: 10.3.10-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| glance             |
| information_schema |
+--------------------+
2 rows in set (0.237 sec)

MariaDB [(none)]> 

三、控制台一配置和安装

  要创建服务证书,完成这些步骤

  1、创建 glance 用户

[root@openstack-1 ~]# openstack user create --domain default --password-prompt glance

  2、添加 admin 角色到 glance 用户和 service 项目上。

[root@openstack-1 ~]# openstack role add --project service --user glance admin

 3、创建glance实体

# openstack service create --name glance \
  --description "OpenStack Image" image

 创建API的镜像端口

# openstack endpoint create --region RegionOne  image public http://openstack-vip.net:9292    #创建公有endpoint,其中openstack-vip.net是hosts文件中的VIP域名解析
# openstack endpoint create --region RegionOne  image internal http://openstack-vip.net:9292   #创建私有endpoint 
# openstack endpoint create --region RegionOne  image admin http://openstack-vip.net:9292     #创建管理endpoint

安装openstack-glance软件包

1、安装软件包

# yum install openstack-glance

2、编辑文件 /etc/glance/glance-api.conf 并完成如下动作:

在 [database] 部分,配置数据库访问:

[database]
# ...
connection = mysql+pymysql://glance:[email protected]/glance

 其中glance:centos为创建数据库时glance用户名密码,openstack-vip.net是本地hosts的域名解析

3、在 [keystone_authtoken] 和 [paste_deploy] 部分,配置认证服务访问:vim /etc/glance/glance-api.conf

 [keystone_authtoken]
# ...
auth_uri = http://openstack-vip.net:5000
auth_url = http://openstack-vip.net:35357
memcached_servers = openstack-vip.net:11211 #本地hosts解析VIP地址的域名(openstack-vip.net)。
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = glance   #glance用户名
password = glance  # glance认证服务的密码

[paste_deploy]
# ...
flavor = keystone

将 password 写为你为认证服务中你为 glance 用户选择的密码。  

4、在 [glance_store] 部分,配置本地文件系统存储和镜像文件位置: 

[glance_store]
# ...
stores = file,http
default_store = file
filesystem_store_datadir = /var/lib/glance/images/

5、编辑文件 ``/etc/glance/glance-registry.conf``并完成如下动作,这俩配置文件一样,一共改了三个地方,数据库、认证信息和认证方法:

在 [database] 部分,配置数据库访问:

[database]
# ...
connection = mysql+pymysql://glance:[email protected]/glance

 注意:其中glance:centos为创建数据库时glance用户名密码,openstack-vip.net是本地hosts的域名解析。

6、在 [keystone_authtoken] 和 [paste_deploy] 部分,配置认证服务访问:

 [keystone_authtoken]
# ...
auth_uri = http://openstack-vip.net:5000
auth_url = http://openstack-vip.net:35357
memcached_servers = openstack-vip.net:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = glance
password = glance

[paste_deploy]
# ...
flavor = keystone

将 password 写为你为认证服务中你为 glance 用户选择的密码。 

7、写入镜像服务数据库:

# su -s /bin/sh -c "glance-manage db_sync" glance

8、启动glance服务,并设置为开机启动

# systemctl enable openstack-glance-api.service openstack-glance-registry.service
# systemctl start openstack-glance-api.service openstack-glance-registry.service

9、验证glance服务可以使用

[root@linux-host1 ~]# glance image-list #结果为空为正常,出现其他结果则进行排错
+----+------+
| ID | Name |
+----+------+
+----+------+
[root@linux-host1 ~]# openstack image list #没有结果正常

四、配置haproxy服务

1、在haproxy服务器上添加glance服务转发:vim  /etc/haproxy/haproxy.cfg

listen openstack_keystone_port_9292
    bind 192.168.7.248:9292
    mode tcp
    log global
    server 192.168.7.100 192.168.7.100:9292 check inter 3000 fall 3 rise 5
    server 192.168.7.101 192.168.7.100:9292 check inter 3000 fall 3 rise 5 backup

2、重启haproxy服务

[root@mysql1 ~]# systemctl restart haproxy

3、重启后,确认监听了9292端口

[root@mysql1 ~]# ss -nlt

 五、在mysql 服务器上安装NFS服务,并挂载

1、在mysql服务器上安装NFS服务,然后新建一个目录存放缓存数据

[root@mysql1 ~]# yum install nfs-utils -y
[root@mysql1 ~]# mkdir /openstack/glance -p #创建的目录作为共享

2、将新建的目录共享  

[root@mysql1 ~]# vim /etc/exports
/openstack/glance *(rw,no_root_squash)
[root@mysql1 ~]# systemctl start nfs
[root@mysql1 ~]# exportfs -r  #如果nfs服务已启动,需要重新加载时,让共享的目录加载生效,不要重启,最好是加载生效,如果重启,会将正在访问的报500错误。

 在控制台一查看共享的目录情况

1、在控制台一进行验证此时是否可以看到共享的目录

[root@openstack-1 ~]# showmount -e 192.168.7.106
Export list for 192.168.7.106:
/openstack/glance *

2、在挂载共享的目录前,需要将glance服务停止,再挂载

# systemctl stop openstack-glance-api.service openstack-glance-registry.service     #停止glance服务
[root@openstack-1 ~]# mount -t nfs 192.168.7.106:/openstack/glance /var/lib/glance/images  #将共享目录挂载到/var/lib/glance/images目录下

3、挂载完成之后再重新启动glance

# systemctl restart openstack-glance-api.service openstack-glance-registry.service

4、将挂载的共享目录最好写入配置文件中,作为开机自动挂载

[root@openstack-1 ~]#vim  /etc/fstab
192.168.7.106:/openstack/glance /var/lib/glance/images nfs defaults,_netdev 0 0  #挂载到文件中,其中_netdev是获取网络设备,添加此参数,超时挂载时就可以开启启动,否则一直无法开机

[root@openstack-1 ~]# mount -a #让挂载生效,查看挂载是否正常。

下来我们下载镜像测试一下共享镜像

1、在控制台一下载源镜像

wget http://download.cirros-cloud.net/0.3.5/cirros-0.3.5-x86_64-disk.img

2、查看控制台一的glance的UID和GID

[root@openstack-1 ~]# id glance
uid=1000(glance) gid=1000(glance) groups=1000(glance)

2、在nfs服务器上将共享的glance目录权限改为glance用户的uid和gid的1000,控制台一才会将下载的镜像才能上传上去,否则就会报503错误。

[root@mysql1 openstack]# ll
total 0
drwxr-xr-x 2 root root 6 Jan  6 14:06 glance
[root@mysql1 openstack]# chown 1000.1000 glance
[root@mysql1 openstack]# ll
total 0
drwxr-xr-x 2 1000 1000 6 Jan  6 14:06 glance

3、改完权限之后,然后在控制台一上传下载下来的镜像文件,使用 QCOW2 磁盘格式, bare 容器格式上传镜像到镜像服务并设置公共可见,这样所有的项目都可以访问它:

# openstack image create "cirros-0.3.5" \
  --file cirros-0.3.5-x86_64-disk.img \
  --disk-format qcow2 --container-format bare \
  --public

六、下来需要实现高可用glance  

在控制台一上做配置

1、将/etc/glance目录下的文件打包

[root@openstack-1 ~]# cd /etc/glance
[root@openstack-1 ~]# tar zcvf glance-conller1.tar.gz  ./*

2、将打包的文件复制到第二个glance控制台的/etc/glance目录下

[root@openstack-1 ~]# scp  glance-conller1.tar.gz  192.168.7.101:/etc/glance/

 在控制台二上配置

1、将控制台一传过来的文件进行解压

[root@openstack-2 ~]# tar -xvf glance-conller.tar.gz

 2、新建一个挂载目录,并将用户和组权限都修改为glance

[root@openstack-2 ~]# mkdir  /var/lib/glance/images
[root@openstack-2 ~]# chown glance.glance  /var/lib/glance/images -R

 3、将挂载的共享目录最好写入配置文件中,作为开机自动挂载

[root@openstack-2 ~]#vim  /etc/fstab
192.168.7.106:/openstack/glance /var/lib/glance/images nfs defaults,_netdev 0 0  #挂载到文件中,其中_netdev是获取网络设备,添加此参数,超时挂载时就可以开启启动,否则一直无法开机

[root@openstack-2 ~]# mount -a #让挂载生效,查看挂载是否正常。

4、启动glance服务,并设置为开机启动

# systemctl enable openstack-glance-api.service openstack-glance-registry.service
# systemctl start openstack-glance-api.service openstack-glance-registry.service

 5、下载源镜像进行测试

wget http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-disk.img

注意:cirros-0.3.4为文件名称,可以进行修改。  

6、将控制台一的admin.sh脚本复制到控制台二上

[root@openstack-1 ~]# scp admin.sh  192.168.7.101:/root

7、然后在控制台二进行生效

[root@openstack-2 ~]# . admin.sh  #或者使用source admin.sh 都能使脚本生效

 8、使用 QCOW2 磁盘格式, bare 容器格式上传镜像到镜像服务并设置公共可见,这样所有的项目都可以访问它:

# openstack image create "cirros-0.3.4" \  
  --file cirros-0.3.4-x86_64-disk.img \
  --disk-format qcow2 --container-format bare \
  --public

 当我们的一个NFS服务器宕机后,另一个NFS服务器又是好的,改怎么备份过去呢?又该怎么挂载呢?

1、下来就是rsync登场,rsync只会同步增量部分,nfs拥有相同的部分就不会再进行备份复制,此时可以在nfs-1服务器上复制同步。

[root@mysql1 ~]# rsync -alvopg  /openstack/glance/*  192.168.7.107:/openstack/glance/

2、在控制台一上重新挂载复制的文件

[root@openstack-1 ~]# mount -o remount /var/lib/glance/images

  

  

  

  

  

 

  

  

  

  

  

  

 

  

 

  

  

 

 

 

  

 

猜你喜欢

转载自www.cnblogs.com/struggle-1216/p/12155062.html