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

參考文檔:html

  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。node

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 

相關文章
相關標籤/搜索