设为首页 收藏本站
查看: 1231|回复: 0

[经验分享] Chapter 5 OpenStack镜像服务(Image service)

[复制链接]

尚未签到

发表于 2018-6-1 11:54:00 | 显示全部楼层 |阅读模式
  Chapter 5 镜像服务(Image service)
  5.1 镜像服务的概念
  OpenStack镜像服务能够使用户发现、注册(导入)、查询虚拟机镜像。它通过REST API来查询虚拟机镜像的元数据从而获取镜像文件。这里镜像服务安装在控制节点上,默认存储镜像的路径为/var/lib/glance/images/,可以在/etc/glance/glance-api.conf文件来修改路径参数filesystem_store_datadir。注意,镜像文件将存放在之前配置的共享存储上。
  

  OpenStack镜像服务包括以下几个组件:
  glance-api:接受关于镜像发现、检索、存储的API调用
  glance-registry:存储、处理和检索关于镜像的元数据,元数据包括如大小,类型等选项
  数据库
  镜像文件存储仓库
  

  5.2 安装配置镜像服务(Image service)
  5.2.1 配置预先环境
  1. 创建镜像服务数据库、用户及权限:
  [root@controller ~]# mysql -uroot -piforgot
  MariaDB [(none)]> CREATE DATABASE glance;
  MariaDB [(none)]> GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' IDENTIFIED BY 'glancepw';
  MariaDB [(none)]> GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' IDENTIFIED BY 'glancepw';
  MariaDB [(none)]> flush privileges;
  

  2. 创建镜像服务用户、角色、服务实体以及API终端:
  [root@controller ~]# source admin-openrc.sh
  [root@controller ~]# openstack user create --password glancepw glance
  [root@controller ~]# openstack role add --project service --user glance admin
  [root@controller ~]# openstack service create --name glance \
  --description "OpenStack Image service" image
  [root@controller ~]# openstack endpoint create \
  --publicurl http://controller:9292 \
  --internalurl http://controller:9292 \
  --adminurl http://controller:9292 \
  --region RegionOne \
  image
  

  5.2.2 安装配置镜像服务组件
  1. 安装相关软件包:
  [root@controller ~]# yum -y install openstack-glance python-glance python-glanceclient glusterfs-fuse
  由于镜像文件存储在GluterFS存储系统发布的共享空间里,所以需要安装glusterfs-fuse客户端。
  

  2. 编辑/etc/glance/glance-api.conf文件:
  [root@controller ~]# cp /etc/glance/glance-api.conf{,.bak}
  [root@controller ~]# > /etc/glance/glance-api.conf
  [root@controller ~]# vi /etc/glance/glance-api.conf
  [DEFAULT]
  notification_driver = noop
  verbose = True
  

  [database]
  connection = mysql://glance:glancepw@controller/glance
  

  [keystone_authtoken]
  auth_uri = http://controller:5000
  auth_url = http://controller:35357
  auth_plugin = password
  project_domain_id = default
  user_domain_id = default
  project_name = service
  username = glance
  password = glancepw
  

  [paste_deploy]
  flavor = keystone
  

  [glance_store]
  default_store = file
  filesystem_store_datadir = /var/lib/glance/images/
  backup-volfile-servers = compute2
  

  另外,根据设置需求将glusterfs文件系统设置为开机自动挂载:
  [root@controller ~]# vi /etc/fstab
  compute1:/glance-volume /var/lib/glance/images glusterfs defaults,_netdev 0 0
  

  3. 编辑/etc/glance/glance-registry.conf文件:
  [root@controller ~]# cp /etc/glance/glance-registry.conf{,.bak}
  [root@controller ~]# > /etc/glance/glance- registry.conf
  [root@controller ~]# vi /etc/glance/glance- registry.conf
  [DEFAULT]
  notification_driver = noop
  verbose = True
  

  [database]
  connection = mysql://glance:glancepw@controller/glance
  

  [keystone_authtoken]
  auth_uri = http://controller:5000
  auth_url = http://controller:35357
  auth_plugin = password
  project_domain_id = default
  user_domain_id = default
  project_name = service
  username = glance
  password = glancepw
  

  [paste_deploy]
  flavor = keystone
  

  4. 填充镜像服务数据库:
  [root@controller ~]# su -s /bin/sh -c "glance-manage db_sync" glance
  

  5. 启动镜像服务并将其设置为开机自启:
  [root@controller ~]# systemctl start openstack-glance-api openstack-glance-registry
  [root@controller ~]# systemctl enable openstack-glance-api openstack-glance-registry
  

  5.3 虚拟机镜像介绍
  虚拟机镜像(virtual machine image)其实就是一个单独的文件,包含一个已安装了可引导的操作系统的磁盘。虚拟机镜像可以是多种格式(后面章节将介绍如何进行格式转换):
  Raw:原始镜像是最简单的格式,KVM和Xen Hypervisor都可以支持这种格式。可以认为它就是一个块设备文件。这里不推荐使用dd命令生成一个块设备文件来创建原始镜像
  qcow2:qcow2(QEMU copy-on-write version 2)是KVM hypervisor最常用的一种镜像格式。它具有一些原始镜像所不具备的特性:
  使用稀疏表示(sparse representation),使镜像文件更小,这也意味着在上传时速度更快
  支持快照功能,因此在必要时OpenStack会自动将原始镜像(raw image)转换成qcow2格式
  VMDK:VMware ESXi使用VMDK镜像格式
  VDI:VirtualBox使用VDI镜像格式
  ISO:ISO是标准的磁盘镜像格式,通过CD或DVD来启动系统
  

  5.3.1 磁盘镜像格式
  虚拟机镜像磁盘格式其实就是底层磁盘镜像格式。虚拟厂商提供了不同的格式,常见的有:
  raw:一种非结构化的磁盘镜像格式,如果一个文件不具备扩展性,它可能就是原始格式(raw format)
  qcow2:QEMU仿真器(emulator)所支持的、可动态扩展并可进行拷贝(Copy on Write)的格式
  

  5.4 手动创建镜像
  获得镜像最快的方式就是下载官方发布的镜像文件、或者别人已创建的镜像文件。如果需要定制个性化的镜像文件,可根据需求手动创建镜像文件。
  

  5.4.1 预设环境
  在使用libvirt启动一台虚拟机之前,确认libvirt默认网络"default"是否已开启,这个网络必须是激活状态,并能连接到网络。通过virsh net-list命令来进行查看:
  [root@test_env ~]# virsh net-list
  Name      State  Autostart   Persistent
  ------------------------------------------------------------------------------
  default      active  yes       yes
  

  如果网络没有启动,可以通过下面命令将其开启:
  [root@test_env ~]# virsh net-start default
  注意,test_env是实验环境的宿主机,安装了CentOS6.5-x86_64系统,因此支持KVM虚拟机创建。
  

  5.4.2 使用virt-manager X11 GUI图像界面安装CentOS虚拟机
  如果使用图形界面进行虚拟机的安装,可以通过virt-manager命令开启图形配置界面来设置虚拟机安装所需参数:
  [root@test_env ~]# virsh manager
  

  接下来配置安装环境,这里安装的操作系统是CentOS6.5 x86_64:
  

  

  

  

  存放位置为/var/lib/libvirt/images/目录下,名称为CentOS6-x86_64-test.img。
  

  启动虚拟机后,通过图形界面完成操作系统的安装:
  

  重启之后,需要完成下面几个步骤:
  清空/etc/udev/rules.d/70-persistent-net.rules文件的内容
  (如有该文件的话)清空/lib/udev/rules.d/75-persistent-net-generator.rules文件的内容,该文件用于生成上面的70-persistent-net.rules文件
  移除/etc/sysconfig/network-scripts/ifconfigeth0中配置参数HWADDR和UUID,并确认参数ONBOOT为yes
  另外,如有必要请关闭防火墙和SELinux服务
  

  5.4.3 上传镜像到OpenStack镜像服务
  首先将宿主机上的镜像文件上传到控制节点,然后通过glance命令创建OpenStack Image:
  [root@test_env ~]# cd /var/lib/libvirt/images/
  [root@test_env images]# scp CentOS6-x86_64-test.img 10.0.0.11:~
  [root@test_env images]# ssh 10.0.0.11
  [root@controller ~]# source admin-openrc.sh
  [root@controller ~]# glance image-create --name "CentOS6-x86_64-test" --file CentOS6-x86_64-test.img \
  --disk-format qcow2 --container-format bare --visibility public --progress
  [root@controller ~]# glance image-list
  | ID                              | Name                |
  | 534d920c-02eb-4c17-beb9-918650e92bb9 | CentOS6-x86_64-test |
  

  5.5 修改镜像文件
  当获取了一个镜像文件,在上传到OpenStack Image服务之前可能需要对其进行修改,这时需要使用特定工具来执行。
  

  5.5.1 guestfish
  guestfish是一个出自libguestfs项目用于修改虚拟机内部文件的工具。guestfish不能直接将镜像文件挂载到本地文件系统,取而代之,它提供了一个shell交互接口,允许用户查看、编辑、删除文件等操作。
  

  其功能在于,当需要修改一些配置信息(而不是直接启动虚拟机来进行修改),通过它来完成更加地方便实用。例如在上传镜像文件到OpenStack镜像服务时,需要修改一些特定的文件,包括清空/etc/udev/rules.d/70-persistent-net.rules等:
  [root@controller ~]# guestfish --rw -a CentOS6-x86_64-test.img
  ><fs> run
  ><fs> list-filesystems
  /dev/sda1: ext4
  /dev/vgsys/lvroot: ext4
  /dev/vgsys/lvswap: swap
  ><fs> mount /dev/vgsys/lvroot /
  ><fs> vi /etc/udev/rules.d/70-persistent-net.rules
  (清空文件内容,然后rw保存退出)
  ...
  ><fs> vi /etc/sysconfig/network-scripts/ifcfg-eth0
  ...
  ONBOOT=yes
  BOOTPROTO=dhcp
  ...
  ><fs> exit
  

  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-499277-1-1.html 上篇帖子: openstack cinder+drbd+nfs实现高可用存储【kilo版】 下篇帖子: openstack kilo 配置dvr
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表