2015年12月9日 星期三

RHEL 的 OpenStack (六)--管理 Glance 影像服務

管理 Glance 影像服務
  • Glance 影像服務
    1. 作用方式如同將虚擬硬碟影像檔註冊。
    2. 使用者可增加新影像檔或從已經存在的 Server 取得快照。
    3. 快照影像檔可用於備份或是做為新 Server 的樣板。
    4. 已註冊的影像檔,存放在物件儲存服務中!
    5. Glance服務需要 Keystone 服務來進行身份驗證管理以及使用授權!
    6. Glance使用 MySQL 存放影像檔的資訊資料!
    7. Glance 支援不同的影像檔格式:
      影像格式 說明
      raw
      vhd
      vmdk
      vdi
      iso
      qcow2
      aki
      ari
      ami

    8. Glance支授不同的 Container 格式:
      Container格式 說明
      bare
      ovf
      ova
      aki
      ari
      ami

    9. 在 /root/answers.txt 檔案中:
      CONFIG_GLANCE_INSTALL=y
      CONFIG_GLANCE_BACKEND=file

  • Glance 目錄
    • /var/lib/glance/images : 假如 Backend 項目被設定成 file 時!
    • /etc/glance/ : Glance服務設定檔
    • ※PS:下一版的 Glance ,將取消 glance-registry.conf 檔案!

  • Glance Keystone 設定
    • # keystone endpoint-list
練習1:驗證 Glance 影像服務
  1. # grep GLANCE /root/answers.txt
  2. # ps axf | grep glance
  3. # grep workers /etc/glance/glance-*
  4. # grep bind_port /etc/glance/glance-api.conf
  5. # ss -nlp | grep 9292
  6. # cd /etc/glance
  7. # ls
  8. # vim /etc/glance/glance-api.conf
    rabbit_host=10.1.1.1
    flavor=keystone
    filesystem_store_datadir=/var/lib/glance/images/
  9. # vim /etc/glance/glance-registry.conf
    [database]
    connection=mysql://....
  10. # cd
  11. # ls -al /var/lib/glance/
  12. # source /root/keystonerc_admin
  13. # keystone service-get glance
  14. # keystone catalog --service image
  15. # keystone user-get glance
  16. # glance image-list --all-tenants
  17. # glance --debug image-list --all-tenants
    ※PS:一定要看見 HTTP/1.1 200 OK!
使用 Glance 影像服務儲存系統影像檔
  • 儲存系統影像檔
    • glance指令可以用來管理影像檔
    • 利用 virt-sysprep 指令,可將 KVM 虚擬機中的 Linux 作業系統,打包成影像檔,方便存入 Glance
    • 確認影像檔方式: qemu-img info IMAGENAME
    • # glance image-create --name "NAME" --is-public IS_PUBLIC --disk-format DISK_FORMAT --container-format CONTAINER_FORMAT --file IMAGEFILE
    • --location URL :可取代 --file
練習2:
  1. # source /root/keystonerc_admin
  2. # glance image-create --name small --is-public True --disk-format qcow2 --container-format bare --copy-from http://demo.example.com/pub/small.img
  3. # glance image-list
  4. # glance image-show small
  5. # glance image-list --all-tenants
建立與封裝影像
  • 使用快照進行快速佈署
    • 快照是一種將執行中的實體,複製一份,簡化類似實體的建立過程!

  • 使用 Oz 建立影像檔
    • # oz-install -d 2 -t 3000 small-template.xml
    • /var/lib/libvirt/images
    • /etc/oz/oz.cfg
    • # yum install -y virt-manager virt-viewer gnome-font-viewer xorg-x11-xauth

練習3:
  1. # yum -y install oz libguestfs-tools crudini python-glanceclient
  2. # systemctl status libvirtd.service
  3. # virsh net-list
  4. # cat /usr/share/libvirt/networks/default.xml
  5. # virsh net-define /usr/share/libvirt/networks/default.xml
  6. # virsh net-start default
  7. # virsh net-autostart default
  8. # virsh net-list
  9. # wget http://demo.example.com/pub/small-template.xml
  10. # ls /dev/kvm
  11. # vim /usr/lib/python2.7/site-packages/oz/RedHat.py
    約80行的地方,加入參數:no_timer_check
    self.cmdline = "method=" + self.url + " ks=file:/ks.cfg no_timer_check"
  12. # crudini --set /etc/oz/oz.cfg libvirt image_type qcow2
  13. # oz-install -d 2 -t 3000 small-template.xml
  14. # yum -y install virt-manager virt-viewer gnome-font-viewer xorg-x11-xauth
  15. # ssh -X root@otherhost
  16. # virsh list
  17. # virt-viewer rhel7_x86_64
  18. # virt-sysprep --add /var/lib/libvirt/images/rhel7_x86_64.qcow2
  19. # scp root@localhost:/root/keystonerc_admin /root/
  20. # source /root/keystonerc_admin
  21. # glance image-create --name "myozimage" --is-public True --disk-format qcow2 --container-format bare --file /var/lib/libvirt/images/rhel7_x86_64.qcow2
  22. # glance image-list
  23. 打開firefox,連進 dashboard,使用 testuser/redhat
  24. 使用 Compute > Instance ,按下 Launch Instance 按鈕
  25. 輸入下列相關資料:
    參數名稱參數值
    Details
    • Instance Name : My sealed template
    • Flavor : m2.tiny
    • Instance count : 1
    • Instance boot source: Boot from image
    • Image name: myozimage
    Details
    • Key pair: Key2
    • Security groups: sec2
    Networking
    • Selected Networks: net1

    按下 Launch 按鈕
  26. 在 Actions 欄位中,打開下拉式選單,選擇 Associate Floating IP!
  27. 選擇 10.1.1.28 ,以及在 Port to be associated之下,選擇 My sealed template: 192.168.0.4,然後再按下 Associate 按鈕!
  28. # rm -f ~/.ssh/know_hosts
  29. # ssh root@10.1.1.28
  30. # ping 10.1.1.254
  31. # exit
  32. 若要移除 instance ,則在 Instance 子標籤中,選擇所有實體,按下 Terminate Instance 按鈕,再按下 Terminate Instance 按鈕確認即可!

設定 Swift 為 Glance 資料後端
  • 預設值中,Glance 以及快照均使用 /var/lib/glance/images 目錄來存放影像
  • 可修改設定檔 glance-api.conf 來指定使用 Swift 提供服務
    • 將 default_store 改成 swift
    • 在 [glance_store] 項目中,設定 glance.store.swift.Store 要設定
    • swift_store_auth_address 提定  Swift API 結束點
    • swift_store_user
    • swift_store_key
    • swift_store_create_container_on_put 要設定成 true
練習4:
  1. # source /root/keystonerc_admin
  2. # glance image-list
  3. # glance image-delete myozimage
  4. # glance image-delete small
  5. # glance image-list --all-tenants
  6. # glance image-delete 00000000-1111-abcd-dcba-0987654321fe
  7. # glance image-delete 22222222-1111-abcd-dcba-0987654321fe
  8. # cp /etc/glance/glance-api.conf /etc/glance/glance-api.conf.orig
  9. # crudini --set /etc/glance/glance-api.conf DEFAULT default_store swift
  10. # crudini --set /etc/glance/glance-api.conf glance_store stores glance.store.swift.Store
  11. # crudini --set /etc/glance/glance-api.conf glance_store swift_store_auth_address http://10.1.1.1:5000/v2.0/
  12. # crudini --set /etc/glance/glance-api.conf glance_store swift_store_user services:swift
  13. # crudini --set /etc/glance/glance-api.conf glance_store swift_store_key redhat
  14. # crudini --set /etc/glance/glance-api.conf glance_store swift_store_create_container_on_put true
  15. # cp /usr/share/glance/glance-api-dist-paste.ini /etc/glance/glance-api-paste.ini
  16. # cp /usr share/glance/glance-registry-dist-paste.ini /etc/glance/glance-registry-paste.ini
  17. # openstack-service restart glance
  18. # wget -N http://demo.example.com/pub/small.img
  19. # glance image-create --name small --disk-format qcow2 --container-format bare --file small.img
  20. # glance image-list
  21. 刪除方式:
    • glance image-delete small
    • crudini --set /etc/glance/glance-api.conf DEFAULT default_store file
    • crudini --set /etc/glance/glance-api.conf glance_store stores glance.store.filesystem.Store,glance.store.http.Store
    • openstack-service restart glance
設定 Ceph 為 Glance 資料後端
  • Glance 服務可以使用 Ceph 做為資料後端!
練習5:
  1. 登入已經裝好 Ceph 的主機
  2. # ceph osd pool create images 128
  3. # ceph auth get-or-create client.glance mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=images'
  4. 回到 Glance 主機
  5. # yum -y install python-rbd
  6. # mkdir /etc/ceph/
  7. # vim /etc/ceph/ceph.client.glance.keyring  ==> 將第3步驟的結果,複製到這裡!
  8. # chown glance:glance /etc/ceph/ceph.client.glance.keyring
  9. 把 Ceph 主機上的 /etc/ceph/ceph.conf 複製到 Glance 主機的  /etc/ceph/ceph.conf
  10. # cp /etc/glance/glance-api.conf /etc/glance/glance.conf.orig2
  11. # vim /etc/glance/glance-api.conf
    show_image_direct_url=True
    defalut_store = rbd
    [default_store]
    stores = glance.store.rbd.Store
    rbd_store_pool = images
    rbd_store_user = glance
    rbd_store_ceph_conf = /etc/ceph/ceph.conf
    rbd_store_chunk_size = 8
  12. # systemctl restart openstack-glance-api
  13. # source /root/keystonerc_admin
  14. # wet -N http://demo.example.com/pub/web.img
  15. # glance image-create --disk-format qcow2 --name cephweb --is-public True --container-format bare --file web.img
  16. # glance image-list
  17. 登入 Ceph 主機內
  18. # rados -p images ls
  19. 清除方式:
    • # glance image-delete cephweb
    • # crudini --set /etc/glance/glance-api.conf DEFAULT default_store file
    • # crudini --set /etc/glance/glance-api.conf glance_store stores glance.store.filesystem.Store,glance.store.http.Store
    • # openstack-service restart glance
除錯
練習6: