
在公共网络基础上更改为私有网络在controller节点上安装并配置网络组件安装组件# yum install openstack-neutron openstack-neutron-ml2 \ openstack-neutron-linuxbridge ebtables配置服务组件。编辑/etc/neutron/neutron.conf文件并完成如下操作在[database]部分配置数据库访问[database] connection mysqlpymysql://neutron:NEUTRON_DBPASScontroller/neutron使用你设置的数据库密码替换NEUTRON_DBPASS。在[DEFAULT]部分启用 Modular Layer 2 (ML2) 插件、路由服务和重叠的 IP 地址[DEFAULT] core_plugin ml2 service_plugins router allow_overlapping_ips True在[DEFAULT]和[oslo_messaging_rabbit]部分配置 RabbitMQ 消息队列的连接[DEFAULT] rpc_backend rabbit [oslo_messaging_rabbit] rabbit_host controller rabbit_userid openstack rabbit_password RABBIT_PASS用你在 RabbitMQ 中为openstack选择的密码替换RABBIT_PASS。在[DEFAULT]和[keystone_authtoken]部分配置认证服务访问[DEFAULT] auth_strategy keystone [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 neutron password NEUTRON_PASS将NEUTRON_PASS替换为你在认证服务中为neutron用户选择的密码。在[keystone_authtoken]中注释或者删除其他选项。在[DEFAULT]和[nova]部分配置网络服务来通知计算节点的网络拓扑变化[DEFAULT] notify_nova_on_port_status_changes True notify_nova_on_port_data_changes True [nova] auth_url http://controller:35357 auth_type password project_domain_name default user_domain_name default region_name RegionOne project_name service username nova password NOVA_PASS使用你在身份认证服务中设置的nova用户的密码替换NOVA_PASS。在[oslo_concurrency]部分配置锁路径[oslo_concurrency] lock_path /var/lib/neutron/tmp配置 Modular Layer 2 (ML2) 插件ML2 插件使用 Linuxbridge 机制来为实例创建 layer-2 虚拟网络基础设施。编辑/etc/neutron/plugins/ml2/ml2_conf.ini文件并完成以下操作在[ml2]部分启用 flat、VLAN 以及 VXLAN 网络[ml2] type_drivers flat,vlan,vxlan在[ml2]部分启用 VXLAN 私有网络[ml2] tenant_network_types vxlan在[ml2]部分启用 Linuxbridge 和 layer-2 机制[ml2] mechanism_drivers linuxbridge,l2population在[ml2]部分启用端口安全扩展驱动[ml2] extension_drivers port_security在[ml2_type_flat]部分配置公共虚拟网络为 flat 网络[ml2_type_flat] flat_networks provider在[ml2_type_vxlan]部分为私有网络配置 VXLAN 网络识别的网络范围[ml2_type_vxlan] vni_ranges 1:1000在[securitygroup]部分启用 ipset 增加安全组规则的高效性[securitygroup] enable_ipset True配置 Linuxbridge 代理Linuxbridge 代理为实例建立 layer-2 虚拟网络并且处理安全组规则。编辑/etc/neutron/plugins/ml2/linuxbridge_agent.ini文件并且完成以下操作在[linux_bridge]部分将公共虚拟网络和公共物理网络接口对应起来[linux_bridge] physical_interface_mappings provider:PROVIDER_INTERFACE_NAME将PROVIDER_INTERFACE_NAME替换为底层的物理公共网络接口。在[vxlan]部分启用 VXLAN 覆盖网络配置覆盖网络的物理网络接口的 IP 地址启用 layer-2 population[vxlan] enable_vxlan True local_ip OVERLAY_INTERFACE_IP_ADDRESS l2_population True将OVERLAY_INTERFACE_IP_ADDRESS替换为处理覆盖网络的底层物理网络接口的 IP 地址。这个示例架构中使用管理网络接口与其他节点建立流量隧道因此将OVERLAY_INTERFACE_IP_ADDRESS替换为控制节点的管理网络的 IP 地址。在[securitygroup]部分启用安全组并配置 Linuxbridge iptables firewall driver[securitygroup] enable_security_group True firewall_driver neutron.agent.linux.iptables_firewall.IptablesFirewallDriver配置 layer-3 代理Layer-3 代理为私有虚拟网络提供路由和 NAT 服务。编辑/etc/neutron/l3_agent.ini文件并完成以下操作在[DEFAULT]部分配置 Linuxbridge 接口驱动和外部网络网桥[DEFAULT] interface_driver neutron.agent.linux.interface.BridgeInterfaceDriver external_network_bridge external_network_bridge选项特意设置成缺省值这样就可以在一个代理上允许多种外部网络。配置 DHCP 代理DHCP 代理为虚拟网络提供 DHCP 服务。编辑/etc/neutron/dhcp_agent.ini文件并完成下面的操作在[DEFAULT]部分配置 Linuxbridge 驱动接口、DHCP 驱动并启用隔离元数据这样在公共网络上的实例就可以通过网络来访问元数据[DEFAULT] interface_driver neutron.agent.linux.interface.BridgeInterfaceDriver dhcp_driver neutron.agent.linux.dhcp.Dnsmasq enable_isolated_metadata True[rootcontroller ~]# systemctl restart neutron-server.service neutron-linuxbridge-agent.service [rootcontroller ~]# systemctl enable --now neutron-l3-agent.service Created symlink from /etc/systemd/system/multi-user.target.wants/neutron-l3-agent.service to /usr/lib/systemd/system/neutron-l3-agent.service.[rootcontroller ~]# neutron agent-list ------------------------------------------------------------------------------------------------------ | id | agent_type | host | availability_zone | alive | admin_state_up | binary | ------------------------------------------------------------------------------------------------------ | 12d279f7-c8b0- | Linux bridge | compute1 | | :-) | True | neutron- | | 4250-aff1-fe98 | agent | | | | | linuxbridge- | | cb9f6374 | | | | | | agent | | 42aef9c9-284a- | Metadata agent | controller | | :-) | True | neutron- | | 40b5-b776-c835 | | | | | | metadata-agent | | 207bd3cb | | | | | | | | c5c93a3f-b013 | DHCP agent | controller | nova | :-) | True | neutron-dhcp- | | -4a3b-ba13-ad2 | | | | | | agent | | 29694bb20 | | | | | | | | cfde9de3-426b- | L3 agent | controller | nova | :-) | True | neutron-l3-age | | 46e1-8763-3241 | | | | | | nt | | 2e961469 | | | | | | | | fdfad1c1-9615 | Linux bridge | controller | | :-) | True | neutron- | | -488c-a7b8-891 | agent | | | | | linuxbridge- | | aa38fe838 | | | | | | agent | ------------------------------------------------------------------------------------------------------计算节点[rootcompute1 ~]# vim /etc/neutron/plugins/ml2/linuxbridge_agent.ini [vxlan] enable_vxlan True local_ip OVERLAY_INTERFACE_IP_ADDRESS #改为计算节点的ip l2_population True [rootcompute1 ~]# systemctl restart neutron-linuxbridge-agent.service更改dashboard选项[rootcontroller ~]# vim /etc/openstack-dashboard/local_settingssystemctl restart httpd.service memcached.servicedemo登录创建私有网络退出demo切到admin登录编辑public网络新建路由创建云主机除了网络选择私有之外别的都和共有网一样绑定浮动ip之后外网也可以访问[rootcontroller ~]# ssh cirros192.168.150.104 $ sudo mkfs.ext4 /dev/vdb $ sudo mkdir /data $ sudo mount /dev/vdb /data/ $ cd /data/ $ ls lostfound卸载后扩容$ cd $ sudo umount /data/管理连接中分离刚刚的云硬盘然后扩展再次连接到云主机重新挂载云硬盘并在线扩容文件系统$ sudo mount /dev/vdb /data/ $ sudo resize2fs /dev/vdb resize2fs 1.42.2 (27-Mar-2012) Filesystem at /dev/vdb is mounted on /data; on-line resizing required old_desc_blocks 1, new_desc_blocks 1 Performing an on-line resize of /dev/vdb to 2621440 (4k) blocks. The filesystem on /dev/vdb is now 2621440 blocks long.扩容完成后使用 df 命令验证文件系统大小是否已更新。$ df -h /data Filesystem Size Used Avail Use% Mounted on /dev/vdb 10G 33M 9.9G 1% /data云主机封装创建虚拟机1核1g内存虚拟磁盘存储为单个文件安装设置密码先不创建普通用户设置网卡为eth0关掉防火墙和selinux配置时间同步yum源关掉NetworkManager将网卡配置文件改为如下[rootlocalhost ~]# cd /etc/sysconfig/network-scripts/ [rootlocalhost network-scripts]# mv ifcfg-ens32 ifcfg-eth0 [rootlocalhost network-scripts]# vim ifcfg-eth0yum install -y acpid yum install -y cloud-init yum install -y cloud-utils-growpartvim /etc/default/grub然后再次在/boot/grub2/grub.cfg中加入net.ifnames0[rootlocalhost ~]# cd /etc/ssh [rootlocalhost ssh]# ls moduli sshd_config ssh_host_ecdsa_key.pub ssh_host_ed25519_key.pub ssh_host_rsa_key.pub ssh_config ssh_host_ecdsa_key ssh_host_ed25519_key ssh_host_rsa_key [rootlocalhost ssh]# rm -fr ssh_host_* [rootlocalhost ssh]# ls moduli ssh_config sshd_config [rootlocalhost ssh]# poweroff新开一个rocky9虚拟机将这个导出的文件拖进去在 Rocky9 虚拟机中安装镜像转换所需的工具[rootserver1 ~]# dnf install -y guestfs-tools virt-v2v virtio-win.noarch创建转换输出目录并将导出的 OVA 镜像转换为 qcow2 格式[rootserver1 ~]# mkdir /opt/v2v [rootserver1 ~]# virt-v2v -i ova demo.ova -o local -of qcow2 -os /opt/v2v/转换完成后进入输出目录使用 virt-sysprep 清理镜像中的敏感信息如 SSH 主机密钥、机器 ID 等再使用 virt-sparsify 对镜像进行压缩瘦身[rootserver1 v2v]# virt-sysprep -a demo-sda [rootserver1 v2v]# virt-sparsify --compress demo-sda demo.qcow2把压缩后的文件拖到windows跟之前demo.ova一个路径创建云主机绑定浮动ip控制节点ssh访问