博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
OpenStack安装流程(juno版)- 添加网络服务(neutron)
阅读量:6898 次
发布时间:2019-06-27

本文共 14296 字,大约阅读时间需要 47 分钟。

在controller节点上安装和配置

创建nova的数据库,服务证书和API端点

  1. 创建数据库:
    使用root身份进入数据库:
    $ mysql -u root -p

    创建nova数据库:

    <pre>CREATE DATABASE neutron;</pre>

    把neutron数据库的访问权限赋予名为neutron,来自任何主机地址的用户,并设定访问密码为NEUTRON_DBPASS(替换为合适的密码):

    <pre>GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' IDENTIFIED BY 'NEUTRON_DBPASS';

GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' IDENTIFIED BY 'NEUTRON_DBPASS';</pre>

退出数据库。

  1. 启动admin证书:
    $ source admin-openrc.sh
  2. 创建服务证书:
    创建neutron用户:
    <pre>$ keystone user-create --name neutron --pass NEUTRON_PASS
Property Value
email
enabled True
id 03fdaa93a85b4879a898d031947b81af
name neutron
username neutron

+----------+----------------------------------+</pre>

用合适的密码代替NEUTRON_PASS。

admin角色赋予给neutron用户:

$ keystone user-role-add --user neutron --tenant service --role admin
这条命令不产生输出显示。

创建neutron服务实体:

<pre>$ keystone service-create --name neutron --type network \

--description "OpenStack Networking"
Property Value
description OpenStack Networking
enabled True
id d3cf8211db414c069701f39e778d9765
name neutron
type network

+-------------+----------------------------------+</pre>

  1. 创建网络服务的API端点:
    <pre>$ keystone endpoint-create \

--service-id $(keystone service-list | awk '/ network / {print $2}') \

--publicurl :9696 \
--adminurl :9696 \
--internalurl :9696 \

--region regionOne
Property Value
adminurl :9696
id eb7fd6b67e4d4479886d164486a3fb71
internalurl :9696
publicurl :9696
region regionOne
service_id d3cf8211db414c069701f39e778d9765

+-------------+----------------------------------+</pre>

安装neutron组件

# apt-get install neutron-server neutron-plugin-ml2 python-neutronclient

配置网络服务组件

编辑# vi /etc/neutron/neutron.conf文件:

[database]部分,设定数据库的访问选项,需把原始设定注释掉:
<pre>[database]
...
connection = mysql://neutron:NEUTRON_DBPASS@controller/neutron
</pre>
NEUTRON_DBPASS为创建neutron数据库时设立的密码。

[DEFAULT]部分,设定RabbitMQ的访问选项:

<pre>[DEFAULT]
...
rpc_backend = rabbit
rabbit_host = controller
rabbit_password = RABBIT_PASS
</pre>
RABBIT_PASS为RabbitMQ guest账户的密码。

[DEFAULT][keystone_authtoken]部分,设定认证服务的访问选项:

<pre>[DEFAULT]
...
auth_strategy = keystone
</pre>
<pre>[keystone_authtoken]
...
auth_uri = :5000/v2.0
identity_uri = :35357
admin_tenant_name = service
admin_user = neutron
admin_password = NEUTRON_PASS
</pre>
NEUTRON_PASS为创建neutron用户时使用的密码。在[keystone_authtoken]部分,注释掉 auth_host,auth_port,和auth_protocol的选项,因为identity_uri选项是直接代替它们的。

[DEFAULT]部分,开启Modular Layer 2(ML2)plug-in选项,设定router service和overlapping IP addresses选项:

<pre>[DEFAULT]
...
core_plugin = ml2
service_plugins = router
allow_overlapping_ips = True
</pre>

[DEFAULT]部分,设定网络服务可以通知计算服务网络拓扑的变化:

<pre>[DEFAULT]
...
notify_nova_on_port_status_changes = True
notify_nova_on_port_data_changes = True
nova_url = :8774/v2
nova_admin_auth_url = :35357/v2.0
nova_region_name = regionOne
nova_admin_username = nova
nova_admin_tenant_id = SERVICE_TENANT_ID
nova_admin_password = NOVA_PASS
</pre>
NEUTRON_PASS为创建neutron用户时使用的密码。SERVICE_TENANT_ID为认证服务中service租户的ID,可以通过以下命令取得:
<pre>$ source admin-openrc.sh

$ keystone tenant-get service
Property Value
description Service Tenant
enabled True
id 5ab4d5c513f543cfbf8e3be97f5df5fb
name service

+-------------+----------------------------------+</pre>

[DEFAULT]部分,开启“详细输出日志”选项:

<pre>[DEFAULT]
...
verbose = True
</pre>

配置 Modular Layer 2(ML2)plug-in

ML2 plug-in使用Open vSwitch(OVS)机制(agent)来创建虚拟网络框架。由于controller节点不处理实例之间的网络通信,故不需要OVS组件。

编辑# vi /etc/neutron/plugins/ml2/ml2_conf.ini文件:

[ml2]部分,启用flat和generic routing encapsulation(GRE)网络类型的驱动( network type drivers),GRE 租户网络和OVS机制的驱动:

<pre>[ml2]
...
type_drivers = flat,gre
tenant_network_types = gre
mechanism_drivers = openvswitch
</pre>

[ml2_type_gre]部分,配置tunnel ID的范围:

<pre>[ml2_type_gre]
...
tunnel_id_ranges = 1:1000
</pre>

[securitygroup]部分,启用security groups,ipset, and configure,设定OVS iptables firewall driver:

<pre>[securitygroup]
...
enable_security_group = True
enable_ipset = True
firewall_driver = neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver
</pre>

配置计算服务使之使用网络服务

编辑# vi /etc/nova/nova.conf文件:

[DEFAULT]部分,设定API和驱动:
<pre>[DEFAULT]
...
network_api_class = nova.network.neutronv2.api.API
security_group_api = neutron
linuxnet_interface_driver = nova.network.linux_net.LinuxOVSInterfaceDriver
firewall_driver = nova.virt.firewall.NoopFirewallDriver
</pre>

[neutron]部分,设定访问参数:

<pre>[neutron]
...
url = :9696
auth_strategy = keystone
admin_auth_url = :35357/v2.0
admin_tenant_name = service
admin_username = neutron
admin_password = NEUTRON_PASS
</pre>
NEUTRON_PASS为创建neutron用户时使用的密码。

完成安装

  1. 同步数据库:
    # neutron-db-manage --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade juno
  2. 重启计算服务:
    # service nova-api restart
    # service nova-scheduler restart
    # service nova-conductor restart
  3. 重启网络服务:
    # service neutron-server restart

验证操作

  1. 启动admin证书:
    $ source admin-openrc.sh
  2. 显示装载的扩展列表,验证neutron-server进程已成功启动:
    <pre>$ neutron ext-list
alias name
security-group security-group
l3_agent_scheduler L3 Agent Scheduler
ext-gw-mode Neutron L3 Configurable external gateway mode
binding Port Binding
provider Provider Network
agent agent
quotas Quota management support
dhcp_agent_scheduler DHCP Agent Scheduler
l3-ha HA Router extension
multi-provider Multi Provider Network
external-net Neutron external network
router Neutron L3 Router
allowed-address-pairs Allowed Address Pairs
extraroute Neutron Extra Route
extra_dhcp_opt Neutron Extra DHCP opts
dvr Distributed Virtual Router

+-----------------------+-----------------------------------------------+</pre>

在network节点上安装和配置

设定kernel networking参数:

  1. 编辑# vi /etc/sysctl.conf文件:

<pre>net.ipv4.ip_forward=1

net.ipv4.conf.all.rp_filter=0
net.ipv4.conf.default.rp_filter=0
</pre>

  1. 使上述变化生效:

# sysctl -p

安装网络服务组件

# apt-get install neutron-plugin-ml2 neutron-plugin-openvswitch-agent \

neutron-l3-agent neutron-dhcp-agent

配置网络服务的通用组件

编辑# vi /etc/neutron/neutron.conf文件:

[database]部分,注释掉connection选项,因为network节点不需要直接访问数据库。

[DEFAULT]部分,设定RabbitMQ的访问选项:

<pre>[DEFAULT]
...
rpc_backend = rabbit
rabbit_host = controller
rabbit_password = RABBIT_PASS
</pre>
RABBIT_PASS为RabbitMQ guest账户的密码。

[DEFAULT][keystone_authtoken]部分,设定认证服务的访问选项:

<pre>[DEFAULT]
...
auth_strategy = keystone
</pre>
<pre>[keystone_authtoken]
...
auth_uri = :5000/v2.0
identity_uri = :35357
admin_tenant_name = service
admin_user = neutron
admin_password = NEUTRON_PASS
</pre>
NEUTRON_PASS为创建neutron用户时使用的密码。在[keystone_authtoken]部分,注释掉 auth_host,auth_port,和auth_protocol的选项,因为identity_uri选项是直接代替它们的。

[DEFAULT]部分,开启Modular Layer 2(ML2)plug-in选项,设定router service和overlapping IP addresses选项:

<pre>[DEFAULT]
...
core_plugin = ml2
service_plugins = router
allow_overlapping_ips = True
</pre>

[DEFAULT]部分,开启“详细输出日志”选项:

<pre>[DEFAULT]
...
verbose = True
</pre>

设定Modular Layer 2(ML2)plug-in

编辑# vi /etc/neutron/plugins/ml2/ml2_conf.ini文件:

[ml2]部分,启用flat和generic routing encapsulation(GRE)网络类型的驱动( network type drivers),GRE 租户网络和OVS机制的驱动:

<pre>[ml2]
...
type_drivers = flat,gre
tenant_network_types = gre
mechanism_drivers = openvswitch
</pre>

[ml2_type_flat]部分,设定external flat provider network:

<pre>[ml2_type_flat]
...
flat_networks = external
</pre>

[ml2_type_gre]部分,设定tunnel ID范围:

<pre>[ml2_type_gre]
...
tunnel_id_ranges = 1:1000
</pre>

[securitygroup]部分,启用security groups,ipset, and configure,设定OVS iptables firewall driver:

<pre>[securitygroup]
...
enable_security_group = True
enable_ipset = True
firewall_driver = neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver
</pre>

[ovs]部分,启用tunnel,设定local tunnel endpoint,把external flat provider network和br-ex external network brigde绑定起来:

<pre>[ovs]
...
local_ip = INSTANCE_TUNNELS_INTERFACE_IP_ADDRESS
enable_tunneling = True
bridge_mappings = external:br-ex
</pre>
INSTANCE_TUNNELS_INTERFACE_IP_ADDRESS为network节点在tunnel network中的IP地址。

[agent]部分,启用GRE tunnels:

<pre>[agent]
...
tunnel_types = gre
</pre>

设定Layer-3(L3)agent

Layer-3(L3)agent为虚拟网络提供了routing service。

编辑# vi /etc/neutron/l3_agent.ini文件:

[DEFAULT]部分,设定驱动,启用network namespace,设定external network bridge,启用deletion of defunct router namespaces:

<pre>[DEFAULT]
...
interface_driver = neutron.agent.linux.interface.OVSInterfaceDriver
use_namespaces = True
external_network_bridge = br-ex
router_delete_namespaces = True
</pre>

[DEFAULT]部分,开启“详细输出日志”选项:

<pre>[DEFAULT]
...
verbose = True
</pre>

设定DHCP agent

DHCP agent为虚拟网络提供了DHCP服务。

编辑# vi /etc/neutron/dhcp_agent.ini 文件:

[DEFAULT]部分,设定驱动,启用namespaces,启用deletion of defunct DHCP namespaces:

<pre>[DEFAULT]
...
interface_driver = neutron.agent.linux.interface.OVSInterfaceDriver
dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq
use_namespaces = True
dhcp_delete_namespaces = True
</pre>

[DEFAULT]部分,开启“详细输出日志”选项:

<pre>[DEFAULT]
...
verbose = True
</pre>

设定metadata agent

metadata agent提供了配置信息,比如实例的证书。

  1. 编辑# vi /etc/neutron/metadata_agent.ini文件:

    [DEFAULT]部分,设定访问参数:

    <pre>[DEFAULT]

...

auth_url = :5000/v2.0
auth_region = regionOne
admin_tenant_name = service
admin_user = neutron
admin_password = NEUTRON_PASS</pre>
NEUTRON_PASS为创建neutron用户时使用的密码。

[DEFAULT]部分,设定metadata host:

<pre>[DEFAULT]
...
nova_metadata_ip = controller
</pre>

[DEFAULT]部分,设定metadata proxy shared secret:

<pre>[DEFAULT]
...
metadata_proxy_shared_secret = METADATA_SECRET
</pre>
把METADATA_SECRET替换为合适的密码。

[DEFAULT]部分,开启“详细输出日志”选项:

<pre>[DEFAULT]
...
verbose = True
</pre>

  1. 在controller节点,编辑# vi /etc/nova/nova.conf文件:
    [neutron]部分,启用metadata proxy,设定密码选项:
    <pre>[neutron]

...

service_metadata_proxy = True
metadata_proxy_shared_secret = METADATA_SECRET</pre>
把METADATA_SECRET替换为metadata proxy中设定的密码。

  1. 在controller节点,重启计算的API服务:
    # service nova-api restart

设定Open vSwitch(OVS)服务:

OVS服务为实例提供虚拟网络框架。integration bridge br-int处理内网通信,external bridge br-ex处理外网通信。external bridge需要物理外网提供一个访问端口,来连接物理网络和虚拟网络。

  1. 重启OVS服务:

# service openvswitch-switch restart

  1. 添加external bridge:

# ovs-vsctl add-br br-ex

  1. 把端口添加到external bridge中,来连接物理外网:

# ovs-vsctl add-port br-ex INTERFACE_NAME

INTERFACE_NAME替换为实际的interface name,本文的网络配置方案下为eth2

完成安装

重启网络服务:

# service neutron-plugin-openvswitch-agent restart
# service neutron-l3-agent restart
# service neutron-dhcp-agent restart
# service neutron-metadata-agent restart

验证操作

在controller节点上进行如下操作。

  1. 启动admin证书:
    $ source admin-openrc.sh
  2. 显示agent列表,验证neutron agent已成功启动:
    <pre>$ neutron agent-list
id agent_type host alive admin_state_up binary
2be5bff5-2d4b-4308-9d8e-218f86f0884e DHCP agent network :-) True neutron-dhcp-agent
35e5874c-0e45-44b1-95e5-f5ac94a1b9d5 L3 agent network :-) True neutron-l3-agent
7debcbec-b316-490e-baa1-1a6bb74fcbbb Open vSwitch agent network :-) True neutron-openvswitch-agent
c35af91b-9f6b-4632-bc10-aa67c8a75ae1 Metadata agent network :-) True neutron-metadata-agent

+--------------------------------------+--------------------+---------+-------+----------------+---------------------------+</pre>

在compute节点上安装和配置

设定kernel networking参数:

  1. 编辑# vi /etc/sysctl.conf文件:
    <pre>net.ipv4.conf.all.rp_filter=0

net.ipv4.conf.default.rp_filter=0</pre>

  1. 使上述变化生效:

# sysctl -p

安装网络服务组件

# apt-get install neutron-plugin-ml2 neutron-plugin-openvswitch-agent

配置网络服务的通用组件

编辑# vi /etc/neutron/neutron.conf文件:

[database]部分,注释掉connection选项,因为compute节点不需要直接访问数据库。

[DEFAULT]部分,设定RabbitMQ的访问选项:

<pre>[DEFAULT]
...
rpc_backend = rabbit
rabbit_host = controller
rabbit_password = RABBIT_PASS
</pre>
RABBIT_PASS为RabbitMQ guest账户的密码。

[DEFAULT][keystone_authtoken]部分,设定认证服务的访问选项:

<pre>[DEFAULT]
...
auth_strategy = keystone
</pre>
<pre>[keystone_authtoken]
...
auth_uri = :5000/v2.0
identity_uri = :35357
admin_tenant_name = service
admin_user = neutron
admin_password = NEUTRON_PASS
</pre>
NEUTRON_PASS为创建neutron用户时使用的密码。在[keystone_authtoken]部分,注释掉 auth_host,auth_port,和auth_protocol的选项,因为identity_uri选项是直接代替它们的。

[DEFAULT]部分,开启Modular Layer 2(ML2)plug-in选项,设定router service和overlapping IP addresses选项:

<pre>[DEFAULT]
...
core_plugin = ml2
service_plugins = router
allow_overlapping_ips = True
</pre>

[DEFAULT]部分,开启“详细输出日志”选项:

<pre>[DEFAULT]
...
verbose = True
</pre>

设定Modular Layer 2(ML2)plug-in

编辑# vi /etc/neutron/plugins/ml2/ml2_conf.ini文件:

[ml2]部分,启用flat和generic routing encapsulation(GRE)网络类型的驱动( network type drivers),GRE 租户网络和OVS机制的驱动:

<pre>[ml2]
...
type_drivers = flat,gre
tenant_network_types = gre
mechanism_drivers = openvswitch
</pre>

[ml2_type_gre]部分,设定tunnel ID范围:

<pre>[ml2_type_gre]
...
tunnel_id_ranges = 1:1000
</pre>

[securitygroup]部分,启用security groups,ipset, and configure,设定OVS iptables firewall driver:

<pre>[securitygroup]
...
enable_security_group = True
enable_ipset = True
firewall_driver = neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver
</pre>

[ovs]部分,启用tunnel,设定local tunnel endpoint,把external flat provider network和br-ex external network brigde绑定起来:

<pre>[ovs]
...
local_ip = INSTANCE_TUNNELS_INTERFACE_IP_ADDRESS
enable_tunneling = True
bridge_mappings = external:br-ex
</pre>
INSTANCE_TUNNELS_INTERFACE_IP_ADDRESS为network节点在tunnel network中的IP地址。

[agent]部分,启用GRE tunnels:

<pre>[agent]
...
tunnel_types = gre
</pre>

配置Open vSwitch(OVS)服务

重启OVS服务:

# service openvswitch-switch restart

配置计算服务使之使用网络服务

编辑# vi /etc/nova/nova.conf文件:

[DEFAULT]部分,设定API和驱动:
<pre>[DEFAULT]
...
network_api_class = nova.network.neutronv2.api.API
security_group_api = neutron
linuxnet_interface_driver = nova.network.linux_net.LinuxOVSInterfaceDriver
firewall_driver = nova.virt.firewall.NoopFirewallDriver
</pre>

[neutron]部分,设定访问参数:

<pre>[neutron]
...
url = :9696
auth_strategy = keystone
admin_auth_url = :35357/v2.0
admin_tenant_name = service
admin_username = neutron
admin_password = NEUTRON_PASS
</pre>
NEUTRON_PASS为创建neutron用户时使用的密码。

完成安装

  1. 重启计算服务:

# service nova-compute restart

  1. 重启OVS agent:

# service neutron-plugin-openvswitch-agent restart

验证操作

在controller节点上执行如下操作:

  1. 启动admin证书:
    $ source admin-openrc.sh
  2. 显示agent列表,验证neutron agent已成功启动:
    <pre>$ neutron agent-list
id agent_type host alive admin_state_up binary
03586491-fbf0-495f-93d9-77704ffdba61 Open vSwitch agent compute :-) True neutron-openvswitch-agent
2be5bff5-2d4b-4308-9d8e-218f86f0884e DHCP agent network xxx True neutron-dhcp-agent
35e5874c-0e45-44b1-95e5-f5ac94a1b9d5 L3 agent network xxx True neutron-l3-agent
7debcbec-b316-490e-baa1-1a6bb74fcbbb Open vSwitch agent network xxx True neutron-openvswitch-agent
c35af91b-9f6b-4632-bc10-aa67c8a75ae1 Metadata agent network xxx True neutron-metadata-agent

+--------------------------------------+--------------------+---------+-------+----------------+---------------------------+</pre>

转载地址:http://tycdl.baihongyu.com/

你可能感兴趣的文章
http复习
查看>>
HDU 2089 不要62(数位简单DP)
查看>>
flex模拟微信布局
查看>>
oracle in 超1000方案
查看>>
多线程测试java接口
查看>>
CICS的database中R D中参数的含义
查看>>
SSSE3指令集----水平加法指令饱和字节乘加指令以及字节重排指令
查看>>
with 语句
查看>>
关于mac ox node安装报 npm ERR! registry error parsing json
查看>>
USB通讯协议之深入理解
查看>>
推荐系统-02-推荐技术
查看>>
js基础知识点总结
查看>>
Android在Adapter里面调用Activity的方法/变量
查看>>
HTML5的新增方法
查看>>
c primer plus(五版)编程练习-第六章编程练习
查看>>
实验十——一维数组的定义及引用
查看>>
VC6 下学习使用Teechart8记录
查看>>
protobuf c++例子
查看>>
《TCP/IP详解1》笔记(第1章 概述)
查看>>
Dubbo项目实战 (二) 注册中心zookeeper-3.4.6集群以及高可用
查看>>