您的位置:首页 > 运维架构

每天学习openstack(14)

2017-01-05 16:40 162 查看
接着上面的步骤继续安装网络服务:

1.网络服务介绍

openstack network service(neutron):是opensatck核心组件之一,提供云计算环境下的虚拟网络功能。

2.网络服务组件介绍

neutron-server:这一部分包含守护进程neutron-server 和各种插件 neutron-*-plugin,它们既可以安装在控制节点也可以安装在网络节点。neutron-server 提供 API 接口,并把对 API 的调用请求传给已经配置好的插件进行后续处理。插件需要访问数据库来维护各种配置数据和对应关系,例如路由器、网络、子网、端口、浮动IP、安全组等等。

openstack网络插件和代理:Plug and unplug ports, create
networks or subnets, and provide IP addressing. These plug-ins and agents differ depending on the vendor and technologies used in the particular cloud. OpenStack Networking ships with plug-ins and agents for Cisco virtual and physical switches, NEC OpenFlow
products, Open vSwitch, Linux bridging, and the VMware NSX product.

常见的代理L3(3层),DHCP(动态主机IP地址),以及插件代理。

详解opensatck网络插件和代理:

插件代理(Plugin Agent):虚拟网络上的数据包的处理则是由这些插件代理来完成的。名字为 neutron-*-agent。在每个计算节点和网络节点上运行。一般来说你选择了什么插件,就需要选择相应的代理。代理与 Neutron Server 及其插件的交互就通过消息队列来支持。

提示:插件代理需要部署在每一个运行hypervisor的主机上,它提供本地的vSwitch配置,更多的时候得依赖你具体所使用的插件类型。(常用的插件是OpenvSwitch,还包括Big Switch,Floodinght REST Proxy,Brocade, NSX,

PLUMgrid, Ryu)
DHCP 代理(DHCP Agent):名字为 neutron-dhcp-agent,为各个租户网络提供 DHCP 服务,部署在网络节点上,各个插件也是使用这一个代理。DHCP代理,给租户网络提供动态主机配置服务,主要用途是为租户网络内的虚拟机动态地分配IP地址。
3 层代理(L3 Agent):名字为 neutron-l3-agent, 为客户机访问外部网络提供 3 层转发服务。也部署在网络节点上。提供三层网络功能和网络地址转换(NAT)功能,来让租户的虚拟机可以与外部网络通信。
下面这张图很好的反映了 Neutron 内部各部分服务之间的关系。



neutron服务进程运行图如下:



消息队列:大多数的OpenStack Networking安装都会用到,用于在neutron-server和各种各样的代理进程间路由信息。也为某些特定的插件扮演数据库的角色,以存储网络状态。
点击这里详细了解网络概念
3.安装并配置控制节点:

1.先决条件

创建数据库并授权:

mysql> CREATE DATABASE neutron;

mysql> GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' \
IDENTIFIED BY 'NEUTRON_DBPASS';
mysql> GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' \
IDENTIFIED BY 'NEUTRON_DBPASS';

2.获得admin账号权限

source openrc

3.创建neutron用户并添加角色到admin

$ openstack user create --domain default --password-prompt neutron

User Password:
Repeat User Password:
+---------------------+----------------------------------+
| Field               | Value                            |
+---------------------+----------------------------------+
| domain_id           | default                          |
| enabled             | True                             |
| id                  | 319f34694728440eb8ffcb27b6dd8b8a |
| name                | neutron                          |
| password_expires_at | None                             |
+---------------------+----------------------------------+

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

4.创建服务

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

+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | OpenStack Networking             |
| enabled     | True                             |
| id          | f71529314dab4a4d8eca427e701d209e |
| name        | neutron                          |
| type        | network                          |
+-------------+----------------------------------+

$ openstack endpoint create --region RegionOne \
network public http://controller:9696 
+--------------+----------------------------------+
| Field        | Value                            |
+--------------+----------------------------------+
| enabled      | True                             |
| id           | 85d80a6d02fc4b7683f611d7fc1493a3 |
| interface    | public                           |
| region       | RegionOne                        |
| region_id    | RegionOne                        |
| service_id   | f71529314dab4a4d8eca427e701d209e |
| service_name | neutron                          |
| service_type | network                          |
| url          | http://controller:9696           |
+--------------+----------------------------------+

$ openstack endpoint create --region RegionOne \
network internal http://controller:9696 
+--------------+----------------------------------+
| Field        | Value                            |
+--------------+----------------------------------+
| enabled      | True                             |
| id           | 09753b537ac74422a68d2d791cf3714f |
| interface    | internal                         |
| region       | RegionOne                        |
| region_id    | RegionOne                        |
| service_id   | f71529314dab4a4d8eca427e701d209e |
| service_name | neutron                          |
| service_type | network                          |
| url          | http://controller:9696           |
+--------------+----------------------------------+

$ openstack endpoint create --region RegionOne \
network admin http://controller:9696 
+--------------+----------------------------------+
| Field        | Value                            |
+--------------+----------------------------------+
| enabled      | True                             |
| id           | 1ee14289c9374dffb5db92a5c112fc4e |
| interface    | admin                            |
| region       | RegionOne                        |
| region_id    | RegionOne                        |
| service_id   | f71529314dab4a4d8eca427e701d209e |
| service_name | neutron                          |
| service_type | network                          |
| url          | http://controller:9696           |
+--------------+----------------------------------+

4.安装软件

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

5.配置服务组件

注意:默认配置文件在各发行版本中可能不同。你可能需要添加这些部分,选项而不是修改已经存在的部分和选项。另外,在配置片段中的省略号(
...
)表示默认的配置选项你应该保留。

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

在 
[database]
 部分,配置数据库访问:

[database]
...
connection = mysql+pymysql://neutron:NEUTRON_DBPASS@controller/neutron


使用你设置的数据库密码替换 
NEUTRON_DBPASS
 。

 
注解:注释或删除``[database]``部分除``connection`以外的所有内容

在``[DEFAULT]``部分,启用ML2插件并禁用其他插件:

[DEFAULT]
...
core_plugin = ml2
service_plugins =


在``[DEFAULT]``部分,配置``RabbitMQ``消息队列访问权限:

[DEFAULT]
...
transport_url = rabbit://openstack:RABBIT_PASS@controller


用你在RabbitMQ中为``openstack``选择的密码替换 “RABBIT_PASS”。

在 “[DEFAULT]” 和 “[keystone_authtoken]” 部分,配置认证服务访问:

[DEFAULT]
...
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 = NEUTRON_PASS


将 
NEUTRON_PASS
 替换为你在认证服务中为 
neutron
 用户选择的密码。

 
注解:在 
[keystone_authtoken]
 中注释或者删除其他选项。

在``[DEFAULT]``和``[nova]``部分,配置网络服务来通知计算节点的网络拓扑变化:

[DEFAULT]
...
notify_nova_on_port_status_changes = True
notify_nova_on_port_data_changes = True

[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 = NOVA_PASS


使用你在身份认证服务中设置的``nova`` 用户的密码替换``NOVA_PASS``。

在 
[oslo_concurrency]
 部分,配置锁路径:

[oslo_concurrency]
...
lock_path = /var/lib/neutron/tmp


      。在“[oslo_messaging_rabbit]”部分,配置 “RabbitMQ” 消息队列的连接:

rpc_backend = rabbit

rabbit_host = 192.168.141.170

rabbit_userid = openstack

rabbit_password = openstack (密码)


2.配置ml2插件

注释:ML2插件使用Linuxbridge机制来为实例创建layer-2虚拟网络基础设施

修改配置文件/etc/neutron/plugins/ml2/ml2_conf.ini:

在``[ml2]``部分,启用flat和VLAN网络:

[ml2]
...
type_drivers = flat,vlan


在``[ml2]``部分,禁用私有网络:

[ml2]
...
tenant_network_types =


在``[ml2]``部分,启用Linuxbridge机制:

[ml2]
...
mechanism_drivers = linuxbridge


 
警告:在你配置完ML2插件之后,删除可能导致数据库不一致的``type_drivers``项的值。

在``[ml2]`` 部分,启用端口安全扩展驱动:

[ml2]
...
extension_drivers = port_security


在``[ml2_type_flat]``部分,配置公共虚拟网络为flat网络:

[ml2_type_flat]
...
flat_networks = provider


在 ``[securitygroup]``部分,启用 ipset 增加安全组的方便性:

[securitygroup]
...
enable_ipset = True


3.配置linuxbridge代理

注释:Linuxbridge代理为实例建立layer-2虚拟网络并且处理安全组规则

修改配置文件:/etc/neutron/plugins/ml2/linuxbridge_agent.ini

在``[linux_bridge]``部分,将公共虚拟网络和公共物理网络接口对应起来:

[linux_bridge]
physical_interface_mappings = provider:PROVIDER_INTERFACE_NAME


将``PUBLIC_INTERFACE_NAME`` 替换为底层的物理公共网络接口。请查看:ref:environment-networking for more information。

在``[vxlan]``部分,禁止VXLAN覆盖网络:

[vxlan]
enable_vxlan = False


在 ``[securitygroup]``部分,启用安全组并配置
Linux 桥接 iptables 防火墙驱动:

[securitygroup]
...
enable_security_group = True
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver


4.配置dhcp代理

注释:The DHCP
agent provides DHCP services for virtual networks.

修改配置文件:/etc/neutron/dhcp_agent.ini

在``[DEFAULT]``部分,配置Linuxbridge驱动接口,DHCP驱动并启用隔离元数据,这样在公共网络上的实例就可以通过网络来访问元数据

[DEFAULT]
...
interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver
dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq
enable_isolated_metadata = True


5.配置元数据代理
注释:The metadata
agent provides configuration information such as credentials to instances.

修改配置文件:/etc/neutron/metadata_agent.ini

在``[DEFAULT]`` 部分,配置元数据主机以及共享密码:

[DEFAULT]
...
nova_metadata_ip = controller
metadata_proxy_shared_secret = METADATA_SECRE


6.配置计算服务来使用网络服务
修改配置文件:/etc/nova/nova.conf

在``[neutron]``部分,配置访问参数,启用元数据代理并设置密码:

[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 = METADATA_SECRET


6.完成安装

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

# 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


 
注解:数据库的同步发生在 Networking 之后,因为脚本需要完成服务器和插件的配置文件。

重启计算API 服务:

# systemctl restart openstack-nova-api.service


当系统启动时,启动 Networking 服务并配置它启动。
对于两种网络选项:

# 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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: