OpenStack Q版部署-neutron

前言

经过前面几篇博客我们依次部署了,keystone身份认证服务、glance映像服务、nova计算服务,现在我们的实例有了镜像有了计算服务就可以进行创建了,但是在多台实例运行的时候,怎么对外通信呢?实例之间是怎么通信的呢?通信必须要有IP地址,这个网络我们怎么配置呢?

这时候我们需要部署一个networking Service网络服务,来为实例来提供虚拟网络。


一、简介

部署网络服务我们这里使用的是neutron来实现的,通过neutron来提供虚拟化的网络支持。

neutron网络服务的组件:

  • neutron-server ,提供api接受网络上的相关请求;
  • OpenStack Networking plug-ins and agents ,OpenStack的网络插件和代理,这些插件我们可以自己往里面添加,不同厂商插件功能也是不一样的;
  • Messaging queue ,消息队列在网络服务之间传递消息,这块就是rabbitMQ;

二、安装

在配置OpenStack网络(neutron)服务之前,必须创建数据库,服务凭证和API端点。

1、前提条件

首先创建数据库,neutron也是使用到数据库的,创建库然后创建授权用户来进行访问。

mysql -u root -pXylong_000
CREATE DATABASE neutron;
GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' IDENTIFIED BY '123'; 
GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' IDENTIFIED BY '123';

在这里插入图片描述
接着我们创建neutron的用户、做授权,

source admin-openrc 
openstack user create --domain default --password-prompt neutron
openstack role add --project service --user neutron admin

在这里插入图片描述
接着创建网络服务,名字叫做neutron,

openstack service create --name neutron  --description "OpenStack Networking" network

在这里插入图片描述

创建对应的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

在这里插入图片描述

2、安装和配置-controller

根据官方文档中提供的网络模式一共是两种,分别是provider+self-service,

  • provider网络 ,他是通过我们初始添加的一块物理网络来进行通信,我那块物理网卡已经设置为NAT模式了,那么我们使用provider网络创建出来的实例就是可以连通的外网的;

  • self-service网络 ,他说白了就是内部网络,就像我们ipv4地址中的私有网段一样,他可以创建网络但是仅限于内部的实例来进行通信是没法连接外网的;
    如果你想要通过self-service网络来连接外网的话,那么你是需要将provider网络配置好,并且创建出一个provider类型的网络,然后设置为路由绑定到你创建的self-service网络上面,这样self-service网络才可以访问外网。

我这里使用的是第二种。

接着我们到controller节点上安装neutron的软件,

yum install openstack-neutron openstack-neutron-ml2   openstack-neutron-linuxbridge ebtables

在这里插入图片描述

修改配置文件

接着我们修改配置文件,neutron网络服务的配置文件可以说是OpenStack各个组件中需要修改最多的一个组件,

比如,配置数据库、验证机制,keystone、消息队列是谁、网络拓扑变更了通知谁、还有二层网络,三层网络的插件,这些我们都是需要配置的,

neutron.conf

首先是neutron的配置文件,我们配置连接数据库,

vim /etc/neutron/neutron.conf 

配置数据库访问:
[database]

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

在这里插入图片描述
[DEFAULT]

core_plugin = ml2	
service_plugins = router
allow_overlapping_ips = true
transport_url = rabbit://openstack:123@controller	
auth_strategy = keystone
notify_nova_on_port_status_changes = true	
notify_nova_on_port_data_changes = true
参数解释
core_plugin#配置支持的插件,ml2是二层的插件,这是provider网络的
service_plugins#指定self-service网络出去使用路由
allow_overlapping_ips
transport_url#配置RabbitMQ 消息队列的地址
auth_strategy#配置身份服务的验证方式:
notify_nova_on_port_status_changes#网络拓扑变更通知
notify_nova_on_port_data_changes#网络发生变化通知

在这里插入图片描述

配置身份服务访问:

[keystone_authtoken]

auth_uri = http://controller:5000
auth_url = http://controller:35357
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = neutron
password = 123

在这里插入图片描述

将网络配置为通知Compute网络拓扑更改:
[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 = 123

在这里插入图片描述

配置锁定路径:
[oslo_concurrency]

lock_path = /var/lib/neutron/tmp

在这里插入图片描述

ml2_conf.ini

ML2插件使用Linux桥接器机制为实例构建第2层(桥接和交换)虚拟网络基础结构。
说白了就是配置二层插件,使用什么网络虚拟化的方式,二层网络怎么实现,

vim /etc/neutron/plugins/ml2/ml2_conf.ini 

[ml2]

type_drivers = flat,vlan,vxlan
tenant_network_types = vxlan
mechanism_drivers = linuxbridge,l2population
extension_drivers = port_security
参数解释
type_drivers#指定驱动类型
tenant_network_types#指定网络类型
mechanism_drivers#指定使用的驱动是Linux网桥
extension_drivers#指定额外驱动,端口安全

在这里插入图片描述

接着设置网络是provider,

[ml2_type_flat]

flat_networks = provider

在这里插入图片描述

指定虚拟VLAN的范围,

[ml2_type_vxlan]

vni_ranges = 1:1000

在这里插入图片描述

接着启动安全组,

[securitygroup]

enable_ipset = true

在这里插入图片描述

linuxbridge_agent.ini

接着我们配置Linux网桥配置文件,

vim /etc/neutron/plugins/ml2/linuxbridge_agent.ini 

指定以哪个网卡作为桥,来实现网桥的映射,

[linux_bridge]

physical_interface_mappings = provider:eth0

在这里插入图片描述
这里的网卡我们是事先配置好的,我们是可以查看到的,
在这里插入图片描述

接着启动vxlan虚拟VLAN,指定controller节点的ip地址,启动二层网络

[vxlan]

enable_vxlan = true
local_ip = 192.168.144.10
l2_population = true

在这里插入图片描述

启用安全组并配置Linux网桥iptables防火墙驱动程序:

[securitygroup]

enable_security_group = true
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver

在这里插入图片描述

确保Linux操作系统内核支持网桥过滤器,要启用网络桥接支持,通常br_netfilter需要加载内核模块。

首先我们需要判断下模块是否加载?

lsmod | grep br_netfilter

如果没有就加载模块,

modprobe br_netfilter 

然后执行以下操作:

vim /etc/sysctl.conf 
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
sysctl -p

在这里插入图片描述

l3_agent.ini

第3层(L3)代理为自助式虚拟网络提供路由和NAT服务。

vim /etc/neutron/l3_agent.ini 

指定Linux使用的是网桥,

[DEFAULT]

interface_driver = linuxbridge

在这里插入图片描述

dhcp_agent.ini

配置DHCP功能,可以通过网桥自动分配IP地址,

vim /etc/neutron/dhcp_agent.ini 

设置接口驱动为Linux网桥,指定DHCP驱动,最后开启隔离元数据,

[DEFAULT]

interface_driver = linuxbridge
dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq
enable_isolated_metadata = true

在这里插入图片描述

metadata_agent.ini

元数据代理提供配置信息,例如实例的凭据。

vim /etc/neutron/metadata_agent.ini 

指定访问元数据的IP,下面这个密码需要在nova的配置文件[neutron] 的group组中被使用,也就是说必须配置一致,

[DEFAULT]

nova_metadata_host = controller
metadata_proxy_shared_secret = 123

在这里插入图片描述

nova.conf

接着在nova服务中配置neutron的地址,
neutron服务是为nova服务创建出来的实例提供网络的,所以需要在nova的配置文件中添加上连接neutron的配置文件,里面用到的meta的密码就是在上一个配置文件中制定的,我用的都是123

vim /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_PASS
service_metadata_proxy = true
metadata_proxy_shared_secret = 123

在这里插入图片描述

初始化数据库

修改好配置文件之后我们就该网数据库中同步数据了,这里我们需要先生成插件的配置路径,

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

在这里插入图片描述

验证

我们可以进入到数据库中查看下

mysql -uroot -pXylong_000
use neutron
show tables;

在这里插入图片描述

设置开机自启并启动服务

因为修改了nova.conf配置文件所以重新启动计算服务:

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

在这里插入图片描述
启动第3层服务:

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

在这里插入图片描述

3、安装和配置-compute

接着到了计算节点,它上面也会有一些网络操作,在哪个节点上执行,桥会变成什么样子,

yum install openstack-neutron-linuxbridge ebtables ipset

在这里插入图片描述

修改配置文件

接着在计算节点上进行身份验证机制,消息队列和插件的配置,

neutron.conf
vim /etc/neutron/neutron.conf 

设置RabbitMQ 消息队列访问,配置身份服务访问

[DEFAULT]

transport_url = rabbit://openstack:123@controller
auth_strategy = keystone

在这里插入图片描述

配置身份服务访问:

[keystone_authtoken]

auth_uri = http://controller:5000
auth_url = http://controller:35357
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = neutron
password = 123

在这里插入图片描述

配置锁定路径:

[oslo_concurrency]

lock_path = /var/lib/neutron/tmp

在这里插入图片描述

linuxbridge_agent.ini

因为使用了Linux网桥所以也是需要配置下的,

vim /etc/neutron/plugins/ml2/linuxbridge_agent.ini 

指定Linux网桥使用的物理网卡,

[linux_bridge]

physical_interface_mappings = provider:eth0

在这里插入图片描述

接着启动vxlan虚拟VLAN,指定compute节点的ip地址,启动二层网络

[vxlan]

enable_vxlan = true
local_ip = 192.168.144.11
l2_population = true

在这里插入图片描述

启用安全组并配置Linux网桥iptables防火墙驱动程序:

[securitygroup]

enable_security_group = true
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver

在这里插入图片描述

验证以下所有sysctl值是否设置为确保Linux操作系统内核支持网桥过滤器,要启用网络桥接支持,通常br_netfilter需要加载内核模块。

首先我们需要判断下模块是否加载?

lsmod | grep br_netfilter

如果没有就加载模块,

modprobe br_netfilter 

然后执行以下操作:

vim /etc/sysctl.conf 
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
sysctl -p

在这里插入图片描述

nova.conf

修改下compute节点的nova服务的配置,能访问到neutron服务,

vim /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 = 123

在这里插入图片描述

设置开机自启并启动服务

因为nova服务中添加了配置重启下服务,

systemctl restart openstack-nova-compute.service

启动neutron服务并设置为开机自启,

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

在这里插入图片描述

4、服务验证

我们可以到controller节点上面,加载管理员环境变量,查看下我们的网络服务,

source admin-openrc 
openstack network agent list

在这里插入图片描述

创建一个provider网络试下:
PS:在neutron网路服务配置的这里,我们网络全部是按照self-service方式配置的但是我们还是可以创建provider网络的,因为self-service的配置是覆盖了provider网络的,这里只需要我们的外部网络支持就可以创建出provider类型的网络,

source admin-openrc 
openstack network create --share --external --provider-physical-network provider --provider-network-type flat provider

在这里插入图片描述
接着指定子网的范围,

PS:因为是创建的provider类型的网络,所以这里的地址段是需要我们在Vmware软件中单独进行配置的,否则我们就是网络创建出来了但是分配给实例还是无法连接外网的,

openstack subnet create --network provider --allocation-pool start=192.168.223.10,end=192.168.223.30 --dns-nameserver 192.168.223.2 --gateway 192.168.223.2 --subnet-range 192.168.223.0/24 provider

在这里插入图片描述
网络是可以正常创建的,

openstack network list

在这里插入图片描述
网络创建好之后可以查看下controller节点的网络状况,作为neutron使用的网卡eth0已经没得地址了,他的IP地址到了下面这个网卡上面了,
在这里插入图片描述
查看Linux网桥已经创建了,
在这里插入图片描述

总结:

到这里为止我们的网络服务neutron就搭建完毕了,

在neutron这里我们了解到原生的OpenStack中提供的两类网络分别是provider直连式网络和self-service内部网络,

  • 如果是使用provider直连式网络对物理网卡有需求,他是需要能够连接外网的,而且创建provider类型的网络的时候分配子网地址范围也是物理网卡上IP地址同一个地址段的,
  • 如果是self-service网络就没有那么多的要求了,他的功能就是创建内部网络,类似于私网地址,就是说我们在OpenStack环境中随便使用,但是无法连接外网,

这里如果你完全按照官方文档的步骤来创建的话是创建不出provider类型的网络的,就是创建出来也没法给实例分配地址,但是self-service网络是可以正常使用的,

进行到现在我们安装了keystone身份认证、glance映像服务、nova计算服务、neutron网络服务,现在我们的OpenStack环境就已经达到了启动实例的多有条件了,如果你现在就想创建实例,那么你就可以跳转到
创建实例
进行实例的创建了。

如果安装官方文档的步骤我们接下来需要
安装dashboard

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值