OpenStack系列(7)

一、网络服务概述

OpenStack网络允许创建和管理网络对象,如网络、子网和端口,其他OpenStack服务可以使用。插件可以实现,以适应不同的网络设备和软件,为OpenStack的体系结构和部署提供灵活性。网络服务,代号neutron,提供一个API,使得可以定义网络连接并在云中寻址。网络服务还提供了一个API来配置和管理各种网络服务,包括从L3转发和NAT到负载均衡、边界防火墙和虚拟专用网络。

它包括以下组件:

  • API server: OpenStack网络API,包括对2层网络和IP地址管理(IPAM)的支持以及三层路由器构造的扩展,该结构允许在2层网络和网关到外部网络之间进行路由。OpenStack网络包括一个不断增长的plug-ins列表,它允许与各种商业和开源网络技术(包括路由器、交换机、虚拟交换机和软件定义网络(SDN)控制器)进行互操作。
  • OpenStack网络插件和代理:插件和unplugs端口创建网络或子网,并提供IP寻址。所选的插件和代理因特定云中使用的供应商和技术而异。必须指出的是,一次只能使用一个插件。
  • 消息队列:接受并路由代理之间的RPC请求以完成API操作。消息队列在ML2插件中用于运行在每个管理程序上的neutron服务器和neutron代理之间的RPC,用于openvSwitch和Linux桥的ML2机制驱动程序。

二、安装并配置组件

1. 安装并配置控制节点

  1. 创建数据库

    1
    2
    3
    4
    5
    6
    7
    8
    9
    # 用数据库连接客户端以root用户连接到数据库服务器:
    mysql -u root -p

    # 创建neutron数据库:
    CREATE DATABASE neutron;

    # 对neutron数据库授予合适的访问权限,使用合适的密码替换NEUTRON_DBPASS:
    GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' IDENTIFIED BY 'neutron123456a?';
    GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' IDENTIFIED BY 'neutron123456a?';
  2. 获得admin凭证来获取只有管理员能执行的命令的访问权限

    1
    2
    source /home/admin-openrc
    echo $OS_USERNAME
  3. 创建服务证书

    1
    2
    3
    4
    5
    6
    7
    8
    # 创建neutron用户:
    openstack user create --domain default --password-prompt neutron

    # 添加admin角色到neutron用户(这个命令执行后没有输出):
    openstack role add --project service --user neutron admin

    # 创建neutron服务实体:
    openstack service create --name neutron --description "OpenStack Networking" network
  4. 创建网络服务API端点

    1
    2
    3
    openstack endpoint create --region RegionOne network public http://ctl01:9696
    openstack endpoint create --region RegionOne network internal http://ctl01:9696
    openstack endpoint create --region RegionOne network admin http://ctl01:9696
  5. 配置网络选项

OpenStack提供两种网络选项,分别为桥接模式和NAT模式
桥接模式采用尽可能简单的架构进行部署,只支持实例连接到共有网络(外部网络)。没有私有网络(个人网络),路由器以及浮动IP地址。只有admin或者其他特权用户才可以管理公有网络。
NAT模式在桥接模式的基础上多了layer-3服务,支持实例连接到私有网络。demo或者其他没有特权的用户可以管理自己的私有网络,包含连接公网和私网的路由器。另外,浮动IP地址可以让实例使用私有网络连接到外部网络,例如互联网。
典型的私有网络一般使用覆盖网络。覆盖网络,例如VXLAN包含了额外的数据头,这些数据头增加了开销,减少了有效内容和用户数据的可用空间。在不了解虚拟网络架构的情况下,实例尝试用以太网最大传输单元(MTU)1500字节发送数据包。网络服务会自动给实例提供正确的MTU的值通过DHCP的方式。但是,一些云镜像并没有使用DHCP或者忽视了DHCP MTU选项,要求使用元数据或者脚本来配置。

  1. 配置元数据代理

编辑/etc/neutron/metadata_agent.ini文件

1
2
3
4
5
6
7
8
9
cp /etc/neutron/metadata_agent.ini /etc/neutron/metadata_agent.ini.bak
cat /etc/neutron/metadata_agent.ini.bak | grep -v "^#" | grep -v '^$' > /etc/neutron/metadata_agent.ini
vim /etc/neutron/metadata_agent.ini

# 在[DEFAULT]部分,配置元数据主机以及共享密码:
[DEFAULT]
# ...
nova_metadata_host = ctl01
metadata_proxy_shared_secret = metadata123456a?

  1. 为计算节点配置网络服务

编辑/etc/nova/nova.conf文件并完成以下操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
cp /etc/nova/nova.conf /etc/nova/nova.conf.bak.new
vim /etc/nova/nova.conf
# 在[neutron]部分,配置访问参数,启用元数据代理并设置密码:
vim /etc/nova/nova.conf
[neutron]
# ...
url = http://ctl01:9696
auth_url = http://ctl01:35357
auth_type = password
project_domain_name = default
user_domain_name = default
region_name = RegionOne
project_name = service
username = neutron
password = 123456a?
service_metadata_proxy = true
metadata_proxy_shared_secret = metadata123456a?

  1. 创建一个软连接

网络服务初始化脚本需要一个超链接/etc/neutron/plugin.ini指向ML2插件配置文件/etc/neutron/plugins/ml2/ml2_conf.ini。如果超链接不存在,就使用下面的命令创建:

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

  1. 填充数据库

数据库填充稍后会出现在网络上,因为该脚本需要完整的服务器和插件配置文件。

1
2
3
4
5
6
7
# 写入数据库
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

# 验证:应该有166个表
mysql -u root -p'123456a?' -D neutron -se "show tables;"
mysql -u root -p'123456a?' -D neutron -se "show tables;" | wc -l

  1. 重新启动Compute API服务
    1
    2
    3
    4
    service nova-api restart
    service nova-api status
    service neutron-server start
    service neutron-13-agent start

2. 在控制节点上安装并配置网络组件(桥接模式)

  1. 安装组件

    1
    2
    apt-get install openstack-neutron openstack-neutron-ml2 \
    openstack-neutron-linuxbridge ebtables
  2. 配置服务组件

编辑/etc/neutron/neutron.conf文件并完成如下操作:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
cp /etc/neutron/neutron.conf /etc/neutron/neutron.conf.bak
cat /etc/neutron/neutron.conf.bak | grep -v "^#" | grep -v '^$' > /etc/neutron/neutron.conf
vim /etc/neutron/neutron.conf

# 1.在[database]部分,配置数据库访问:
[database]
# ...
connection = mysql+pymysql://neutron:neutron123456a?@ctl01/neutron

# 2.在[DEFAULT]部分,启用ML2插件并禁用其他插件:
[DEFAULT]
# ...
core_plugin = neutron.plugins.ml2.plugin.Ml2Plugin
service_plugins = neutron.services.l3_router.l3_router_plugin.L3RouterPlugin

# 3.在[DEFAULT]部分,配置RabbitMQ消息队列的连接:
[DEFAULT]
# ...
transport_url = rabbit://openstack:rabbit123456@ctl01

# 4.在[DEFAULT]和[keystone_authtoken]部分,配置认证服务访问:
# 在[keystone_authtoken]中注释或者删除其他选项。
[DEFAULT]
# ...
auth_strategy = keystone

[keystone_authtoken]
# ...
auth_uri = http://ctl01:5000
auth_url = http://ctl01:5000
memcached_servers = ctl01:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = neutron
password = 123456a?

# 5.在[DEFAULT]和[nova]部分,配置网络服务来通知计算节点的网络拓扑变化:
[DEFAULT]
# ...
notify_nova_on_port_status_changes = true
notify_nova_on_port_data_changes = true

[nova]
# ...
auth_url = http://ctl01:5000
auth_type = password
project_domain_name = default
user_domain_name = default
region_name = RegionOne
project_name = service
username = nova
password = 123456a?

# 6.在[oslo_concurrency]部分,配置锁路径:
[oslo_concurrency]
# ...
lock_path = /var/lib/neutron/tmp

  1. 配置Modular Layer2(ML2)插件

注意:在你配置完ML2插件后,删除可能导致数据库不一致的type_drivers项的值。
ML2插件使用Linuxbrige机制来为实例创建layer-2虚拟网络基础设施
编辑/etc/neutron/plugins/ml2/ml2_conf.ini文件并完成以下操作:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
cp /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugins/ml2/ml2_conf.ini.bak
cat /etc/neutron/plugins/ml2/ml2_conf.ini.bak | grep -v "^#" | grep -v '^$' > /etc/neutron/plugins/ml2/ml2_conf.ini
vim /etc/neutron/plugins/ml2/ml2_conf.ini

# 1.在[ml2]部分,启用flat和VLAN网络:
[ml2]
# ...
type_drivers = flat,vxlan

# 2.在[ml2]部分,禁用私有网络:
[ml2]
# ...
tenant_network_types =

# 3.在[ml2]部分,启用Linuxbridge机制:
# 警告:在你配置完ML2插件之后,删除可能导致数据库不一致的type_drivers`项的值。
[ml2]
# ...
mechanism_drivers = openvswitch,l2population,genericswitch

# 4.在[ml2]部分,启用端口安全扩展驱动:
[ml2]
# ...
extension_drivers = port_security

# 5.在[ml2_type_flat]部分
[ml2_type_flat]
# ...
flat_networks = *

# 6.在[securitygroup]部分,启用ipset增加安全组规则的高效性:
[securitygroup]
# ...
enable_ipset = true

  1. 配置Linuxbridge代理

Linuxbridge代理为实例建立layer-2虚拟网络并且处理安全组规则。
编辑/etc/neutron/plugins/ml2/linuxbridge_agent.ini文件并且完成以下操作:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
cp /etc/neutron/plugins/ml2/linuxbridge_agent.ini /etc/neutron/plugins/ml2/linuxbridge_agent.ini.bak
cat /etc/neutron/plugins/ml2/linuxbridge_agent.ini.bak | grep -v "^#" | grep -v '^$' > /etc/neutron/plugins/ml2/linuxbridge_agent.ini
vim /etc/neutron/plugins/ml2/linuxbridge_agent.ini

# 1.在[linux_bridge]部分,将公共虚拟网络和公共物理网络接口对应起来:
# 将PROVIDER_INTERFACE_NAME替换为底层的物理公共网络接口。
[linux_bridge]
# physical_interface_mappings = provider:PROVIDER_INTERFACE_NAME
physical_interface_mappings = provider:ens33

# 2.在[vxlan]部分,禁止VXLAN覆盖网络:
[vxlan]
enable_vxlan = false

# 3.在[securitygroup]部分,启用安全组并配置Linuxbridge iptables firewall driver:
[securitygroup]
# ...
enable_security_group = true
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver

# 4.通过验证以下所有sysctl值都设置为1:确保您的Linux操作系统内核支持网桥过滤器:
# 要启用网络桥接支持,通常br_netfilter需要加载内核模块。
cp /etc/sysctl.conf /etc/sysctl.conf.bak
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
ll /proc/sys/net/bridge
/sbin/sysctl -p

  1. 配置DHCP代理

编辑/etc/neutron/dhcp_agent.ini文件并完成下面的操作:

1
2
3
4
5
6
7
8
9
10
11
cp /etc/neutron/dhcp_agent.ini /etc/neutron/dhcp_agent.ini.bak
cat /etc/neutron/dhcp_agent.ini.bak | grep -v "^#" | grep -v '^$' > /etc/neutron/dhcp_agent.ini
vim /etc/neutron/dhcp_agent.ini

# 在[DEFAULT]部分,配置Linuxbridge驱动接口,DHCP驱动并启用隔离元数据
# 这样在公共网络上的实例就可以通过网络来访问元数据
[DEFAULT]
# ...
interface_driver = linuxbridge
dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq
enable_isolated_metadata = true

以上完成后,返回第一步安装并配置控制节点。
**

3. 在控制节点上安装并配置网络组件(NAT模式)

  1. 安装组件

    1
    2
    apt-get install openstack-neutron openstack-neutron-ml2 \
    openstack-neutron-linuxbridge ebtables
  2. 配置服务组件

编辑/etc/neutron/neutron.conf文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# 1.在[database]部分,配置数据库访问:
[database]
# ...
connection = mysql+pymysql://neutron:neutron123456a?@ctl01/neutron

# 2.在[DEFAULT]部分,启用Modular Layer 2 (ML2)插件,路由服务和重叠的IP地址:
[DEFAULT]
# ...
core_plugin = ml2
service_plugins = router
allow_overlapping_ips = true

# 3.在[DEFAULT]部分,配置RabbitMQ消息队列的连接:
[DEFAULT]
# ...
transport_url = rabbit://openstack:rabbit123456@ctl01

# 4.在[DEFAULT]和[keystone_authtoken]部分,配置认证服务访问:
# 在[keystone_authtoken]中注释或者删除其他选项。
[DEFAULT]
# ...
auth_strategy = keystone

[keystone_authtoken]
# ...
auth_uri = http://ctl01:5000
auth_url = http://ctl01:35357
memcached_servers = ctl01:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = neutron
password = 123456a?

# 5.在[DEFAULT]和[nova]部分,配置网络服务来通知计算节点的网络拓扑变化:
[DEFAULT]
# ...
notify_nova_on_port_status_changes = true
notify_nova_on_port_data_changes = true

[nova]
# ...
auth_url = http://ctl01:35357
auth_type = password
project_domain_name = default
user_domain_name = default
region_name = RegionOne
project_name = service
username = nova
password = 123456a?

# 6.在[oslo_concurrency]部分,配置锁路径:
[oslo_concurrency]
# ...
lock_path = /var/lib/neutron/tmp

  1. 配置Modular Layer2(ML2)插件

注意:在你配置完ML2插件后,删除可能导致数据库不一致的type_drivers项的值。
ML2插件使用Linuxbrige机制来为实例创建layer-2虚拟网络基础设施
编辑/etc/neutron/plugins/ml2/ml2_conf.ini文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
cp /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugins/ml2/ml2_conf.ini.bak
vim /etc/neutron/plugins/ml2/ml2_conf.ini

# 1.在[ml2]部分,启用flat,VLAN以及VXLAN网络:
[ml2]
# ...
type_drivers = flat,vlan,vxlan

# 2.在[ml2]部分,启用VXLAN私有网络:
[ml2]
# ...
tenant_network_types = vxlan

# 3.在[ml2]部分,启用Linuxbridge和layer-2机制:
# 在你配置完ML2插件之后,删除可能导致数据库不一致的type_drivers项的值。
# Linuxbridge代理只支持VXLAN覆盖网络。
[ml2]
# ...
mechanism_drivers = linuxbridge,l2population

# 4.在[ml2]部分,启用端口安全扩展驱动:
[ml2]
# ...
extension_drivers = port_security

# 5.在[ml2_type_flat]部分,配置公共虚拟网络为flat网络
[ml2_type_flat]
# ...
flat_networks = provider

# 6.在[ml2_type_vxlan]部分,为私有网络配置VXLAN网络识别的网络范围:
[ml2_type_vxlan]
# ...
vni_ranges = 1:1000

# 7.在[securitygroup]部分,启用 ipset 增加安全组规则的高效性:
[securitygroup]
# ...
enable_ipset = true

  1. 配置Linuxbridge代理

Linuxbridge代理为实例建立layer-2虚拟网络并且处理安全组规则。
编辑/etc/neutron/plugins/ml2/linuxbridge_agent.ini文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
cp /etc/neutron/plugins/ml2/linuxbridge_agent.ini /etc/neutron/plugins/ml2/linuxbridge_agent.ini.bak
vim /etc/neutron/plugins/ml2/linuxbridge_agent.ini

# 1.在[linux_bridge]部分,将公共虚拟网络和公共物理网络接口对应起来:
# 替换PROVIDER_INTERFACE_NAME为基础提供程序物理网络接口的名称
[linux_bridge]
# physical_interface_mappings = provider:PROVIDER_INTERFACE_NAME
physical_interface_mappings = provider:ens33

# 2.在[vxlan]部分,启用VXLAN覆盖网络,配置覆盖网络的物理网络接口的IP地址,启用layer-2 population:
[vxlan]
enable_vxlan = true
local_ip = OVERLAY_INTERFACE_IP_ADDRESS
l2_population = true

# 3.在[securitygroup]部分,启用安全组并配置 Linuxbridge iptables firewall driver:
[securitygroup]
# ...
enable_security_group = true
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver

# 4.通过验证以下所有sysctl值都设置为1:确保您的Linux操作系统内核支持网桥过滤器:
# 要启用网络桥接支持,通常br_netfilter需要加载内核模块。
net.bridge.bridge-nf-call-iptables
net.bridge.bridge-nf-call-ip6tables

  1. 配置layer-3代理

Layer-3代理为私有虚拟网络提供路由和NAT服务
编辑/etc/neutron/l3_agent.ini文件

1
2
3
4
5
6
7
cp /etc/neutron/l3_agent.ini /etc/neutron/l3_agent.ini.bak
vim /etc/neutron/l3_agent.ini

# 在[DEFAULT]部分,配置Linuxbridge接口驱动和外部网络网桥:
[DEFAULT]
# ...
interface_driver = linuxbridge

  1. 配置DHCP代理

编辑/etc/neutron/dhcp_agent.ini文件并完成下面的操作:

1
2
3
4
5
6
7
8
9
10
cp /etc/neutron/dhcp_agent.ini /etc/neutron/dhcp_agent.ini.bak
vim /etc/neutron/dhcp_agent.ini

# 在[DEFAULT]部分,配置Linuxbridge驱动接口,DHCP驱动并启用隔离元数据
# 这样在公共网络上的实例就可以通过网络来访问元数据
[DEFAULT]
# ...
interface_driver = linuxbridge
dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq
enable_isolated_metadata = true

以上完成后,返回第一步安装并配置控制节点。
**

4. 安装和配置计算节点

计算节点处理实例的连接和安全组

  1. 安装组件

    1
    apt-get install openstack-neutron-linuxbridge ebtables ipset
  2. 配置通用组件

Networking通用组件的配置包括认证机制、消息队列和插件。
编辑/etc/neutron/neutron.conf文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
cp /etc/neutron/neutron.conf /etc/neutron/neutron.conf.bak
cat /etc/neutron/neutron.conf.bak | grep -v "^#" | grep -v '^$' > /etc/neutron/neutron.conf
vim /etc/neutron/neutron.conf

# 1.在[database]部分,注释所有connection项,因为计算节点不直接访问数据库。

# 2.在[DEFAULT]部分,配置RabbitMQ消息队列的连接:
[DEFAULT]
# ...
transport_url = rabbit://openstack:rabbit123456@ctl01
# 3.在[DEFAULT]和[keystone_authtoken]部分,配置认证服务访问:
# 在[keystone_authtoken]中注释或者删除其他选项。
[DEFAULT]
# ...
auth_strategy = keystone

[keystone_authtoken]
# ...
auth_uri = http://ctl01:5000
auth_url = http://ctl01:35357
memcached_servers = ctl01:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = neutron
password = 123456a?

# 4.在[oslo_concurrency]部分,配置锁路径:
[oslo_concurrency]
# ...
lock_path = /var/lib/neutron/tmp

  1. 配置网络选项(PASS)

OpenStack提供两种网络选项,分别为桥接模式和NAT模式
请根据计算节点网络配置进行选择。
如果计算节点配置为桥接模式,请转到第五步,如果计算节点为NAT模式,请转到第六步,配置完成后转会到这里继续配置。

  1. 为计算节点配置网络服务

编辑/etc/nova/nova.conf文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
cp /etc/nova/nova.conf /etc/nova/nova.conf.bak.new
vim /etc/nova/nova.conf

# 在[neutron]部分,配置访问参数:
[neutron]
# ...
url = http://ctl01:9696
auth_url = http://ctl01:35357
auth_type = password
project_domain_name = default
user_domain_name = default
region_name = RegionOne
project_name = service
username = neutron
password = 123456a?

  1. 重启计算服务
    1
    2
    3
    4
    service nova-compute restart
    service nova-compute status
    service neutron-openvswitch-agent restart
    service neutron-openvswitch-agent status

**

5. 在计算节点上配置网络(桥接模式)

  1. 配置Linuxbridge代理

Linuxbridge代理为实例建立layer-2虚拟网络并且处理安全组规则。
编辑/etc/neutron/plugins/ml2/linuxbridge_agent.ini文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
cp /etc/neutron/plugins/ml2/linuxbridge_agent.ini /etc/neutron/plugins/ml2/linuxbridge_agent.ini.bak
cat /etc/neutron/plugins/ml2/linuxbridge_agent.ini.bak | grep -v "^#" | grep -v '^$' > /etc/neutron/plugins/ml2/linuxbridge_agent.ini
vim /etc/neutron/plugins/ml2/linuxbridge_agent.ini

# 1.在[linux_bridge]部分,将公共虚拟网络和公共物理网络接口对应起来:
# 将PUBLIC_INTERFACE_NAME替换为底层的物理公共网络接口。
[linux_bridge]
# physical_interface_mappings = provider:PROVIDER_INTERFACE_NAME
physical_interface_mappings = provider:ens33

# 2.在[vxlan]部分,禁止VXLAN覆盖网络:
[vxlan]
enable_vxlan = false

# 3.在[securitygroup]部分,启用安全组并配置Linuxbridge iptables firewall driver:
[securitygroup]
# ...
enable_security_group = true
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver

# 4.通过验证以下所有sysctl值都设置为1:确保您的Linux操作系统内核支持网桥过滤器:
cp /etc/sysctl.conf /etc/sysctl.conf.bak
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
ll /proc/sys/net/bridge
/sbin/sysctl -p

配置完成后,返回到第四部安装和配置计算节点。
**

6. 在计算节点上配置网络(NAT模式)

  1. 配置Linux桥代理

Linux网桥代理为实例构建第二层(桥接和交换)虚拟网络基础架构并处理安全组。
编辑/etc/neutron/plugins/ml2/linuxbridge_agent.ini文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
cp  /etc/neutron/plugins/ml2/linuxbridge_agent.ini  /etc/neutron/plugins/ml2/linuxbridge_agent.ini.bak
vim /etc/neutron/plugins/ml2/linuxbridge_agent.ini

# 1.在该[linux_bridge]部分中,将提供者虚拟网络映射到提供者物理网络接口:
# 替换PROVIDER_INTERFACE_NAME为基础提供程序物理网络接口的名称。
[linux_bridge]
physical_interface_mappings = provider:PROVIDER_INTERFACE_NAME

# 2.在该[vxlan]部分中,启用VXLAN重叠网络,配置处理覆盖网络的物理网络接口的IP地址,并启用第2层填充:
# 替换OVERLAY_INTERFACE_IP_ADDRESS为处理覆盖网络的基础物理网络接口的IP地址
# 示例体系结构使用管理接口将流量隧道传输到其他节点。
# 因此,请替换OVERLAY_INTERFACE_IP_ADDRESS为计算节点的管理IP地址。
[vxlan]
enable_vxlan = true
# local_ip = OVERLAY_INTERFACE_IP_ADDRESS
local_ip = 10.0.1.62
l2_population = true

# 3.在该[securitygroup]部分中,启用安全组并配置Linux网桥iptables防火墙驱动程序:
[securitygroup]
# ...
enable_security_group = true
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver

# 4.通过验证以下所有sysctl值都设置为1:确保您的Linux操作系统内核支持网桥过滤器:
net.bridge.bridge-nf-call-iptables
net.bridge.bridge-nf-call-ip6tables

配置完成后,返回到第四部安装和配置计算节点。
**

7. 验证操作

  1. 公共网络(桥接模式)验证

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    openstack network agent list

    [root@controller neutron]# openstack network agent list
    +--------------------------------------+--------------------+------------+-------------------+-------+-------+---------------------------+
    | ID | Agent Type | Host | Availability Zone | Alive | State | Binary |
    +--------------------------------------+--------------------+------------+-------------------+-------+-------+---------------------------+
    | 25871ae8-f85c-43be-bdf0-4de975faa278 | DHCP agent | controller | nova | :-) | UP | neutron-dhcp-agent |
    | a68a3461-9ddb-4ab8-bde2-2adfad3bf806 | Metadata agent | controller | None | :-) | UP | neutron-metadata-agent |
    | a8eaabef-7faa-4f3f-9bd2-ae91e5518204 | Linux bridge agent | controller | None | :-) | UP | neutron-linuxbridge-agent |
    | c044e1df-8462-4c58-9383-80d84c12c050 | Linux bridge agent | compute1 | None | :-) | UP | neutron-linuxbridge-agent |
    +--------------------------------------+--------------------+------------+-------------------+-------+-------+---------------------------+
  2. 私有网络(NAT模式)

    1
    openstack network agent list

参考文档:

  1. https://www.jianshu.com/p/91cb126420c1