每天学习openstack(14)

来源:互联网 发布:sql server免费精简 编辑:程序博客网 时间:2024/06/06 20:19

接着上面的步骤继续安装网络服务:

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 neutronUser 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 = ml2service_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:5000auth_url = http://controller:35357memcached_servers = controller:11211auth_type = passwordproject_domain_name = defaultuser_domain_name = defaultproject_name = serviceusername = neutronpassword = NEUTRON_PASS

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

     
    注解:在 [keystone_authtoken] 中注释或者删除其他选项。
  • 在``[DEFAULT]``和``[nova]``部分,配置网络服务来通知计算节点的网络拓扑变化:

    [DEFAULT]...notify_nova_on_port_status_changes = Truenotify_nova_on_port_data_changes = True[nova]...auth_url = http://controller:35357auth_type = passwordproject_domain_name = defaultuser_domain_name = defaultregion_name = RegionOneproject_name = serviceusername = novapassword = 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 = Truefirewall_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.BridgeInterfaceDriverdhcp_driver = neutron.agent.linux.dhcp.Dnsmasqenable_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 = controllermetadata_proxy_shared_secret = METADATA_SECRE
6.配置计算服务来使用网络服务

修改配置文件:/etc/nova/nova.conf

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

[neutron]...url = http://controller:9696auth_url = http://controller:35357auth_type = passwordproject_domain_name = defaultuser_domain_name = defaultregion_name = RegionOneproject_name = serviceusername = neutronpassword = NEUTRON_PASSservice_metadata_proxy = Truemetadata_proxy_shared_secret = METADATA_SECRET
6.完成安装

  1. 网络服务初始化脚本需要一个超链接 /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
  2. 同步数据库:

    # 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 之后,因为脚本需要完成服务器和插件的配置文件。
  3. 重启计算API 服务:

    # systemctl restart openstack-nova-api.service
  4. 当系统启动时,启动 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


0 0