尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

OpenStack 私有云实战 4—— Neutron 私有网络、Cinder 块存储与镜像封装部署

OpenStack 私有云实战 4—— Neutron 私有网络、Cinder 块存储与镜像封装部署 1 私有网络配置1.1 控制节点配置配置服务组件[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 计算节点配置配置 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用户创建私有网络查看网络拓扑登录admin将 public 网络设为外部网络登录demo添加路由器添加接口与私有网络连接删除一台公有网络的云主机在私有网络添加一台云主机查看网络拓扑将 controller 的解析加入 Windows 的 hosts 文件中打开控制台已分配IP绑定浮动IP远程登录测试2 块存储服务配置存储节点添加一块 50G 的新硬盘给 block1 节点同步部署资源和软件源保证多节点环境配置一致[rootcompute1 ~]# scp -r /opt/mitaka/ block1:/opt/[rootcompute1 ~]# scp -r /etc/yum.repos.d/openstack.repo block1:/etc/yum.repos.d/2.1 控制节点配置创建数据库[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创建 cinder 用户[rootcontroller ~]# . admin-openrc[rootcontroller ~]# openstack user create --domain default --password cinder cinder添加 admin 角色到 cinder 用户上[rootcontroller ~]# openstack role add --project service --user cinder admin创建 cinder 和 cinderv2 服务实体[rootcontroller ~]# openstack service create --name cinder --description OpenStack Block Storage volume[rootcontroller ~]# openstack service create --name cinderv2 --description OpenStack Block Storage volumev2创建块设备存储服务的 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初始化块设备服务的数据库[rootcontroller ~]# su -s /bin/sh -c cinder-manage db sync cinder配置计算节点[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 存储节点配置安装 LVM 包启动 LVM 的 metadata 服务并且设置该服务随系统启动[rootblock1 ~]# yum install lvm2[rootblock1 ~]# systemctl enable --now lvm2-lvmetad.service创建LVM 物理卷 /dev/sdb 和 LVM 卷组 cinder-volumes[rootblock1 ~]# pvcreate /dev/sdb[rootblock1 ~]# vgcreate cinder-volumes /dev/sdbLVM 过滤器只允许 LVM 识别系统盘 sda 和 Cinder 数据盘 sdb屏蔽其他所有磁盘防止宿主机误识别虚拟机内部 LVM避免数据损坏[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启动块存储卷服务及其依赖的服务并将其配置为随系统启动[rootblock1 ~]# systemctl enable --now openstack-cinder-volume.service target.service验证[rootcontroller ~]# cinder service-list2.3 前端页面测试在 demo 用户下可以看见卷创建云硬盘连接到云主机 esc-2远程连接查看不分区直接格式化$sudomkfs.ext4 /dev/vdbumount 卸载之后分离云硬盘扩容到10G重新连接到 ecs-2在远程查看云硬盘后台扩大容量后由于未分区虚拟机内部可直接用resize2fs在线扩容 ext 文件系统才能让 df 识别到扩容后的全部磁盘空间卸载、分离后为云硬盘创建快照用快照创建硬盘3 封装及使用镜像参考文档https://docs.openstack.org/image-guide/create-images-manually-example-centos-image.html#download-a-centos-install-isoKVMKernel‑based Virtual Machine基于内核的虚拟机是Linux 内核自带的虚拟化技术属于 Type‑1 裸金属虚拟化内核变成虚拟机监控器免费开源Rocky Linux、CentOS、Ubuntu 都原生自带。简单理解让一台物理 Linux 机器可以同时跑很多台独立虚拟机就像 VMware Workstation但跑在 Linux 服务器上服务器虚拟化行业大量使用。新建虚拟机封装流程装好系统→预配置软件→清理所有唯一标识机器 ID、ssh 密钥、网卡规则、日志、历史→关机→做成 qcow2 模板镜像封装完成后绝对不能再开机安装完成后开启按照文档要求进行配置[rootbogon ~]# cd /etc/yum.repos.d/[rootbogon yum.repos.d]# rm -fr *[rootbogon yum.repos.d]# lsCentOS-Base.repo# 从控制节点拷贝[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本质就是把 ovfvmdkmf 全部打包压缩成单个 tar 压缩包。新开虚拟机 server2以 rocky 9.6 为镜像上传打包好的.ova文件把 VMware 的 ova 模板转换成 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 是拆分多守护进程模式不再是传统单一libvirtd拆分成virtqemud、virtnetworkd、virtstoraged、virtsecretd分别负责 QEMU 虚拟机、网络、存储、密钥管理开启对应服务即可[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导出创建镜像创建云主机类型启动云主机实例启动实例可看到引导记录打开控制台系统会自动创建一个用户 centos绑定浮动 VIP远程连接查看磁盘将 my_disk 连接到 ecs-3分区格式化后挂载如若要给硬盘扩容需先取消挂载分离云硬盘再扩容扩容成功后重新连接到云主机与 2.3 小节中的扩容不同由于磁盘已经分区需要删除分区重新分区并挂载[rootecs-3 ~]# fdisk /dev/vdb[rootecs-3 ~]# partprobe[rootecs-3 ~]# mount /dev/vdb1 /data/由于已经格式化需要在线扩容文件系统[rootecs-3 ~]# xfs_growfs /dev/vdb1
返回列表