参考地址:https://docs.openstack.org/neutron/rocky/install/controller-install-rdo.html
一、neutron的组件
参考地址:https://www.lmlphp.com/user/10662/article/item/536915/

二、network
local:只能与位于同一个宿主机内的虚拟机通信
flat:虚拟机可以跨宿主机通信,必须在同一个网络段
vlan:划分网络,用于网络隔离
vxlan:基于隧道模式,overlay网络,将二层的mac地址封装在三层传输
gre:使用IP包而非UDP包进行封装
三、subnet(子网)
subnetA-a 10.10.1.0/24 [起:10.10.1.0 止:10.10.1.50]
subnetA-b 10.10.2.0/24 [起:10.10.2.0 止:10.10.2.50] (正确)
subnetA-c 10.10.1.0/24[起:10.10.1.51止:10.10.1.100] (错误,在同一network是不能有cidr重叠,不同network可以)
四、port
可以看作虚拟交换机的一个端口,port定义了MAC地址和IP地址
五、neutron的功能
二层交换机、三层路由、负载均衡、防火墙
六、架构模式
方案一:控制节点+计算节点
控制节点:neutron server、core plugin的agent、service plugin的agent
计算节点:core plugin的agent,负载提供二层网络功能
方案二:控制节点+网络节点+计算节点
控制节点:部署neutron server服务
网络节点:部署core plugin的agent和service plugin的agent
计算节点:部署core plugin 的agent,负责二层的网络功能
七、部署安装-部署控制节点创建数据库
[root@mon01 ~]# mysql -uroot -p
MariaDB [(none)]> CREATE DATABASE neutron;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' IDENTIFIED BY 'NEUTRON_DBPASS';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' IDENTIFIED BY 'NEUTRON_DBPASS';
创建用户
[root@mon01 ~]# openstack user create --domain default --password=neutron neutron
[root@mon01 ~]# openstack role add --project service --user neutron admin
创建服务端点
[root@mon01 ~(keystone_admin)]# openstack service create --name neutron --description "OpenStack Networking" network
[root@mon01 ~(keystone_admin)]# openstack service create --name neutron --description "OpenStack Networking" network
[root@mon01 ~(keystone_admin)]# openstack endpoint create --region RegionOne network public http://mon01:9696
[root@mon01 ~(keystone_admin)]# openstack endpoint create --region RegionOne network internal http://mon01:9696
[root@mon01 ~(keystone_admin)]# openstack endpoint create --region RegionOne network admin http://mon01:9696
配置含有路由的元数据agent
[root@mon01 ~(keystone_admin)]# yum install openstack-neutron openstack-neutron-ml2 openstack-neutron-linuxbridge ebtables -y
编辑配置文件/etc/neutron/neutron.conf
[DEFAULT] core_plugin = ml2 service_plugins = router allow_overlapping_ips = true transport_url = rabbit://openstack:admin@mon01 auth_strategy = keystone notify_nova_on_port_status_changes = true notify_nova_on_port_data_changes = true [agent] [cors] [database] connection = mysql+pymysql://neutron:NEUTRON_DBPASS@mon01/neutron [keystone_authtoken] www_authenticate_uri = http://mon01:5000 auth_url = http://mon01:5000 memcached_servers = mon01:11211 auth_type = password project_domain_name = default user_domain_name = default project_name = service username = neutron password = neutron [matchmaker_redis] [nova] auth_url = http://mon01:5000 auth_type = password project_domain_name = default user_domain_name = default region_name = RegionOne project_name = service username = nova password = nova [oslo_concurrency] lock_path = /var/lib/neutron/tmp [oslo_messaging_amqp] [oslo_messaging_kafka] [oslo_messaging_notifications] [oslo_messaging_rabbit] [oslo_messaging_zmq] [oslo_middleware] [oslo_policy] [quotas] [ssl]
编辑ml2的插件文件/etc/neutron/plugins/ml2/ml2_conf.ini
[DEFAULT] [l2pop] [ml2] type_drivers = flat,vlan,vxlan tenant_network_types = vxlan mechanism_drivers = linuxbridge,l2population extension_drivers = port_security [ml2_type_flat] flat_networks = provider [ml2_type_geneve] [ml2_type_gre] [ml2_type_vlan] vni_ranges = 1:1000 [ml2_type_vxlan] [securitygroup] enable_ipset = true
配置linux bridge的agent
[DEFAULT] [agent] [linux_bridge] physical_interface_mappings = provider:ens36 [network_log] [securitygroup] enable_security_group = true firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver [vxlan] enable_vxlan = true local_ip = 192.168.40.120 l2_population = true
永久开启路由转发-编辑配置文件/etc/sysctl.conf
net.bridge.bridge-nf-call-iptables=1 net.bridge.bridge-nf-call-ip6tables=1
[root@mon01 ~(keystone_admin)]# sysctl -p
配置l3 agent文件/etc/neutron/l3_agent.ini
[DEFAULT] interface_driver = linuxbridge [agent] [ovs]
配置DHCP的agent文件/etc/neutron/dhcp_agent.ini
[DEFAULT] interface_driver = linuxbridge dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq enable_isolated_metadata = true [agent] [ovs]
配置元数据的agent文件/etc/neutron/metadata_agent.ini
[DEFAULT] nova_metadata_host = mon01 metadata_proxy_shared_secret = METADATA_SECRET [agent] [cache]
配置计算服务使用网络服务
编辑/etc/nova/nova.conf 文件中的neutron模块
[neutron] url = http://mon01:9696 auth_url = http://mon01:5000 auth_type = password project_domain_name = default user_domain_name = default region_name = RegionOne project_name = service username = neutron password = neutron service_metadata_proxy = true metadata_proxy_shared_secret = METADATA_SECRET
完成安装
[root@mon01 ~(keystone_admin)]# ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini
[root@mon01 ~(keystone_admin)]# su -s /bin/sh -c "neutron-db-manage --config-file /etc/neutron/neutron.conf \
--config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade head" neutron
[root@mon01 ~(keystone_admin)]# systemctl restart openstack-nova-api.service
[root@mon01 ~(keystone_admin)]# systemctl enable neutron-server.service neutron-linuxbridge-agent.service neutron-dhcp-agent.service neutron-metadata-agent.service
[root@mon01 ~(keystone_admin)]# systemctl start neutron-server.service neutron-linuxbridge-agent.service neutron-dhcp-agent.service neutron-metadata-agent.service
[root@mon01 ~(keystone_admin)]# systemctl enable neutron-l3-agent.service
[root@mon01 ~(keystone_admin)]# systemctl start neutron-l3-agent.service
八、安装计算节点
[root@mon02 ~]# yum install openstack-neutron-linuxbridge ebtables ipset -y
配置公共组件
编辑/etc/neutron/neutron.conf
[DEFAULT] transport_url = rabbit://openstack:admin@mon01 auth_strategy = keystone [agent] [cors] [database] [keystone_authtoken] www_authenticate_uri = http://mon01:5000 auth_url = http://mon01:5000 memcached_servers = mon01:11211 auth_type = password project_domain_name = default user_domain_name = default project_name = service username = neutron password = neutron [matchmaker_redis] [nova] [oslo_concurrency] lock_path = /var/lib/neutron/tmp [oslo_messaging_amqp] [oslo_messaging_kafka] [oslo_messaging_notifications] [oslo_messaging_rabbit] [oslo_messaging_zmq] [oslo_middleware] [oslo_policy] [quotas] [ssl]
配置linux birdge agent文件/etc/neutron/plugins/ml2/linuxbridge_agent.ini
[DEFAULT] [agent] [linux_bridge] physical_interface_mappings = provider:ens36 [network_log] [securitygroup] enable_security_group = true firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver [vxlan] enable_vxlan = true local_ip = 192.168.40.130 l2_population = true
永久开启路由转发-编辑配置文件/etc/sysctl.conf
net.bridge.bridge-nf-call-iptables=1 net.bridge.bridge-nf-call-ip6tables=1
配置计算服务使用网络服务
[neutron] url = http://mon01:9696 auth_url = http://mon01:5000 auth_type = password project_domain_name = default user_domain_name = default region_name = RegionOne project_name = service username = neutron password = neutron
完成安装
[root@mon02 ~]# systemctl restart openstack-nova-compute.service
[root@mon02 ~]# systemctl enable neutron-linuxbridge-agent.service
[root@mon02 ~]# systemctl start neutron-linuxbridge-agent.service
九、验证
internal
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· 地球OL攻略 —— 某应届生求职总结