CentOS 7.x 部署 OpenStack 之 Neutron服务 (五)

一、理论基础篇

 

1. Neutron 概念

Neutron 为整个 OpenStack 环境提供网络支持,包括二层交换,三层路由,负载均衡,防火墙和 *** 等。Neutron 提供了一个灵活的框架,通过配置,无论是开源还是商业软件都可以被用来实现这些功能。
Openstack的设计理念是把所有的组件当做服务来注册的。 Neutron就是网络服务。它将网络、子网、端口和路由器抽象化,之后启动的虚拟主机就可以连接到这个虚拟网络上,最大的好处是这些都可视化的在Horizon里得到了实现,部署或者改变一个SDN变得非常简单。

 

2. 工作流程图

image.png

1. Neutron 组件分类

Neutron-server(接收用户的请求,通过消息队列告知Plugin处理请求)

Plugin(处理Neutron-server的请求,维护网络状态,调用Agent处理请求)

Agent(处理Plugin的请求,实现Network Provider上的各种网络功能 最终创建网络是由这个组件完成)

Network Provider(提供网络的虚拟设备或者物理设备,比如:Linux BridgeOpenVSwitch或者其他支持Neutron的物理交换机[网络功能是在这上面来实现的]

Queue(消息队列,组件之间沟通的桥梁)

Database(存放OpenStack的网络状态信息,包括NetworkSubnetPortRouter等)

 

PluginAgentNetwork Provider 是配套进行使用的,比如Network Provider采用的是Linux Bridge ,那么Plugin Agent就必须采用Linux Bridge里面Plugin Agent

 

 

 

2. Neutron 组网模型

Neutron 提供了多种组网模型以提供不同的租户搭建各种网络拓扑。

2.1 Local 网络

2.2 Flat 网络

(1) Flat 网络直接连接虚拟机和外部网络

(2) Flat 网络连接路由器和外部网络

2.3 vlan 网络

2.4 Vxlan 网络

 

一、实践操作篇

 

1.环境说明

 

 

系统

主机名

IP地址

CentOS 7.7

controller

ens33:10.0.0.129

ens37:192.168.248.140

CentOS 7.7

compute

ens33:10.0.0.130

ens37:192.168.248.141

 

 

虚拟机网卡配置
ens33 VMnet1仅主机模式
ens37 VMnet8 Nat模式

 

 

 

 

2.controller节点的配置


2.1创建neutron数据库

[root@controller ~]# mysql -uroot -p

MariaDB [(none)]> create database neutron;

 MariaDB [(none)]> grant all privileges on neutron.* to 'neutron'@'localhost' identified by 'neutron';

MariaDB [(none)]> grant all privileges on neutron.* to 'neutron'@'%' identified by 'neutron'; 


image.png

2.2创建neutron用户以及角色权限的赋予

 

[root@controller ~]# openstack user create --domain default --password neutron neutron

image.png

[root@controller ~]# openstack role add --project service --user neutron admin

 

 

2.3 创建neutron服务实体以及端点信息

 

[root@controller ~]# openstack service create --name neutron --description "Openstack Networking" network

image.png

创建公有端点信息(public

[root@controller ~]# openstack endpoint create --region RegionOne network public http://controller:9696

image.png

创建私有端点信息(internal)

[root@controller ~]# openstack endpoint create --region RegionOne network internal http://controller:9696

image.png

创建admin管理员端点信息

[root@controller ~]# openstack endpoint create --region RegionOne network admin http://controller:9696

image.png


3. 安装neutron相关组件包

 

[root@controller ~]# yum install openstack-neutron openstack-neutron-ml2 openstack-neutron-linuxbridge ebtables -y 

 


4. 配置neutron的配置文件

配置数据库连接

[root@controller ~]# vi /etc/neutron/neutron.conf

[database]

connection = mysql+pymysql://neutron:neutron@controller/neutron

配置keystone用户认证信息

[keystone_authtoken]

auth_uri = http://controller:

auth_url = http://controller:35357

memcached_servers = controller:11211

project_domain_name = default

user_domain_name = default

project_name = service

username = neutron

password = neutron

[DEFAULT]

 auth_strategy = keystone

配置rabbitmq消息队列

 rpc_backend = rabbit

 rabbit_host = controller

 rabbit_port = 5672

 rabbit_userid = guest

 rabbit_password = guest

neutron核心配置,启用ML2插件并禁用其他插件

[DEFAULT]

core_plugin = ml2

service_plugins =

 备注:service_plugins等号后面什么都不写就是禁用其他插件 配置网络服务来通知计算节点的网络拓扑变化

[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

配置锁路径

[oslo_concurrency]

 lock_path = /var/lib/neutron/tmp

配置Modular Layer 2 ML2

[root@controller ~]# vi /etc/neutron/plugins/ml2/ml2_conf.ini

 驱动的选择

[ml2]

 type_drivers = flat,vlan,gre,vxlan,geneve

使用什么插件来创建网络

mechanism_drivers = linuxbridge,openvswitch

禁用私有网络(租户的网络类型)

 tenant_network_types = 启动端口安全扩展驱动

 extension_drivers = port_security

配置公共的网络

[ml2_type_flat

flat_networks = public

[securitygroup]部分,启用 ipset增加安全组规则的高效性

[securitygroup]

 enable_ipset = true

 配置Linuxbridge代理

[root@controller ~]# vi /etc/neutron/plugins/ml2/linuxbridge_agent.ini [linux_bridge]

physical_interface_mappings = public:ens37 

[vxlan]部分,禁止VXLAN覆盖网络

[vxlan]

 enable_vxlan = false

[securitygroup]部分,启用安全组并配置防火墙驱动

 enable_security_group = true

 firewall_driver= neutron.agent.linux.iptables_firewall.IptablesFirewallDriver

 配置DHCP代理

[root@controller ~]# vi /etc/neutron/dhcp_agent.ini

配置Linuxbridge驱动接口,DHCP驱动并启用隔离元数据,这样在公共网络上的实例就可以通过网络来访问元数据

[DEFAULT]

 interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver  dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq

 enable_isolated_metadata = true

 配置元数据代理 [DEFAULT]部分,配置元数据主机以及共享密码

[root@controller ~]# vi /etc/neutron/metadata_agent.ini

[DEFAULT]

nova_metadata_host = controller 元数据主机

metadata_proxy_shared_secret = controller

 共享密码 nova-api配置网络服务 在[neutron]部分,配置访问参数 [root@controller ~]# vi /etc/nova/nova.conf

[neutron]

 url=http://controller:9696 7698 auth_url=http://controller:35357

auth_type=password

 project_domain_name  = default

 user_domain_name  =  default

 region_name  =  RegionOne

 project_name  = service

 username = neutron

 password = neutron

 [neutron]部分,启用元数据代理并设置密码

 [neutron]

service_metadata_proxy=true

metadata_proxy_shared_secret = controller

 

5. 初始化数据库

 

[root@controller ~]# ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini

[root@controller ~]# 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. 重启Nova API 服务

 

[root@controller ~]# systemctl restart openstack-nova-api.service

 

 

7. 启动Neutron服务并配置开机自启动

 

[root@controller ~]# systemctl enable neutron-server.service neutron-linuxbridge-agent.service neutron-dhcp-agent.service neutron-metadata-agent.service 

[root@controller ~]# systemctl start neutron-server.service neutron-linuxbridge-agent.service neutron-dhcp-agent.service neutron-metadata-agent.service

 

8. 检查neutron是否安装成功

[root@controller ~]# openstack network agent list

 

 

compute节点的部署

安装相关软件包

[root@compute ~]# yum install openstack-neutron-linuxbridge ebtables ipset net-tools -y

· 1

修改配置文件

复制controller配置文件过来进行修改即可

[root@controller ~]# scp /etc/neutron/neutron.conf root@compute:/etc/neutron/neutron.conf

 

配置Neutron服务

[root@compute ~]# vi /etc/neutron/neutron.conf

注释以下选项#connection = mysql+pymysql://neutron:neutron@controller/neutron

#core_plugin = ml233 #service_plugins =

 #notify_nova_on_port_status_changes = true

 #notify_nova_on_port_data_changes = true

nova计算节点配置网络服务

[root@compute ~]# vi /etc/nova/nova.conf

[neutron]

 url=http://controller:9696

 auth_url=http://controller:35357

 auth_type = password

 project_domain_name = default

 user_domain_name = default

 region_name = RegionOne

 project_name = service

 username = neutron

 password = neutron

配置Linuxbridge代理

[root@compute ~]# vi /etc/neutron/plugins/ml2/linuxbridge_agent.ini

physical_interface_mappings = public:ens33

enable_vxlan = false

firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver

enable_security_group = true

重启计算节点nova-compute

[root@compute ~]# systemctl restart openstack-nova-compute.service

启动Linuxbridge代理并配置它开机自启动

[root@compute ~]# systemctl start neutron-linuxbridge-agent.service

[root@compute ~]# systemctl enable  neutron-linuxbridge-agent.service

控制节点查看是否生效

[root@controller ~]# openstack network agent list


标签: 云计算

作者头像
南宫俊逸创始人

君子好学,自强不息~

上一篇:Linux 如何获取根分区的总索引节点
下一篇:CentOS 7.x 部署 OpenStack Dashboard 控制台 (六)

发表评论

阿里云2021年 618 年中钜惠活动