Openstack之安装neutron

来源:互联网 发布:苹果音乐制作软件 编辑:程序博客网 时间:2024/06/07 07:05

安装和配置 Network Service(网络服务)

OpenStack 网络服务(neutron),管理所有网络方面的内容。包括虚拟网络基础架构(VNI)和接入层方面的物理网络基础架构(PNI)。本章介绍在 Controller node(管理节点)安装和配置网络服务。
 先决条件
在配置 Openstack Networking(neutron) service 之前,必须创建数据库,服务凭据和 API 端点。
1. 创建数据库,并完成下列步骤:
A. 使用数据库命令行客户端,以 root 身份登录数据库服务器。

# mysql -u root -p123

B. 创建 neutron 数据库

MariaDB [(none)]> CREATE DATABASE neutron;

C. 创建数据库用户 neutron,并授予数据库用户 neutron 访问
neutron 数据库的权限。

MariaDB [(none)]> GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' IDENTIFIED BY '123456';MariaDB [(none)]> GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' IDENTIFIED BY '123456';

替换 NEUTRON_DBPASS 为一个合适的密码。
D. 退出数据库

图片一

  1. 执行 admin 凭据脚本,以便以 admin 身份执行后续命令:
# . admin-openrc
  1. 创建服务凭据,并完成下列步骤:
    A. 创建 neutron 用户:
# openstack user create --domain default --password-prompt neutron

图片二
B. 添加 admin 角色到 neutron 用户和 service 项目

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

C. 创建 neutron 服务实体:

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

图片三

  1. 创建网络服务的 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

图片四 五 六
这里写图片描述
这里写图片描述
 安装并配置服务组件
在 controller node(管理节点)安装和配置网络组件。
1. 安装组件

# yum install openstack-neutron openstack-neutron-ml2 openstack-neutron-linuxbridge ebtables ipset –y
  1. 编辑/etc/neutron/neutron.conf 文件并完成下列操作:
    A. 在[database]小节,配置数据库访问信息:
[database]# ...connection = mysql+pymysql://neutron:123@controller/neutron

替换 NEUTRON_DBPASS 为你的网络服务数据库用户 neutron 的密码。
B. 在[DEFAULT]小节,启用二层模块(ML2)插件,路由服务和重叠地址功能:

[DEFAULT]# ...core_plugin = ml2service_plugins = routerallow_overlapping_ips = true

C. 在[DEFAULT]小节,配置 RabbitMQ 消息队列访问信息:
[DEFAULT]

# ...transport_url = rabbit://openstack:123@controller

替换 RABBIT_PASS 为 RabbitMQ 用户 openstack 的密码。
D. 在[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 = 123

替换 NEUTRON_PASS 为身份服务用户 neutron 的密码。
E. 在[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 = 123替换 NOVA_PASS 为身份服务用户 nova 的密码。F. 在[oslo_concurrency]小节,配置锁路径:[oslo_concurrency]# ...lock_path = /var/lib/neutron/tmp

 配置二层(ML2)模块插件
ML2 插件使用 Linux bridge 机制为云主机建立二层虚拟网络基础。
1. 编辑/etc/neutron/plugins/ml2/ml2_conf.ini 文件并完成下列操作:
A. 在[ml2]小节,启用 flat,VLAN 和 VXLAN 网络:

[ml2]# ...type_drivers = flat,vlan,vxlan

B. 在[ml2]小节,启用 VXLAN 为用户自定义网络:

[ml2]# ...tenant_network_types = vxlan

C. 在[ml2]小节,启用 Linux bridge 和 layer-2 population 机制:

[ml2]# ...mechanism_drivers = linuxbridge,l2population

D. 在[ml2]小节,启用端口安全扩展驱动:

[ml2]# ...extension_drivers = port_security

E. 在[ml2_type_flat]小节,配置 provider 虚拟网络使用 flat 网
络:

[ml2_type_flat]# ...flat_networks = provider

F. 在[ml2_type_vxlan]小节,配置自定义 VXLAN 网络的 id 范围:

[ml2_type_vxlan]# ...vni_ranges = 1:1000

G. 在[securitygroup]小节,启用 ipset 增强安全组的工作效率:

[securitygroup]# ...enable_ipset = true

 配置 Linux bridge agent
Linux bridge agent 为云主机和处理安全组建立二层虚拟网络基础。
1. 编辑/etc/neutron/plugins/ml2/linuxbridge_agent.ini 文件并完成下列操作:
A. 在[linux_bridge]小节,映射 provider 虚拟网络到 provider 物理网络接口:

[linux_bridge]physical_interface_mappings = provider: PROVIDER_INTERFACE_NAME

替换 PROVIDER_INTERFACE_NAME 为 provider 物理网络接口的名字。
B. 在[vxlan]小节,启用 VXLAN 覆盖网络,配置处理覆盖网络物理网络接口的 IP 地址。启用 layer-2 population:

[vxlan]enable_vxlan = truelocal_ip = OVERLAY_INTERFACE_IP_ADDRESSl2_population = true

替换 OVERLAY_INTERFACE_IP_ADDRESS 为管理节点管理接口的IP地址。
C. 在[securitygroup]小节,启用安全组并配置 Linux bridge
iptables 防火墙驱动:

[securitygroup]# ...enable_security_group = truefirewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver

 配置三层代理
Layer-3 (L3) agent 为自定义虚拟网络提供路由和 NAT 服务。
1. 编辑/etc/neutron/l3_agent.ini 文件并完成下列操作:
在[DEFAULT]小节,配置 Linux bridge 接口驱动和外部网络网桥:

[DEFAULT]# ...interface_driver = linuxbridge

 配置 DHCP 代理
DHCP 代理为虚拟网络提供 DHCP 服务。
1. 编辑/etc/neutron/dhcp_agent.ini 文件并完成下列操作:
在[DEFAULT]小节,配置 Linux bridge 接口驱动,Dnsmasq DHCP 驱动并启用 isolated metadata,以便云主机可以通过 provider 网络访问元数据:

[DEFAULT]# ...interface_driver = linuxbridgedhcp_driver = neutron.agent.linux.dhcp.Dnsmasqenable_isolated_metadata = true

 配置元数据代理
metadata agent(元数据代理)提供配置信息,例如云主机的凭据。
1. 编辑/etc/neutron/metadata_agent.ini 文件并完成下列操作:
在[DEFAULT]小节,配置元数据主机和共享秘钥:

[DEFAULT]# ...nova_metadata_ip = controllermetadata_proxy_shared_secret = METADATA_SECRET

替换 METADATA_SECRET 为一个合适的密码。
 配置计算服务使用 neutron 网络
1. 编辑/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 = 123service_metadata_proxy = truemetadata_proxy_shared_secret = METADATA_SECRET

替换 NEUTRON_PASS 为身份服务中 neutron 用户的密码。替换 METADATA_SECRET 为/etc/neutron/metadata_agent.ini 文件中相同的密码。
 完成安装
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
  1. 初始化数据库
# 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

图片7
3. 重启计算的 API 服务

# systemctl restart openstack-nova-api.servicesystemctl restart openstack-nova-compute.service  
  1. 启动网络服务并配置开机自动运行:
# systemctl enable neutron-server.service neutron-linuxbridge-agent.service neutron-dhcp-agent.service neutron-metadata-agent.service neutron-l3-agent.service# systemctl start neutron-server.service neutron-linuxbridge-agent.service neutron-dhcp-agent.service neutron-metadata-agent.service neutron-l3-agent.service

这里写图片描述
这里写图片描述

 修改 VMware workstation 虚拟机和系统配置
因为 VMware workstation 虚拟机默认开启网卡 MAC 地址检查,该功能将导致云主机与 provider 网络通信异常。物理设备不会出现此异常。因此需要对虚拟机的配置文件做修改。关闭虚拟机网卡的 MAC 地址检查。将所以虚拟机关机,并修改所有虚拟机的 vmx 配置文件,添加如下配置项:

ethernet0.checkMACAddress = “FALSE”
ethernet1.checkMACAddress = “FALSE”

注:两个网卡的虚拟机添加两项,一个网卡的虚拟机添加第一项。如果使用 Linux 版本的 VMware workstation,还需要将相关网卡设备的权限设置为 666,命令如下:
chmod 666 /dev/vmnet*
 创建 provider 网络
在 controller node(管理节点)完成下列操作。
1. 执行 admin 凭据脚本,以便以 admin 身份执行后续命令:

# . admin-openrc
  1. 创建网络:
# openstack network create --share --external --provider-physical-network provider --provider-network-type flat provider

这里写图片描述

  1. 在 provider 网络上创建子网:
# openstack subnet create --network provider --allocation-pool start=192.168.67.129,end=192.168.67.254 --dns-nameserver 114.114.114.114 --gateway 192.168.67.1 --subnet-range 192.168.67.0/24 provider

这里写图片描述

 创建自定义网络
1. 在管理节点,执行 demo 凭据脚本,以便以 demo 身份执行后续命令:

# . demo-openrc
  1. 创建网络
# openstack network create selfservice

图片十二
3. 在自定义网络上创建子网

# openstack subnet create --network selfservice --dns-nameserver 114.114.114.114 --gateway 192.168.111.1 --subnet-range 192.168.111.0/24 selfservice

这里写图片描述

 创建一个路由器
1. 执行 demo 凭据脚本,以便以 demo 身份执行后续命令:

# . demo-openrc
  1. 创建路由器
# openstack router create router

这里写图片描述

  1. 将自定义网络的子网连接到路由器的接口:
# neutron router-interface-add router selfservice 

这里写图片描述

  1. 设置 provider 网络为路由器的网关:
# neutron router-gateway-set router provider

这里写图片描述

 验证操作
在 controller node(管理节点)完成下列操作。
1. 执行 admin 凭据脚本,以便以 admin 身份执行后续命令:

# . admin-openrc
  1. 列出加载的扩展模块,确认 neutron-server 服务进程成功启动:
# openstack extension list --network

这里写图片描述

  1. 列出代理确认 neutron 代理成功启动:
# openstack network agent list

这里写图片描述

4、列出网络命名空间。你因该看到一个 qrouter 命名空间和两个qdhcp 命名空间:

# ip netns

这里写图片描述
5. 列出路由器端口,查看 provider 网络分配给路由器的网关 IP:

# neutron router-port-list router

这里写图片描述

  1. 从 provider 网络其他主机 ping 该地址: