须知少年凌云志,曾许人间第一流。这篇文章主要讲述OpenStack Train:业务组件Neutron装安装相关的知识,希望能为你提供帮助。
标签(空测试用例格分隔):OpenStack Train 系列
一: Neutron 服务安装1.1 Neutron 简介
OpenStack 网络使用的是一个 SDN(Software Defined Networking)组件,即 Neutron,SDN 是一个可插拔的架构,支持插入交换机、防火墙、负载均
衡器等,这些都定义在软件中,从而实现对整个云基础设施的精细化管控。
前期规划,将 ens33 网口作为外部网络(在 Openstack 术语中,外部网络常被称之为 Provider 网络),同时也用作管理网络,便于测试访问,生产环境
建议分开;ens35 网络作为租户网络,即 vxlan 网络;ens36 作为 ceph 集群网络。
OpenStack 网络部署方式可选的有 OVS 和 LinuxBridge。此处选择 LinuxBridge 模式,部署大同小异。
在控制节点上要启动的服务 neutron-server.service
neutron-linuxbridge-agent.service
neutron-dhcp-agent.service
neutron-metadata-agent.service
neutron-l3-agent.service
1.2 Neutron 在控制节点的安装与配置VXLAN 网络
1、登录数据库创建 neutron 数据库
MariaDB [(none)]> CREATE DATABASE neutron default character set utf8;
创建并授予 neutron 用户完全操作 neutron 库权限
MariaDB [(none)]> GRANT ALL PRIVILEGES ON neutron.* TO neutron@localhost IDENTIFIED BY openstack;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON neutron.* TO neutron@% IDENTIFIED BY openstack;
2、创建用户和 API 服务端点
# source /etc/keystone/admin-openrc.sh
创建 Neutron 用户,密码设置为 openstack2022
openstack user create --domain default --password openstack2022 neutron
/*
说明:使用 --password openstack2022 neutron 是非交互式方式,而 --password-prompt 是交互式,需要在窗口输入 2 次密码确认
*/
将 neutron 加入到 service 项目以及 admin 角色
# openstack role add --project service --user neutron admin
创建 Neutron 服务实体。
# openstack service create --name neutron --description "OpenStack Networking" network
创建 Neutron API 服务端点。
# openstack endpoint create --region RegionOne network public http://controller:9696
# openstack endpoint create --region RegionOne network internal http://controller:9696
# openstack endpoint create --region RegionOne network admin http://controller:9696
文章图片
文章图片
文章图片
文章图片
1.3安装Neutron 网络
3、安装配置 Neutron
采用 Provider-LinuxBridge 模式
# yum -y install openstack-neutron openstack-neutron-ml2 openstack-neutron-linuxbridge ebtables
修改配置文件/etc/neutron/neutron.conf
# cd /etc/neutron/ & & mv neutron.conf neutron.conf.source & & cat neutron.conf.source |grep -Ev "^#|^$" > neutron.conf & & chown root:neutron neutron.conf
# vi /etc/neutron/neutron.conf
修改[DEFAULT]部分,增加如下配置
[DEFAULT]
# 启用 Modular Layer 2 (ML2)插件
core_plugin = ml2
# service_plugins 默认为空,如果值是 router 表示支持路由模式,即 vxlan
service_plugins = router
transport_url = rabbit://openstack:openstack@controller
# 设置验证策略
auth_strategy = keystone
# 通知计算节点的网络拓扑变化
notify_nova_on_port_status_changes = true
notify_nova_on_port_data_changes = true
allow_overlapping_ips = true
修改[database]部分,配置数据库访问。
[database]
connection = mysql+pymysql://neutron:openstack@controller/neutron
修改[keystone_authtoken]部分,配置身份认证
[keystone_authtoken]
www_authenticate_uri = http://controller:5000
auth_url = http://controller:5000
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = neutron
password = openstack2022
token_cache_time=3600
增加[nova]部分,通知计算节点网络拓扑变化
[nova]
auth_url = http://controller:5000
auth_type = password
project_domain_name = default
user_domain_name = default
region_name = RegionOne
project_name = service
username = nova
password = openstack2022
说明:配置文件中默认没有该模块,需要新增
修改[oslo_concurrency]部分,配置锁定路径。
[oslo_concurrency]
lock_path = /var/lib/neutron/tmp
文章图片
文章图片
文章图片
文章图片
修改 ML2 插件配置文件/etc/neutron/plugins/ml2/ml2_conf.ini
参考:https://docs.openstack.org/mitaka/zh_CN/install-guide-rdo/neutron-controller-install-option2.html
# cd /etc/neutron/plugins/ml2 & & mv ml2_conf.ini ml2_conf.ini.source & & cat ml2_conf.ini.source |grep -Ev "^#|^$" > ml2_conf.ini & & chown root:neutron ml2_conf.ini
# vi /etc/neutron/plugins/ml2/ml2_conf.ini
启用 flat 和 vlan、vxlan 网络,需要新增加 [ml2]、[ml2_type_flat]、[ml2_type_vxlan]和[securitygroup]配置
增加[ml2]部分,配置支持 vxlan
[ml2]
type_drivers = flat,vlan,vxlan
tenant_network_types = vxlan
mechanism_drivers = linuxbridge,l2population
extension_drivers = port_security
增加[ml2_type_flat]部分,将 provider 配置为 flat 网络
[ml2_type_flat]
flat_networks = provider
增加[ml2_type_vlan]部分,将 vlan 配置为 flat 网络
[ml2_type_vlan]
network_vlan_ranges = provider
增加[ml2_type_vxlan]部分,配置 vxlan 网络识别的网络范围
[ml2_type_vxlan]
# 取值范围 1-16777215
vni_ranges = 1:3000
增加[securitygroup]部分,启用 ipset 提高安全效率。
[securitygroup]
enable_ipset = true
文章图片
文章图片
修改/etc/neutron/plugins/ml2/linuxbridge_agent.ini 文件,配置 Linux 桥代理
# cd /etc/neutron/plugins/ml2 & & mv linuxbridge_agent.ini linuxbridge_agent.ini.source & & cat linuxbridge_agent.ini.source |grep -Ev "^#|^$" > linuxbridge_agent.ini & & chown root:neutron linuxbridge_agent.ini
# vi /etc/neutron/plugins/ml2/linuxbridge_agent.ini
增加[linux_bridge]部分,将 Provider 虚拟网络映射到物理网络(能与外网通信的网段)
[linux_bridge]
physical_interface_mappings = provider:ens33
增加[vxlan]部分,启用 vxlan 叠加网络
[vxlan]
# 如果要禁用 vxlan,则设置为 false,同时注释 local_ip 和 l2_population
enable_vxlan = true
# 每个(控制和计算)节点都要添加一个网卡,给 vxlan 专用,并且要配置 IP 地址(不需要配置网关,配置 IP 后,各节点可以使用对应 IP ping 通)
local_ip = 10.16.10.11
l2_population = true
增加[securitygroup]部分,启用安全组并配置 LinuxBridge iptables 驱动。
[securitygroup]
enable_security_group = true
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
/*
说明:local_ip 要修改成控制节点/计算节点实际用于 vxlan IP。 provider 网络使用的是 ens33 网口,部署时根据实际情况调整,provider 网络可以理解为能与外部互联网相通的网络,后面在创建 Flat 类型网络时
--provider-physical-network 要指定是 provider。
*/
修改内核配置文件/etc/sysctl.conf,确保系统内核支持网桥过滤器
# vi /etc/sysctl.conf
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
执行以下命令,添加网桥过滤器,并设置开机加载
# modprobe br_netfilter
# sysctl -p
# sed -i $amodprobe br_netfilter /etc/rc.local
# chmod +x /etc/rc.d/rc.local
文章图片
文章图片
文章图片
修改/etc/neutron/dhcp_agent.ini 文件,配置 DHCP 代理
# cd /etc/neutron/ & & mv dhcp_agent.ini dhcp_agent.ini.source & & cat dhcp_agent.ini.source |grep -Ev "^#|^$" > dhcp_agent.ini & & chown root:neutron dhcp_agent.ini
# vi /etc/neutron/dhcp_agent.ini
在[DEFAULT]部分,配置 Linuxbridge 驱动接口,DHCP 驱动并启用隔离元数据,这样在公共网络上的实例就可以通过网络来访问元数据
[DEFAULT]
interface_driver = linuxbridge
dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq
enable_isolated_metadata = https://www.songbingjia.com/android/true
修改/etc/neutron/metadata_agent.ini 文件,配置元数据代理
# cd /etc/neutron/ & & mv metadata_agent.ini metadata_agent.ini.source & & cat metadata_agent.ini.source |grep -Ev "^#|^$" > metadata_agent.ini & & chown root:neutron metadata_agent.ini
# vi /etc/neutron/metadata_agent.ini
在[DEFAULT]部分,配置元数据主机和共享秘钥
[DEFAULT]
nova_metadata_host = controller
metadata_proxy_shared_secret = openstack2022
修改/etc/neutron/l3_agent.ini 文件,配置 layer-3 代理
# cd /etc/neutron/ & & mv l3_agent.ini l3_agent.ini.source & & cat l3_agent.ini.source |grep -Ev "^#|^$" > l3_agent.ini & & chown root:neutron l3_agent.ini
# vi /etc/neutron/l3_agent.ini
在[DEFAULT]部分,配置 Linuxbridge 接口驱动和外部网络网桥
[DEFAULT]
interface_driver = linuxbridge
external_network_bridge =
文章图片
文章图片
文章图片
1.4、配置neutron的Nova 部署
配置计算服务以使用 Neutron 网络(此步可以放到安装并配置 nova) (前提:已经安装了 nova 服务)
yum -y install openstack-nova-api openstack-nova-conductor openstack-nova-novncproxy openstack-nova-scheduler
# cd /etc/nova/ & & mv nova.conf nova.conf.source & & cat nova.conf.source |grep -Ev "^#|^$" > nova.conf & & chown root:nova nova.conf
# vi /etc/nova/nova.conf
在[neutron]部分,配置访问参数
[neutron]
url = http://controller:9696
auth_url = http://controller:5000
auth_type = password
project_domain_name = default
user_domain_name = default
region_name = RegionOne
project_name = service
username = neutron
password = openstack2022
service_metadata_proxy = true
metadata_proxy_shared_secret = openstack2022
文章图片
文章图片
4、初始化创建网络
# ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini
5、同步 neutron 数据库
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
6、启动 neutron 各服务并设置为开机自启动
# systemctl enable neutron-server.service neutron-linuxbridge-agent.service neutron-dhcp-agent.service neutron-metadata-agent.service neutron-l3-agent.service
# systemctl restart neutron-server.service neutron-linuxbridge-agent.service neutron-dhcp-agent.service neutron-metadata-agent.service neutron-l3-agent.service
# systemctl status neutron-server.service neutron-linuxbridge-agent.service neutron-dhcp-agent.service neutron-metadata-agent.service neutron-l3-agent.service
文章图片
文章图片
文章图片
文章图片
二:Neutron 在计算节点computer01/computer02的安装2.1 在computer01 与 computer02 节点同时安装
1、安装组件,由于 neutron 和 nova 之间有相互调用配置,此处将计算服务一并安装
# yum -y install openstack-nova-compute
# yum -y install openstack-neutron-linuxbridge ebtables ipset
2、修改配置文件/etc/neutron/neutron.conf
# cd /etc/neutron/ & & mv neutron.conf neutron.conf.source & & cat neutron.conf.source |grep -Ev "^#|^$" > neutron.conf & & chown root:neutron neutron.conf
# vi /etc/neutron/neutron.conf
在[DEFAULT]部分,配置 RabbitMQ 消息队列访问。
[DEFAULT]
transport_url = rabbit://openstack:openstack@controller
在[DEFAULT]部分,配置身份认证服务
[DEFAULT]
auth_strategy = keystone
[database]
connection = mysql+pymysql://neutron:openstack@controller/neutron
在[keystone_authtoken]部分,配置身份认证服务
[keystone_authtoken]
www_authenticate_uri = http://controller:5000
auth_url = http://controller:5000
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = neutron
password = openstack2022
token_cache_time=3600
在[oslo_concurrency]部分,配置锁定路径
[oslo_concurrency]
lock_path = /var/lib/neutron/tmp
文章图片
3、修改配置文件/etc/neutron/plugins/ml2/linuxbridge_agent.ini
为实例建立 layer-2 虚拟网络并且处理安全组规则,并将 Flat 网络和外部物理业务网络接口对应起来
# cd /etc/neutron/plugins/ml2 & & mv linuxbridge_agent.ini linuxbridge_agent.ini.source & & cat linuxbridge_agent.ini.source |grep -Ev "^#|^$" > linuxbridge_agent.ini & & chown root:neutron linuxbridge_agent.ini
# vi /etc/neutron/plugins/ml2/linuxbridge_agent.ini
[linux_bridge]
physical_interface_mappings = provider:ens33
[vxlan]
enable_vxlan = true
local_ip = 10.16.10.12
l2_population = true
[securitygroup]
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
enable_security_group = True
【OpenStack Train(业务组件Neutron装安装)】
文章图片
说明:local_ip 要修改成计算节点实际用于 vxlan IP。 provider 网络使用的是 ens33 网口,部署时根据实际情况调整,provider 网络可以理解为能与外部互联网相通的网络,后面在创建 Flat 类型网络时物理
网络 --provider-physical-network 要指定是 provider。
4、修改内核配置文件/etc/sysctl.conf,确保系统内核支持网桥过滤器
# vi /etc/sysctl.conf
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
执行以下命令,添加网桥过滤器
推荐阅读
- jvm专题 - 内存结构
- 深度详解JVM类加载机制
- mql4如何自定义画图
- Terraform 管理阿里云 VPC
- 读Google Objective-C Style Guide 有感想
- 通过self调用propery和直接调用propery的区别
- springboot线程池的使用和扩展
- mql相关知识
- Grafana--监控数据展示神器