Openstack_neutron部署(t版)

neutron网络服务

一.neutron

1.概述

 neutron:网络服务
  • openstack的网络服务最主要的功能:为了虚拟机实例提供网络连接(最初由nova-compute实现,现在被专门的网络服务neutron取代)
  • neutron为整个openstack环境提供软件定义网络支持(二层交换、三层路由、防火墙、VPN、负载均衡)

2.linux网络虚拟化

 1.一台宿主机/操作系统中,模拟多个相同或不同的操作系统
 2.虚拟化可以以软件的形式模拟硬件的功能

openstack网络服务最核心的是对二层物理网络进行抽象和管理

  • 多个物理服务器可被虚拟机取代,部署在同一台物理服务器
    虚拟机由虚拟机管理器(Hypervisor)实现,通常采用kvm,对服务器进行虚拟化的同时,网络也进行虚拟化
  • 虚拟机管理器(Hypervisor)为虚拟机创建一个或多个虚拟网卡
    虚拟网卡等同于虚拟机的物理网卡
    物理交换机在虚拟网络中被虚拟为虚拟交换机

3.Linux虚拟网桥

与物理网卡相连(与交换机功能类似)
  • 与物理机不同,虚拟机没有硬件设备,需要和物理机和其他虚拟机进行通信,可提供虚拟网桥设备,与物理交换机类似,在网桥上创建多个虚拟网络接口,每个网络接口与kvm虚拟机网卡相连

  • 在KVM虚拟系统中,为支持虚拟机的网络通信,网桥接口的名称通常为vnet开头

  • veth对,成对出现,一组虚拟的网络接口,连接机器和网桥

4.虚拟局域网

一个网桥可桥接若干虚拟机,每个虚拟机发出广播会引发广播风暴,影响虚拟机网络性能

将多个虚拟机划分到不同的vlan中,同一vlan的虚拟机相当于连接同一网桥上

虚拟环境中,将vlan与网桥对应起来
将网桥划分到不同的vlan

  • vlan作用:
    1.划分广播域
    2.安全(隔离,避免信息通过广播域的方式暴漏、泄露)
    3.集中化管理
    4.节省IP地址

基于什么方式进行划分:
vlan标签的方式打标签的vlan技术

5.开放虚拟交换机(ovs)

OVS定义: 分布式虚拟交换机

OVS特性:
1.跨平台移植
2.具有产品级质量
3.可以轻松实现物理交换机的各项功能
4.跨服务器,进行管理(基于分布式特性)可形成大规模虚拟网络,便于统计/集中化管理

1.兼容性
2.跨平台
  • 与硬件交换机具有相同特性
    可在不同虚拟平台之间移植
    具有产品级质量的虚拟交换机
    适合在生产环境中部署

  • 交换设备在虚拟化对虚拟网络至关重要(二层交换的作用)
    1.管理员可对物理交换机进行配置
    2.控制服务器的网络接入
    3.实现网络隔离,流量监控,QOS配置,流量优化

QOS:网络利用基础技术,安全机制,解决网络延迟和阻塞的一种技术

OVS优势:采用openvswitch(OVS)技术的虚拟机 可使用虚拟网络的管理、网络状态和流量的监控得以轻松实现

openswitch在云环境终端阿虚拟化平台上实现分布式虚拟交换机,可将不同主机上openswitch交换连接起来,形成一个大规模的虚拟网络

6.openstack网络基础服务

openstack网络服务提供一个API让用户在云中建立和定义网络连接,该网络服务的项目名称Neutron
openstack网络负责创建和管理虚拟网络基础架构(网络、交换机、子网和路由器)由openstack计算服务nova管理

1.openstack提供网络连接,相关网络技术,拓扑接受的服务是neutron

2.neutron可以提高基础网络服务和高级网络服务,但都是由nova进行管理

3.neutron 会为其他组件、服务、设备提供服务(集成)

二.netron网络结构

1.概述

简化neutron网络结构包括:一个外部网络、一个内部网络和一个路由器

  • 默认情况下:项目之间的内部网络是相互隔离的,不能共享
  • neutron内部访问:直接负责的区域,外部访问内部,不是由netron直接负责,属于个人,或者租户
    netron需要实现内部网和路由器

2.网络子网与端口

网路:隔离的二层广播域,类似交换机中的vlan(netron支持多种类型网络flat、vlan、vxlan)

子网:一个IPV4或者IPV6地址段及相关配置状态,虚拟机实例的IP地址从子网中分配(DHCP地址池,netron的dhcp代理来实现的ip分配)

端口:连接设备的连接点,类似虚拟交换机上的网络端口,路由器、交换机、mac地址表 路由表接口:IP MAC 接口名称

  • 通常可创建和配置网络、子网和端口来搭建虚拟网络,网络必须属于项目,一个项目可创建多个网络,一个子网可有多个端口

3.网络拓扑类型

flat
local
vlan
vxlan
GRE 

local: 生产环境不用,测试使用

flat:同一局域网方式(一种简单的扁平网络拓扑)不适用vlan,没有多数据打vlan标签,无法进行网络隔离

vlan:主要由二层交换机来实现
支持802.1q协议的虚拟局域网,使用vlan标签数据包,实现网络隔离,同一vlan中

vxlan(虚拟扩展局域网):隧道技术
1.是vlan的一种扩展,提高瓶颈的一种解决方案,它有更大的扩展性和灵活性

2.STP防止环路(阻塞端口)vxlan的数据包封装到UDP通过传输和转发,可以完整利用三层路由

3.vxlan的数据包是分装的(快速和安全)

GRE:隧道技术IP over IP IP封装IP,支持全部的路由协议

总结:

网络虚拟化技术趋势在传统单层网络基础上叠加的一层逻辑网络

虚拟或逻辑的接口的连接,每一个虚拟或者逻辑的连接对于Underlay(承载)网络的一条路径

由多个前后连接的组成,不会关心底层基础网络进行大规模修改

vxlan、GRE、GENEVE都是基于隧道技术的叠加网络

4.网络基本架构

  • 1.neutron-server 监听API接受/响应请求

  • 2.根据请求类型,分配给对应的插件
    插件---->控制对应的代理---->实现网络需求
    代理:会需要要网络提供者给他技术/功能支持

1)neutron-server

  • restful API:直接对客户端提供API服务
  • common service:通用服务,负责对API请求进行检验,认证,并授权
  • neutron core:核心处理程序,调用响应的插件API来处理API请求

5.典型的主节点部署

1)控制节点和计算节点结合

控制节点和计算节点都需要部署core plugin代理,因为控制节点与计算节点通过该代理,来能建立二层连接

2)控制节点和网络节点的结合

通过增加节点承担更大的负载,将所有的代理主键从上述控制节点分离出来,部署到独立的网络节点上

6.neutron主要插件、代理与服务

  • 插件:管理代理

  • 代理:负责具体的实现,为实例提供二三层连接,负责物理与虚拟网络的转换,处理元数据

  • 二层:以太网与交换机)

  • 三层:ip与路由

    • L3:osi七层模型的三层
    • DHCP:为实例分配IP地址

1)ML2插件

ML2插件诞生的原因
1.缺陷:一个实列的网络中,只支持一种网络代理 linux bridge
2.缺陷:精细化控制(集中化管理),维护和开发新的插件,对于开发而言,难度会不断提高,运维难度也会提高

解决:允许在openstack网络中同时使用二层网络技术,不同的节点

类型驱动:负责维护网络类型的状态,验证验证,创建网络等工作
机制驱动:二层网络技术的控制

2)linux BRidge代理

linux BRidge代理
是neuton二层网络虚拟化技术
linux bridge可将一台主机上多个网卡连接起来,可桥接物理网卡,可是虚拟网卡
选择linux bridge代理,在计算节点上数据包从虚拟机发生到物理网卡需要经过设备

tap接口 用于网桥连接的虚拟网卡
linux网桥 作为二层交换机
vlan接口 在vlan网络中用于连接网桥
vxlan接口 在vxlan网络中用于连接网桥
物理网络接口 用于连接到物理网络

3)Open vSwitch代理

与linux Bridge相比,ovs具有集中管理控制功能,而且性能优化,支持更多的功能

设备类型:

tap设备 用于网桥连接虚拟机网卡
linux网桥 桥接网络接口
VETH对 直接相连的一对虚拟网络接口,用来连接两个虚拟网桥
OVS网桥 物理连接网桥直接连接到物理网卡,两个OVS网桥通过一个VETH对来对接

四.openstack_neutron部署

配置接着:nova部署

CT控制节点

CT VM:192.168.153.10 NAT:192.168.133.70

1.创建数据库neutron,并进行授权

mysql -u root -p
CREATE DATABASE neutron;
GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' IDENTIFIED BY 'NEUTRON_DBPASS';
GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' IDENTIFIED BY 'NEUTRON_DBPASS';
flush privileges;
exit

在这里插入图片描述

2.创建用户、服务并赋权

创建neutron用户,用于在keystone做认证
openstack user create --domain default --password NEUTRON_PASS neutron

将neutron用户添加到service项目中拥有管理员权限
openstack role add --project service --user neutron admin

创建network服务,服务类型为network
openstack service create --name neutron --description "OpenStack Networking" network

在这里插入图片描述

3.注册API

注册API到neutron服务,给neutron服务关联端口,即添加endpoint

openstack endpoint create --region RegionOne network public http://ct:9696
openstack endpoint create --region RegionOne network internal http://ct:9696
openstack endpoint create --region RegionOne network admin http://ct:9696

在这里插入图片描述

4.安装提供者网络(桥接)并修改相关配置文件

1)ebtables包是用来管理iptables规则的

yum -y install openstack-neutron openstack-neutron-ml2 openstack-neutron-linuxbridge ebtables conntrack-tools

在这里插入图片描述

2)修改主配置文件neutron.conf

cp -a /etc/neutron/neutron.conf{
    
    ,.bak}
grep -Ev '^$|#' /etc/neutron/neutron.conf.bak > /etc/neutron/neutron.conf

在这里插入图片描述

3)传参

openstack-config --set /etc/neutron/neutron.conf database connection mysql+pymysql://neutron:NEUTRON_DBPASS@ct/neutron
openstack-config --set /etc/neutron/neutron.conf DEFAULT core_plugin ml2
openstack-config --set /etc/neutron/neutron.conf DEFAULT service_plugins router
openstack-config --set /etc/neutron/neutron.conf DEFAULT allow_overlapping_ips true
openstack-config --set /etc/neutron/neutron.conf DEFAULT transport_url rabbit://openstack:RABBIT_PASS@ct
openstack-config --set /etc/neutron/neutron.conf DEFAULT auth_strategy keystone
openstack-config --set /etc/neutron/neutron.conf DEFAULT notify_nova_on_port_status_changes true
openstack-config --set /etc/neutron/neutron.conf DEFAULT notify_nova_on_port_data_changes true
openstack-config --set /etc/neutron/neutron.conf keystone_authtoken www_authenticate_uri http://ct:5000
openstack-config --set /etc/neutron/neutron.conf keystone_authtoken auth_url http://ct:5000
openstack-config --set /etc/neutron/neutron.conf keystone_authtoken memcached_servers ct:11211
openstack-config --set /etc/neutron/neutron.conf keystone_authtoken auth_type password
openstack-config --set /etc/neutron/neutron.conf keystone_authtoken project_domain_name default
openstack-config --set /etc/neutron/neutron.conf keystone_authtoken user_domain_name default
openstack-config --set /etc/neutron/neutron.conf keystone_authtoken project_name service
openstack-config --set /etc/neutron/neutron.conf keystone_authtoken username neutron
openstack-config --set /etc/neutron/neutron.conf keystone_authtoken password NEUTRON_PASS
openstack-config --set /etc/neutron/neutron.conf oslo_concurrency lock_path /var/lib/neutron/tmp
openstack-config --set /etc/neutron/neutron.conf nova  auth_url http://ct:5000
openstack-config --set /etc/neutron/neutron.conf nova  auth_type password
openstack-config --set /etc/neutron/neutron.conf nova  project_domain_name default
openstack-config --set /etc/neutron/neutron.conf nova  user_domain_name default
openstack-config --set /etc/neutron/neutron.conf nova  region_name RegionOne
openstack-config --set /etc/neutron/neutron.conf nova  project_name service
openstack-config --set /etc/neutron/neutron.conf nova  username nova
openstack-config --set /etc/neutron/neutron.conf nova  password NOVA_PASS

在这里插入图片描述在这里插入图片描述

4)修改 ML2 plugin 配置文件 ml2_conf.ini

cp -a /etc/neutron/plugins/ml2/ml2_conf.ini{
    
    ,.bak}
grep -Ev '^$|#' /etc/neutron/plugins/ml2/ml2_conf.ini.bak > /etc/neutron/plugins/ml2/ml2_conf.ini

在这里插入图片描述

5)传参

openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini ml2 type_drivers  flat,vlan,vxlan
openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini ml2 tenant_network_types vxlan
openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini ml2 mechanism_drivers  linuxbridge,l2population
openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini ml2 extension_drivers  port_security
openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini ml2_type_flat flat_networks  provider
openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini ml2_type_vxlan vni_ranges 1:1000
openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini securitygroup enable_ipset  true

在这里插入图片描述

6)修改 linux bridge network provider 配置文件

cp -a /etc/neutron/plugins/ml2/linuxbridge_agent.ini{
    
    ,.bak}
grep -Ev '^$|#' /etc/neutron/plugins/ml2/linuxbridge_agent.ini.bak > /etc/neutron/plugins/ml2/linuxbridge_agent.ini

在这里插入图片描述

openstack-config --set /etc/neutron/plugins/ml2/linuxbridge_agent.ini linux_bridge physical_interface_mappings  provider:eth0
openstack-config --set /etc/neutron/plugins/ml2/linuxbridge_agent.ini vxlan enable_vxlan  true
openstack-config --set /etc/neutron/plugins/ml2/linuxbridge_agent.ini vxlan local_ip 192.168.153.10
openstack-config --set /etc/neutron/plugins/ml2/linuxbridge_agent.ini vxlan l2_population true
openstack-config --set /etc/neutron/plugins/ml2/linuxbridge_agent.ini securitygroup enable_security_group  true
openstack-config --set /etc/neutron/plugins/ml2/linuxbridge_agent.ini securitygroup firewall_driver  neutron.agent.linux.iptables_firewall.IptablesFirewallDriver

在这里插入图片描述

7)修改内核参数

echo 'net.bridge.bridge-nf-call-iptables=1' >> /etc/sysctl.conf
echo 'net.bridge.bridge-nf-call-ip6tables=1' >> /etc/sysctl.conf
modprobe br_netfilter
sysctl -p

在这里插入图片描述

8)配置Linuxbridge接口驱动和外部网络网桥

cp -a /etc/neutron/l3_agent.ini{
    
    ,.bak}
grep -Ev '^$|#' /etc/neutron/l3_agent.ini.bak > /etc/neutron/l3_agent.ini


openstack-config --set /etc/neutron/l3_agent.ini DEFAULT interface_driver linuxbridge

在这里插入图片描述

9)修改dhcp_agent 配置文件

cp -a /etc/neutron/dhcp_agent.ini{
    
    ,.bak}
grep -Ev '^$|#' /etc/neutron/dhcp_agent.ini.bak > /etc/neutron/dhcp_agent.ini

在这里插入图片描述

openstack-config --set /etc/neutron/dhcp_agent.ini DEFAULT interface_driver linuxbridge
openstack-config --set /etc/neutron/dhcp_agent.ini DEFAULT dhcp_driver neutron.agent.linux.dhcp.Dnsmasq
openstack-config --set /etc/neutron/dhcp_agent.ini DEFAULT enable_isolated_metadata true

在这里插入图片描述

10)配置元数据代理、用于配置桥接与自服务网络的通用配置

cp -a /etc/neutron/metadata_agent.ini{
    
    ,.bak}
grep -Ev '^$|#' /etc/neutron/metadata_agent.ini.bak > /etc/neutron/metadata_agent.ini

在这里插入图片描述

openstack-config --set /etc/neutron/metadata_agent.ini DEFAULT nova_metadata_host ct
openstack-config --set /etc/neutron/metadata_agent.ini DEFAULT metadata_proxy_shared_secret METADATA_SECRET

在这里插入图片描述

11) 修改CT配置文件/etc/nova/nova.conf,用于neutron交互

openstack-config --set /etc/nova/nova.conf neutron url http://ct:9696
openstack-config --set /etc/nova/nova.conf neutron auth_url http://ct:5000
openstack-config --set /etc/nova/nova.conf neutron auth_type password
openstack-config --set /etc/nova/nova.conf neutron project_domain_name default
openstack-config --set /etc/nova/nova.conf neutron user_domain_name default
openstack-config --set /etc/nova/nova.conf neutron region_name RegionOne
openstack-config --set /etc/nova/nova.conf neutron project_name service
openstack-config --set /etc/nova/nova.conf neutron username neutron
openstack-config --set /etc/nova/nova.conf neutron password NEUTRON_PASS
openstack-config --set /etc/nova/nova.conf neutron service_metadata_proxy true
openstack-config --set /etc/nova/nova.conf neutron metadata_proxy_shared_secret METADATA_SECRET

在这里插入图片描述
在这里插入图片描述

12)创建ML2插件文件符号连接

网络服务初始化脚本需要/etc/neutron/plugin.ini指向ML2插件配置文件的符号链接

ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini

在这里插入图片描述

13)初始化数据库

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

在这里插入图片描述
在这里插入图片描述

5.重启相关服务

1)重启计算节点nova-api服务

systemctl restart openstack-nova-api.service

在这里插入图片描述

2)开启neutron服务、设置开机自启动

systemctl enable neutron-server.service \
neutron-linuxbridge-agent.service \
neutron-dhcp-agent.service \
neutron-metadata-agent.service

systemctl start neutron-server.service \
neutron-linuxbridge-agent.service \
neutron-dhcp-agent.service \
neutron-metadata-agent.service

netstat -anutp |grep 9696

在这里插入图片描述

3)因为配置了第三层L3网络服务、所以需要启动第三层服务

systemctl enable neutron-l3-agent.service
systemctl restart neutron-l3-agent.service

在这里插入图片描述

五.C1、C2计算节点操作

C1 VM:192.168.153.20 NAT:192.168.133.80
C2 VM:192.168.153.30 NAT:192.168.133.90

1.部署neutron服务

1)安装neutron即相关服务
yum -y install openstack-neutron-linuxbridge ebtables ipset conntrack-tools
#ipset:iptables的扩展,允许匹配规则的集合而不仅仅是一个IP

在这里插入图片描述

2)修改neutron.conf文件

cp -a /etc/neutron/neutron.conf{
    
    ,.bak}
grep -Ev '^$|#' /etc/neutron/neutron.conf.bak > /etc/neutron/neutron.conf

在这里插入图片描述

openstack-config --set /etc/neutron/neutron.conf DEFAULT transport_url rabbit://openstack:RABBIT_PASS@ct
openstack-config --set /etc/neutron/neutron.conf DEFAULT auth_strategy keystone
openstack-config --set /etc/neutron/neutron.conf keystone_authtoken www_authenticate_uri http://ct:5000
openstack-config --set /etc/neutron/neutron.conf keystone_authtoken auth_url http://ct:5000
openstack-config --set /etc/neutron/neutron.conf keystone_authtoken memcached_servers ct:11211
openstack-config --set /etc/neutron/neutron.conf keystone_authtoken auth_type password
openstack-config --set /etc/neutron/neutron.conf keystone_authtoken project_domain_name default
openstack-config --set /etc/neutron/neutron.conf keystone_authtoken user_domain_name default
openstack-config --set /etc/neutron/neutron.conf keystone_authtoken project_name service
openstack-config --set /etc/neutron/neutron.conf keystone_authtoken username neutron
openstack-config --set /etc/neutron/neutron.conf keystone_authtoken password NEUTRON_PASS
openstack-config --set /etc/neutron/neutron.conf oslo_concurrency lock_path /var/lib/neutron/tmp

在这里插入图片描述

2.配置linux网桥代理

1)修改linuxbridge网桥配置文件
cp -a /etc/neutron/plugins/ml2/linuxbridge_agent.ini{
    
    ,.bak}
grep -Ev '^$|#' /etc/neutron/plugins/ml2/linuxbridge_agent.ini.bak > /etc/neutron/plugins/ml2/linuxbridge_agent.ini

在这里插入图片描述

openstack-config --set /etc/neutron/plugins/ml2/linuxbridge_agent.ini linux_bridge physical_interface_mappings  provider:eth0
openstack-config --set /etc/neutron/plugins/ml2/linuxbridge_agent.ini vxlan enable_vxlan  true
openstack-config --set /etc/neutron/plugins/ml2/linuxbridge_agent.ini vxlan local_ip 192.168.153.20
openstack-config --set /etc/neutron/plugins/ml2/linuxbridge_agent.ini vxlan l2_population true
openstack-config --set /etc/neutron/plugins/ml2/linuxbridge_agent.ini securitygroup enable_security_group  true
openstack-config --set /etc/neutron/plugins/ml2/linuxbridge_agent.ini securitygroup firewall_driver  neutron.agent.linux.iptables_firewall.IptablesFirewallDriver

在这里插入图片描述

2)修改内核

echo 'net.bridge.bridge-nf-call-iptables=1' >> /etc/sysctl.conf
echo 'net.bridge.bridge-nf-call-ip6tables=1' >> /etc/sysctl.conf
#modprobe:用于向内核中加载模块或者从内核中移除模块。modprobe -r 表示移除
modprobe br_netfilter
sysctl -p

在这里插入图片描述

3)修改nova.conf配置文件

openstack-config --set /etc/nova/nova.conf neutron auth_url http://ct:5000
openstack-config --set /etc/nova/nova.conf neutron auth_type password
openstack-config --set /etc/nova/nova.conf neutron project_domain_name default
openstack-config --set /etc/nova/nova.conf neutron user_domain_name default
openstack-config --set /etc/nova/nova.conf neutron region_name RegionOne
openstack-config --set /etc/nova/nova.conf neutron project_name service
openstack-config --set /etc/nova/nova.conf neutron username neutron
openstack-config --set /etc/nova/nova.conf neutron password NEUTRON_PASS

在这里插入图片描述

在这里插入图片描述

4)启动neutron网桥代理服务 设置开机自启动

systemctl enable neutron-linuxbridge-agent.service
systemctl start neutron-linuxbridge-agent.service

在这里插入图片描述

六.验证服务组件(CT 节点)

openstack extension list --network
openstack network agent list

在这里插入图片描述

  • 修改计算节点配置文件----linuxbridge网桥配置文件
vim /etc/neutron/plugins/ml2/linuxbridge_agent.ini

在这里插入图片描述

在这里插入图片描述

总结

三个节点都需要配置neutron网络,以下为部署思路:
配置neutron组件的用户、认证、endpoint
设置提供者provider网络(这里是桥接模式)
① 配置二层网络
② 配置网桥(插件)
③ 优化内核
④ 配置网桥接口与外部对接
⑤ 修改DHCP配置(修改配置文件、代理)
⑥ 配置网桥与内部组件的配置(修改配置文件、代理)
设置neutron与nova对接的配置
其中C1、C2节点配置相同

猜你喜欢

转载自blog.csdn.net/Wsxyi/article/details/117259090