zoukankan      html  css  js  c++  java
  • 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:centos@openstack-vip.net/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:centos@openstack-vip.net/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
    

      

      

      

      

      

     

      

      

      

      

      

      

     

      

     

      

      

     

     

     

      

     

  • 相关阅读:
    [导入]遍历表单的代码,包括遍历所有,以及遍历特定tag,如input,select lcs
    [导入]JS更改onclick事件 lcs
    [导入]SQLite 字符串长度 函数 lcs
    [导入]休眠 睡眠 区别 lcs
    【转】OpenGL鼠标点击事件
    【转】键盘按键和键盘对应代码表
    【转】vs2010快捷键;sql server 2008快捷;IE9快捷键
    【转】vc6.0移植到VS2010遇到的问题,散分给大家,虽然分不多,各位帮忙
    【转】单缓冲与双缓冲的区别
    【转】光照、材质、纹理的关系
  • 原文地址:https://www.cnblogs.com/struggle-1216/p/12155062.html
Copyright © 2011-2022 走看看