 4—— Neutron 私有網(wǎng)絡、Cinder 塊存儲與鏡像封裝部署)
1 私有網(wǎng)絡配置1.1 控制節(jié)點配置配置服務組件[rootcontroller ~]# vim /etc/neutron/neutron.conf[DEFAULT] service_plugins router allow_overlapping_ips True配置 Modular Layer 2 (ML2) 插件[rootcontroller ~]# vim /etc/neutron/plugins/ml2/ml2_conf.ini[ml2] type_drivers flat,vlan,vxlan tenant_network_types vxlan mechanism_drivers linuxbridge,l2population [ml2_type_vxlan] vni_ranges 1:1000配置 Linuxbridge 代理[rootcontroller ~]# vim /etc/neutron/plugins/ml2/linuxbridge_agent.ini[vxlan] enable_vxlan True local_ip 192.168.40.161 l2_population True配置layer3代理[rootcontroller ~]# vim /etc/neutron/l3_agent.ini[DEFAULT] interface_driver neutron.agent.linux.interface.BridgeInterfaceDriver external_network_bridge 重啟服務并驗證[rootcontroller ~]# systemctl restart neutron-server.service neutron-linuxbridge-agent.service[rootcontroller ~]# systemctl enable --now neutron-l3-agent.service[rootcontroller ~]# neutron agent-list1.2 計算節(jié)點配置配置 Linuxbridge 代理[rootcompute1 ~]# vim /etc/neutron/plugins/ml2/linuxbridge_agent.ini[vxlan] enable_vxlan True local_ip 192.168.40.162 l2_population True重啟服務[rootcompute1 ~]# systemctl restart neutron-linuxbridge-agent.service1.3 dashboard 配置[rootcontroller ~]# vim /etc/openstack-dashboard/local_settingsOPENSTACK_NEUTRON_NETWORK { enable_router: True, enable_quotas: True, enable_ipv6: True, enable_distributed_router: True, enable_ha_router: True, enable_lb: True, enable_firewall: True, enable_vpn: True, enable_fip_topology_check: True,[rootcontroller ~]# systemctl restart httpd.service memcached.service1.4 前端頁面測試http://192.168.40.161/dashboard登錄demo用戶創(chuàng)建私有網(wǎng)絡查看網(wǎng)絡拓撲登錄admin將 public 網(wǎng)絡設為外部網(wǎng)絡登錄demo添加路由器添加接口與私有網(wǎng)絡連接刪除一臺公有網(wǎng)絡的云主機在私有網(wǎng)絡添加一臺云主機查看網(wǎng)絡拓撲將 controller 的解析加入 Windows 的 hosts 文件中打開控制臺已分配IP綁定浮動IP遠程登錄測試2 塊存儲服務配置存儲節(jié)點添加一塊 50G 的新硬盤給 block1 節(jié)點同步部署資源和軟件源保證多節(jié)點環(huán)境配置一致[rootcompute1 ~]# scp -r /opt/mitaka/ block1:/opt/[rootcompute1 ~]# scp -r /etc/yum.repos.d/openstack.repo block1:/etc/yum.repos.d/2.1 控制節(jié)點配置創(chuàng)建數(shù)據(jù)庫[rootcontroller ~]# mysql -p123456MariaDB[(none)]CREATE DATABASE cinder;MariaDB[(none)]GRANT ALL PRIVILEGES ON cinder.* TOcinderlocalhostIDENTIFIED BYcinder;MariaDB[(none)]GRANT ALL PRIVILEGES ON cinder.* TOcinder%IDENTIFIED BYcinder;MariaDB[(none)]quit創(chuàng)建 cinder 用戶[rootcontroller ~]# . admin-openrc[rootcontroller ~]# openstack user create --domain default --password cinder cinder添加 admin 角色到 cinder 用戶上[rootcontroller ~]# openstack role add --project service --user cinder admin創(chuàng)建 cinder 和 cinderv2 服務實體[rootcontroller ~]# openstack service create --name cinder --description OpenStack Block Storage volume[rootcontroller ~]# openstack service create --name cinderv2 --description OpenStack Block Storage volumev2創(chuàng)建塊設備存儲服務的 API 入口點[rootcontroller ~]# openstack endpoint create --region RegionOne volume public http://controller:8776/v1/%\(tenant_id\)s[rootcontroller ~]# openstack endpoint create --region RegionOne volume internal http://controller:8776/v1/%\(tenant_id\)s[rootcontroller ~]# openstack endpoint create --region RegionOne volume admin http://controller:8776/v1/%\(tenant_id\)s[rootcontroller ~]# openstack endpoint create --region RegionOne volumev2 public http://controller:8776/v2/%\(tenant_id\)s[rootcontroller ~]# openstack endpoint create --region RegionOne volumev2 internal http://controller:8776/v2/%\(tenant_id\)s[rootcontroller ~]# openstack endpoint create --region RegionOne volumev2 admin http://controller:8776/v2/%\(tenant_id\)s安裝并配置組件[rootcontroller ~]# yum install openstack-cinder[rootcontroller ~]# vim /etc/cinder/cinder.conf[database] connection mysqlpymysql://cinder:cindercontroller/cinder [DEFAULT] rpc_backend rabbit auth_strategy keystone my_ip 192.168.40.161 [oslo_messaging_rabbit] rabbit_host controller rabbit_userid openstack rabbit_password openstack [keystone_authtoken] auth_uri http://controller:5000 auth_url http://controller:35357 memcached_servers controller:11211 auth_type password project_domain_name default user_domain_name default project_name service username cinder password cinder [oslo_concurrency] lock_path /var/lib/cinder/tmp初始化塊設備服務的數(shù)據(jù)庫[rootcontroller ~]# su -s /bin/sh -c cinder-manage db sync cinder配置計算節(jié)點[rootcontroller ~]# vim /etc/nova/nova.conf[cinder] os_region_name RegionOne重啟計算服務啟動塊設備存儲服務并將其配置為開機自啟[rootcontroller ~]# systemctl restart openstack-nova-api.service[rootcontroller ~]# systemctl enable --now openstack-cinder-api.service openstack-cinder-scheduler.service驗證[rootcontroller ~]# cinder service-list2.2 存儲節(jié)點配置安裝 LVM 包啟動 LVM 的 metadata 服務并且設置該服務隨系統(tǒng)啟動[rootblock1 ~]# yum install lvm2[rootblock1 ~]# systemctl enable --now lvm2-lvmetad.service創(chuàng)建LVM 物理卷 /dev/sdb 和 LVM 卷組 cinder-volumes[rootblock1 ~]# pvcreate /dev/sdb[rootblock1 ~]# vgcreate cinder-volumes /dev/sdbLVM 過濾器只允許 LVM 識別系統(tǒng)盤 sda 和 Cinder 數(shù)據(jù)盤 sdb屏蔽其他所有磁盤防止宿主機誤識別虛擬機內(nèi)部 LVM避免數(shù)據(jù)損壞[rootblock1 ~]# vim /etc/lvm/lvm.conf安裝并配置組件[rootblock1 ~]# yum install openstack-cinder targetcli python-keystone[rootblock1 ~]# vim /etc/cinder/cinder.conf[database] connection mysqlpymysql://cinder:cindercontroller/cinder [DEFAULT] rpc_backend rabbit auth_strategy keystone my_ip 192.168.30.163 enabled_backends lvm glance_api_servers http://controller:9292 [oslo_messaging_rabbit] rabbit_host controller rabbit_userid openstack rabbit_password openstack [keystone_authtoken] auth_uri http://controller:5000 auth_url http://controller:35357 memcached_servers controller:11211 auth_type password project_domain_name default user_domain_name default project_name service username cinder password cinder [lvm] volume_driver cinder.volume.drivers.lvm.LVMVolumeDriver volume_group cinder-volumes iscsi_protocol iscsi iscsi_helper lioadm # 此部分在原文件中沒有加在文件最后 [oslo_concurrency] lock_path /var/lib/cinder/tmp啟動塊存儲卷服務及其依賴的服務并將其配置為隨系統(tǒng)啟動[rootblock1 ~]# systemctl enable --now openstack-cinder-volume.service target.service驗證[rootcontroller ~]# cinder service-list2.3 前端頁面測試在 demo 用戶下可以看見卷創(chuàng)建云硬盤連接到云主機 esc-2遠程連接查看不分區(qū)直接格式化$sudomkfs.ext4 /dev/vdbumount 卸載之后分離云硬盤擴容到10G重新連接到 ecs-2在遠程查看云硬盤后臺擴大容量后由于未分區(qū)虛擬機內(nèi)部可直接用resize2fs在線擴容 ext 文件系統(tǒng)才能讓 df 識別到擴容后的全部磁盤空間卸載、分離后為云硬盤創(chuàng)建快照用快照創(chuàng)建硬盤3 封裝及使用鏡像參考文檔https://docs.openstack.org/image-guide/create-images-manually-example-centos-image.html#download-a-centos-install-isoKVMKernel?based Virtual Machine基于內(nèi)核的虛擬機是Linux 內(nèi)核自帶的虛擬化技術屬于 Type?1 裸金屬虛擬化內(nèi)核變成虛擬機監(jiān)控器免費開源Rocky Linux、CentOS、Ubuntu 都原生自帶。簡單理解讓一臺物理 Linux 機器可以同時跑很多臺獨立虛擬機就像 VMware Workstation但跑在 Linux 服務器上服務器虛擬化行業(yè)大量使用。新建虛擬機封裝流程裝好系統(tǒng)→預配置軟件→清理所有唯一標識機器 ID、ssh 密鑰、網(wǎng)卡規(guī)則、日志、歷史→關機→做成 qcow2 模板鏡像封裝完成后絕對不能再開機安裝完成后開啟按照文檔要求進行配置[rootbogon ~]# cd /etc/yum.repos.d/[rootbogon yum.repos.d]# rm -fr *[rootbogon yum.repos.d]# lsCentOS-Base.repo# 從控制節(jié)點拷貝[rootbogon ~]# yum install -y vim bash-completion chrony[rootbogon ~]# vim /etc/chrony.conf[rootbogon ~]# systemctl enable --now chronyd[rootbogon ~]# systemctl disable --now firewalld[rootbogon ~]# yum install acpid[rootbogon ~]# systemctl enable acpid[rootbogon ~]# yum install cloud-init[rootbogon ~]# yum install cloud-utils-growpart[rootbogon ~]# cd /etc/ssh/[rootbogon ssh]# rm -f ssh_host_*[rootbogon ~]# vim /boot/grub2/grub.cfg[rootbogon ssh]# grub2-mkconfig -o /boot/grub2/grub.cfgpoweroff 關機導出一定要導出為 ova 格式OVF是一套文件不是單個文件.ovf(虛擬機配置) .vmdk(磁盤) .mf(校驗文件)好幾個散文件拷貝的時候必須把 3 個文件全部一起復制少一個就壞掉。OVA本質(zhì)就是把 ovfvmdkmf 全部打包壓縮成單個 tar 壓縮包。新開虛擬機 server2以 rocky 9.6 為鏡像上傳打包好的.ova文件把 VMware 的 ova 模板轉(zhuǎn)換成 KVM (qemu?qcow2) 虛擬機鏡像輸出到本地目錄[rootserver2 ~]# yum install -y guestfs-tools.x86_64 virt-v2v.x86_64[rootserver2 ~]# mkdir /opt/v2v[rootserver2 ~]# virt-v2v -i ova demo.ova -o local -of qcow2 -os /opt/v2v/libvirt 虛擬化服務未啟動Rocky 9 新版本 libvirt 是拆分多守護進程模式不再是傳統(tǒng)單一libvirtd拆分成virtqemud、virtnetworkd、virtstoraged、virtsecretd分別負責 QEMU 虛擬機、網(wǎng)絡、存儲、密鑰管理開啟對應服務即可[rootserver2 ~]# systemctl list-unit-files | grep virt[rootserver2 ~]# systemctl start virtqemud virtnetworkd virtstoraged virtsecretd[rootserver2 ~]# virt-v2v -i ova demo.ova -o local -of qcow2 -os /opt/v2v/輸出 qcow2 格式的鏡像成功清理qcow2鏡像里主機唯一標識、日志和密鑰把它處理成可批量克隆的虛擬機模板母盤[rootserver2 ~]# cd /opt/v2v/[rootserver2 v2v]# virt-sysprep -a demo-sda[rootserver2 v2v]# virt-sparsify --compress demo-sda demo.qcow2導出創(chuàng)建鏡像創(chuàng)建云主機類型啟動云主機實例啟動實例可看到引導記錄打開控制臺系統(tǒng)會自動創(chuàng)建一個用戶 centos綁定浮動 VIP遠程連接查看磁盤將 my_disk 連接到 ecs-3分區(qū)格式化后掛載如若要給硬盤擴容需先取消掛載分離云硬盤再擴容擴容成功后重新連接到云主機與 2.3 小節(jié)中的擴容不同由于磁盤已經(jīng)分區(qū)需要刪除分區(qū)重新分區(qū)并掛載[rootecs-3 ~]# fdisk /dev/vdb[rootecs-3 ~]# partprobe[rootecs-3 ~]# mount /dev/vdb1 /data/由于已經(jīng)格式化需要在線擴容文件系統(tǒng)[rootecs-3 ~]# xfs_growfs /dev/vdb1