高可用OpenStack(Queen版)集群-16.Nova集成Ceph


參考文檔:

  1. Install-guide:https://docs.openstack.org/install-guide/
  2. OpenStack High Availability Guide:https://docs.openstack.org/ha-guide/index.html
  3. 理解Pacemaker:http://www.cnblogs.com/sammyliu/p/5025362.html

二十.Nova集成Ceph

1. 配置ceph.conf

# 如果需要從ceph rbd中啟動虛擬機,必須將ceph配置為nova的臨時后端;
# 推薦在計算節點的配置文件中啟用rbd cache功能;
# 為了便於故障排查,配置admin socket參數,這樣每個使用ceph rbd的虛擬機都有1個socket將有利於虛擬機性能分析與故障解決;
# 相關配置只涉及全部計算節點ceph.conf文件的[client]與[client.cinder]字段,以compute01節點為例
[root@compute01 ~]# vim /etc/ceph/ceph.conf
[client]
rbd cache = true
rbd cache writethrough until flush = true
admin socket = /var/run/ceph/guests/$cluster-$type.$id.$pid.$cctid.asok
log file = /var/log/qemu/qemu-guest-$pid.log
rbd concurrent management ops = 20

[client.cinder]
keyring = /etc/ceph/ceph.client.cinder.keyring

# 創建ceph.conf文件中指定的socker與log相關的目錄,並更改屬主
[root@compute01 ~]# mkdir -p /var/run/ceph/guests/ /var/log/qemu/
[root@compute01 ~]# chown qemu:libvirt /var/run/ceph/guests/ /var/log/qemu/ 

2. 配置nova.conf

# 在全部計算節點配置nova后端使用ceph集群的vms池,以compute01節點為例
[root@compute01 ~]# vim /etc/nova/nova.conf
[libvirt]
images_type = rbd
images_rbd_pool = vms
images_rbd_ceph_conf = /etc/ceph/ceph.conf
rbd_user = cinder
# uuid前后一致
rbd_secret_uuid = 10744136-583f-4a9c-ae30-9bfb3515526b
disk_cachemodes="network=writeback"
live_migration_flag="VIR_MIGRATE_UNDEFINE_SOURCE,VIR_MIGRATE_PEER2PEER,VIR_MIGRATE_LIVE,VIR_MIGRATE_PERSIST_DEST,VIR_MIGRATE_TUNNELLED"
# 禁用文件注入
inject_password = false
inject_key = false
inject_partition = -2
# 虛擬機臨時root磁盤discard功能,”unmap”參數在scsi接口類型磁盤釋放后可立即釋放空間
hw_disk_discard = unmap
# 原有配置
virt_type=kvm

# 變更配置文件,重啟計算服務
[root@compute01 ~]# systemctl restart libvirtd.service openstack-nova-compute.service
[root@compute01 ~]# systemctl status libvirtd.service openstack-nova-compute.service 

3. 配置live-migration

1)修改/etc/libvirt/libvirtd.conf

# 在全部計算節點操作,以compute01節點為例;
# 以下給出libvirtd.conf文件的修改處所在的行num
[root@compute01 ~]# egrep -vn "^$|^#" /etc/libvirt/libvirtd.conf 
# 取消以下三行的注釋
22:listen_tls = 0
33:listen_tcp = 1
45:tcp_port = "16509"
# 取消注釋,並修改監聽端口
55:listen_addr = "172.30.200.41"
# 取消注釋,同時取消認證
158:auth_tcp = "none" 

2)修改/etc/sysconfig/libvirtd

# 在全部計算節點操作,以compute01節點為例;
# 以下給出libvirtd文件的修改處所在的行num
[root@compute01 ~]# egrep -vn "^$|^#" /etc/sysconfig/libvirtd
# 取消注釋
9:LIBVIRTD_ARGS="--listen" 

3)設置iptables

# live-migration時,源計算節點主動連接目的計算節點tcp16509端口,可以使用”virsh -c qemu+tcp://{node_ip or node_name}/system”連接目的計算節點測試;
# 遷移前后,在源目計算節點上的被遷移instance使用tcp49152~49161端口做臨時通信;
# 因虛擬機已經啟用iptables相關規則,此時切忌隨意重啟iptables服務,盡量使用插入的方式添加規則;
# 同時以修改配置文件的方式寫入相關規則,切忌使用”iptables saved”命令;
# 在全部計算節點操作,以compute01節點為例
[root@compute01 ~]# iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport 16509 -j ACCEPT
[root@compute01 ~]# iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport 49152:49161 -j ACCEPT 

4)重啟服務

# libvirtd與nova-compute服務都需要重啟
[root@compute01 ~]# systemctl restart libvirtd.service openstack-nova-compute.service

# 查看服務
[root@compute01 ~]# netstat -tunlp | grep 16509 

4. 驗證

如果使用ceph提供的volume做啟動盤,即虛擬機運行鏡像文件存放在共享存儲上,此時可以方便地進行live-migration。

1)創建基於ceph存儲的bootable存儲卷

# 當nova從rbd啟動instance時,鏡像格式必須是raw格式,否則虛擬機在啟動時glance-api與cinder均會報錯;
# 首先進行格式轉換,將*.img文件轉換為*.raw文件
[root@controller01 ~]# qemu-img convert -f qcow2 -O raw ~/cirros-0.3.5-x86_64-disk.img ~/cirros-0.3.5-x86_64-disk.raw

# 生成raw格式鏡像
[root@controller01 ~]# openstack image create "cirros-raw" \
--file ~/cirros-0.3.5-x86_64-disk.raw \
--disk-format raw --container-format bare \
--public 

# 使用新鏡像創建bootable卷
[root@controller01 ~]# cinder create --image-id a95cee9a-4493-42ae-98e9-e5d34e4dee7a --volume-type ceph --name ceph-bootable1 2

# 查看新創建的bootable卷
[root@controller01 ~]# cinder list 

# 從基於ceph后端的volumes新建實例;
# “--boot-volume”指定具有”bootable”屬性的卷,啟動后,虛擬機運行在volumes卷
[root@controller01 ~]# nova boot --flavor m1.tiny \
 --boot-volume db0f83c0-14f7-4548-8807-4b1f593630a4 \
 --nic net-id=91e78b9c-cfcd-4af2-851a-a27839edf571 \
 --security-group default \
 cirros-cephvolumes-instance1 

2)從ceph rbd啟動虛擬機

# --nic:net-id指網絡id,非subnet-id;
# 最后“cirros-cephrbd-instance1”為instance名
[root@controller01 ~]# nova boot --flavor m1.tiny --image cirros-raw --nic net-id=91e78b9c-cfcd-4af2-851a-a27839edf571 --security-group default cirros-cephrbd-instance1

# 查詢生成的instance
[root@controller01 ~]# nova list 

# 查看生成的instance的詳細信息
[root@controller01 ~]# nova show 7648251c-62a1-4f98-ba3f-e5f30f5804b4 

# 驗證是否從ceph rbd啟動
[root@controller01 ~]# rbd ls vms 

3)對rbd啟動的虛擬機進行live-migration

# 使用”nova show 7648251c-62a1-4f98-ba3f-e5f30f5804b4”得知從rbd啟動的instance在遷移前位於compute02節點;
# 或使用”nova hypervisor-servers compute02”進行驗證;
[root@controller01 ~]# nova live-migration cirros-cephrbd-instance1 compute01

# 遷移過程中可查看狀態
[root@controller01 ~]# nova list 

# 遷移完成后,查看instacn所在節點;
# 或使用”nova show 7648251c-62a1-4f98-ba3f-e5f30f5804b4”命令查看”hypervisor_hostname”
[root@controller01 ~]# nova hypervisor-servers compute02
[root@controller01 ~]# nova hypervisor-servers compute01 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM