前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >OpenStack运维之安装Neutron服务

OpenStack运维之安装Neutron服务

作者头像
王先森sec
发布2023-04-24 17:31:14
8050
发布2023-04-24 17:31:14
举报
文章被收录于专栏:王先森

Neutron介绍

Neutron概要

OpenStack网络服务提供了一个API接口,允许用户在云上设置和定义网络连接和地址。这个网络服务的项目代码名称是Neutron。OpenStack网络处理虚拟设备的创建和管理网络基础设施,包括网络、交换机、子网以及由计算服务(nova)管理的设备路由器。高级服务,如防火墙或虚拟私人网络(VPN)也可以使用。

OpenStack网络由neutron-server,持久化存储数据库,和任意数量的插件代理组成,这些代理提供其他服务,如与本地linux联网接口机制、外部设备或SDN控制器。

OpenStack网络是完全独立的,可以部署到一个专用主机。如果你的部署使用了一个控制器主机运行集中计算组件,你可以部署网络服务来取代主机的设定。

OpenStack网络集成了各种组件:

  • 身份认证(Keystone)用于身份验证以及api请求的授权。
  • 计算服务(Nova)用于把一个特定网络插入每个虚拟机中。
  • 仪表盘(Horizon)由管理员和租户通过一个基于WEB的图形界面创建和管理网络。

neutron组件详解

neutron-server可以理解为类似于nova-api那样的一个组件,一个专门用来接收neutron REST API调用的服务器。负责将不同的rest api发送到不同的neutron-plugin

neutron-plugin可以理解为不同网络功能实现的入口,现在大部分都是软件定义网络,各个厂商都开发自己的plugin(插件)。neutron-plugin接收netron-server发过来的rest api,向neutron database完成一些信息注册(比如用户要建端口)。然后将具体要执行的业务操作和参数通知给自身对应的neutron-agent

neutron-agent可以直观的理解为neutron-plugin在设备上的代理,接受相应的neutron-plugin通知的业务操作和参数,并转换为具体的设备级操作,以指导设备的动作。当本地设备发生问题时,neutron-agent会将情况通知给neutron-plugin(说白了就是neutron-server就是与各个组件交互的,接收请求,neutron-plugin是操作数据库的,neutron-agent就是具体干活的)

neutron database就是数据库,一些业务相关的参数都存在这里

Neutron网络

Neutron分别提供了二层(L2)vSwitch交换和三层(L3)Router路由抽象的功能,对应于物理网络环境中的交换机和路由器实现。具体实现了如下功能:

  • Router:为租户提供路由、NAT等服务。
  • Network:对应于一个真实物理网络中的二层局域网(VLAN),从租户的的角度而言,是租户私有的。
  • Subnet:为网络中的三层概念,指定一段IPV4或IPV6地址并描述其相关的配置信息。它附加在一个二层Network上,指明属于这个network的虚拟机可使用的IP地址范围。

注意:学习openstack重中之重network的类型包括:Flat,Vlan,Vxlan,GRE,还有一个local 五种网络模式指的是二层网络

neutron L2 network可以分为

flat network:基于不实用vlan的物理网络实现的虚拟网络。所有网络都在一个网络中。不推荐使用,用不到生产环境中。 local network:一个只允许在本服务器内通信的虚拟网络,所有服务都装在一台机器上 不推荐中。 vlan network:基于物理vlan网络实现的虚拟网络。共享同一个物理网络的多个vlan网络是相互隔离的,并且可以使用重叠IP地址空间。最重要的一点是有效的VLAN ID 范围为1-4095 GRE network:(通过路由封装网络):一个使用GRE封装网络包的虚拟网络,GRE封装的数据包基于IP路由表来进行路由,因此GRE network不和具体的网络网络绑定 VXLAN network:(虚拟可扩展网络)基于vxlan实现虚拟网络。同GRE network一样,vxlan network中IP包的路由也基于IP路由表,也不和具体的物理网络绑定

安装部署neutron

控制节点安装

创库授权

代码语言:javascript
复制
CREATE DATABASE neutron;
GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' \
  IDENTIFIED BY '123456';
  
GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' \
  IDENTIFIED BY '123456';

neutron创建用户\角色

代码语言:javascript
复制
openstack user create --domain default --password neutron neutron

openstack role add --project service --user neutron admin

创建neutron服务(api接口)

代码语言:javascript
复制
openstack service create --name neutron \
  --description "OpenStack Networking" network

openstack endpoint create --region RegionOne \
  network public http://master01.boysec.cn:9696

openstack endpoint create --region RegionOne \
  network internal http://master01.boysec.cn:9696

openstack endpoint create --region RegionOne \
  network admin http://master01.boysec.cn:9696  

安装服务

代码语言:javascript
复制
yum install openstack-neutron openstack-neutron-ml2 openstack-neutron-linuxbridge ebtables -y

配置neutron文件

代码语言:javascript
复制
cp /etc/neutron/neutron.conf{,.bak}
egrep -v "^$|#" /etc/neutron/neutron.conf.bak >/etc/neutron/neutron.conf
[root@master01.boysec.cn ~]# cat /etc/neutron/neutron.conf
[DEFAULT]
core_plugin = ml2
service_plugins =
transport_url = rabbit://openstack:openstack@master01.boysec.cn
auth_strategy = keystone
notify_nova_on_port_status_changes = true
notify_nova_on_port_data_changes = true
[cors]
[database]
connection = mysql+pymysql://neutron:123456@master01.boysec.cn/neutron
[keystone_authtoken]
www_authenticate_uri = http://master01.boysec.cn:5000
auth_url = http://master01.boysec.cn:5000
memcached_servers = master01.boysec.cn:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = neutron
password = neutron

[nova]
auth_url = http://master01.boysec.cn: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_middleware]
[oslo_policy]
[privsep]
[ssl]

配置插件

代码语言:javascript
复制
# 编辑ml2配置
cp /etc/neutron/plugins/ml2/ml2_conf.ini{,.bak}
egrep -v "^$|#" /etc/neutron/plugins/ml2/ml2_conf.ini.bak> /etc/neutron/plugins/ml2/ml2_conf.ini
cat /etc/neutron/plugins/ml2/ml2_conf.ini
[DEFAULT]
[ml2]
type_drivers = flat,vlan
tenant_network_types =
mechanism_drivers = linuxbridge
extension_drivers = port_security
[ml2_type_flat]
flat_networks = provider
[securitygroup]
enable_ipset = true

# 编辑linuxbridge_agent配置
cp /etc/neutron/plugins/ml2/linuxbridge_agent.ini{,.bak}
egrep -v "^$|#" /etc/neutron/plugins/ml2/linuxbridge_agent.ini.bak >/etc/neutron/plugins/ml2/linuxbridge_agent.ini
cat /etc/neutron/plugins/ml2/linuxbridge_agent.ini
[linux_bridge]
physical_interface_mappings = provider:eth0

# 编辑dhcp_agent配置
vim /etc/neutron/dhcp_agent.ini
[DEFAULT]
# ...
interface_driver = linuxbridge
dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq
enable_isolated_metadata = true

同步数据库

代码语言:javascript
复制
ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini

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

启动服务

代码语言:javascript
复制
systemctl restart openstack-nova-api.service
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

计算节点安装

代码语言:javascript
复制
yum install openstack-neutron openstack-neutron-ml2 \
  openstack-neutron-linuxbridge ebtables -y

配置

代码语言:javascript
复制
[root@node01 ~]# cp /etc/neutron/neutron.conf{,.bak}
[root@node01 ~]# egrep -v "^$|#" /etc/neutron/neutron.conf.bak >/etc/neutron/neutron.conf
[root@node01 ~]# vim /etc/neutron/neutron.conf
[root@node01 ~]# cat /etc/neutron/neutron.conf
[DEFAULT]
transport_url = rabbit://openstack:openstack@master01.boysec.cn
auth_strategy = keystone
[cors]
[database]
[keystone_authtoken]
www_authenticate_uri = http://master01.boysec.cn:5000
auth_url = http://master01.boysec.cn:5000
memcached_servers = master01.boysec.cn:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = neutron
password = neutron
[oslo_concurrency]
lock_path = /var/lib/neutron/tmp
[oslo_messaging_amqp]
[oslo_messaging_kafka]
[oslo_messaging_notifications]
[oslo_messaging_rabbit]
[oslo_middleware]
[oslo_policy]
[privsep]
[ssl]


[root@node01 ~]# scp master01.boysec.cn:/etc/neutron/plugins/ml2/linuxbridge_agent.ini /etc/neutron/plugins/ml2/linuxbridge_agent.ini
[root@node01 ~]# cat /etc/neutron/plugins/ml2/linuxbridge_agent.ini
[DEFAULT]
[linux_bridge]
physical_interface_mappings = provider:eth0
[vxlan]
enable_vxlan = false
[securitygroup]
enable_security_group = true
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver

启动

代码语言:javascript
复制
systemctl restart openstack-nova-compute.service
systemctl enable neutron-linuxbridge-agent.service
systemctl start neutron-linuxbridge-agent.service

验证

代码语言:javascript
复制
[root@master01 ~]# openstack network agent list                
+--------------------------------------+--------------------+--------------------+-------------------+-------+-------+---------------------------+
| ID                                   | Agent Type         | Host               | Availability Zone | Alive | State | Binary                    |
+--------------------------------------+--------------------+--------------------+-------------------+-------+-------+---------------------------+
| 614d6a20-cfec-43e5-825d-89f60da8c401 | Metadata agent     | master01.boysec.cn | None              | :-)   | UP    | neutron-metadata-agent    |
| 9300f5c5-1f59-46bc-89e0-88222e9ccd16 | DHCP agent         | master01.boysec.cn | nova              | :-)   | UP    | neutron-dhcp-agent        |
| afafc9b0-566e-48ac-be6a-e54510229770 | Linux bridge agent | master01.boysec.cn | None              | :-)   | UP    | neutron-linuxbridge-agent |
| c6cc8d26-7b2b-46d6-96e8-56cb46689cf1 | Linux bridge agent | node01.boysec.cn   | None              | :-)   | UP    | neutron-linuxbridge-agent |
+--------------------------------------+--------------------+--------------------+-------------------+-------+-------+---------------------------+
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-01-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Neutron介绍
    • Neutron概要
      • neutron组件详解
        • Neutron网络
          • neutron L2 network可以分为
      • 安装部署neutron
        • 控制节点安装
          • 创库授权
          • neutron创建用户\角色
          • 创建neutron服务(api接口)
          • 安装服务
          • 配置neutron文件
          • 配置插件
          • 同步数据库
          • 启动服务
        • 计算节点安装
          • 配置
          • 启动
          • 验证
      相关产品与服务
      云服务器
      云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档