第十部分 安装网络服务 neutron

一、准备工作

安装网络服务 neutron 之前,要先做好以下准备工作

1、备份目前的 vmware-workstation 虚拟机

关闭 2 台虚拟机,在 windows 资源管理器中找到安装 vmware-workstation 虚拟机的文件夹,备份一下这个文件夹。

1.png

2、备份好之后开启 2 台虚拟机,将虚拟机的网卡 ens34 调整成混杂模式,控制节点和计算节点均执行

在控制节点完成以下操作:
yum install net-tools -y
ifconfig ens34 promisc
ip addr
image.png

控制节点 ens34 网卡信息中有 PROMISC 字样表示已经启用混杂模式。
在计算节点完成以下操作:
yum install net-tools -y
ifconfig ens34 promisc
ip addr
image.png

计算节点 ens34 网卡信息中有 PROMISC 字样表示已经启用混杂模式。

将上述命令写入到 / etc/profile 使下次重启后也生效:

vim /etc/profile

ifconfig ens34 promisc

image.png

3、重启网络,确认主机间的网络通讯

计算节点和控制节点相互能ping通。
systemctl restart network

ping compute
image.png
ping controller

image.png

4、在控制节点确认到目前为止所安装的服务都正常运行

. /openrc/admin_openrc

检查 keystone

openstack token issue

image.png

检查 glance

openstack image list

image.png

检查 placement

placement-status upgrade check

image.png

检查 nova

openstack compute service list

image.png

nova-status upgrade check

image.png

二、在控制节点安装网络服务 neutron

结合上一节所讲的物理部署,控制节点主要安装 neutron 的下面组件

OpenStack Train版双节点安装(十)安装网络服务neutron - 图12

由于下面使用的是二层网络架构,所以不按照 l3 三层网络的相关组件。

下面在控制节点(controller)进行操作安装 Neurton 网络服务

创建 Neutron 数据库

mysql -u root -p
MariaDB [(none)] > CREATE DATABASE neutron;

数据库授权

MariaDB [(none)]> GRANT ALL PRIVILEGES ON neutron. TO ‘neutron’@’localhost’ IDENTIFIED BY ‘000000’;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON neutron.
TO ‘neutron’@’%’ IDENTIFIED BY ‘000000’;
注意:NEUTRON_DBPASS替换为000000
image.png

创建 neutron 用户

. /openrc/admin_openrc
openstack user create —domain default —password 000000 neutron
注意NEUTRON_PASS替换为000000
image.png

向 neutron 用户添加 admin 角色

openstack role add —project service —user neutron admin

创建 neutron 服务实体

openstack service create —name neutron —description “OpenStack Networking” network
image.png

创建 neutron 服务端点

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

image.png
image.png

配置二层网络(官方文档为提供商网络)

1、安装软件包

yum install openstack-neutron openstack-neutron-ml2 openstack-neutron-linuxbridge ebtables -y

注释:openstack-neutron:neutron-server 的包
openstack-neutron-ml2:ML2 plugin 的包
openstack-neutron-linuxbridge:linux bridge network provider 相关的包
ebtables:防火墙相关的包

image.png

2、修改 neutron 配置文件(共有 5 个配置文件需要修改)

(1)neutron server 的配置文件 neutron.conf
cp /etc/neutron/neutron.conf /etc/neutron/neutron.conf.bak
grep -Ev ‘^$|#’ /etc/neutron/neutron.conf.bak>/etc/neutron/neutron.conf
vim /etc/neutron/neutron.conf
[database](加 1 行)
connection = mysql+pymysql://neutron:000000@controller/neutron

[DEFAULT](加 6 行)
core_plugin = ml2
service_plugins =

transport_url = rabbit://openstack:000000@controller
auth_strategy = keystone
notify_nova_on_port_status_changes = true
notify_nova_on_port_data_changes = true

[keystone_authtoken](加 9 行)
www_authenticate_uri = http://controller:5000
auth_url = http://controller:5000
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = neutron
password = 000000

[nova]
#([nova]自己加,加 8 行)
auth_url = http://controller:5000
auth_type = password
project_domain_name = default
user_domain_name = default
region_name = RegionOne
project_name = service
username = nova
password = 000000

[oslo_concurrency](加 1 行)
lock_path = /var/lib/neutron/tmp

(2)ML2 plugin 的配置文件 ml2_conf.ini
cp /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugins/ml2/ml2_conf.ini.bak
grep -Ev ‘^$|#’ /etc/neutron/plugins/ml2/ml2_conf.ini.bak>/etc/neutron/plugins/ml2/ml2_conf.ini
vim /etc/neutron/plugins/ml2/ml2_conf.ini

以下内容自己加。
[ml2]
type_drivers = flat,vlan
tenant_network_types =
mechanism_drivers = linuxbridge
extension_drivers = port_security

[ml2_type_flat]
flat_networks = provider

[securitygroup]
enable_ipset = true

image.png

(3)linux bridge network provider 的配置文件 linuxbridge_agent.ini
cp /etc/neutron/plugins/ml2/linuxbridge_agent.ini /etc/neutron/plugins/ml2/linuxbridge_agent.ini.bak
grep -Ev ‘^$|#’ /etc/neutron/plugins/ml2/linuxbridge_agent.ini.bak>/etc/neutron/plugins/ml2/linuxbridge_agent.ini
vim /etc/neutron/plugins/ml2/linuxbridge_agent.ini

以下内容自己加。
[linux_bridge]
physical_interface_mappings = provider:ens34

[vxlan]
enable_vxlan = false

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

注:ens34指的是第二块网卡的名称。
image.png

注意上面的 provder:ens34 的写法(官方文档的坑点之一,其正确的写法是控制节点及计算节点连接外部网络的网卡 ens34)

OpenStack Train版双节点安装(十)安装网络服务neutron - 图21

从这段可以看出,INTERFACE_NAME 指的是 eth1,就是连接外部网络的那块网卡(provider interface)。

(4) 系统配置文件 sysctl.conf(官方文档的坑点之一,它这里只是说明要检查而没有写如何配置)
vim /etc/sysctl.conf
加入下面 2 行:
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
image.png
modprobe br_netfilter
sysctl -p

image.png

(5)dhcp agent 配置文件 dhcp_agent.ini
cp /etc/neutron/dhcp_agent.ini /etc/neutron/dhcp_agent.ini.bak
grep -Ev ‘^$|#’ /etc/neutron/dhcp_agent.ini.bak> /etc/neutron/dhcp_agent.ini
vim /etc/neutron/dhcp_agent.ini
[DEFAULT]
interface_driver = linuxbridge
dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq
enable_isolated_metadata = true

image.png

配置元数据代理,以便和 nova 通讯(可以参考上节所讲的 neutron 和 nova 的交互部分)
vim /etc/neutron/metadata_agent.ini
[DEFAULT]
nova_metadata_host = controller
metadata_proxy_shared_secret = METADATA_SECRET

image.png

修改 nova 的配置文件,也是为了和 neutron 进行交互
vim /etc/nova/nova.conf
在原来的基础上,再在[neutron]部分加入:
[neutron](共 10 行)
auth_url = http://controller:5000
auth_type = password
project_domain_name = default
user_domain_name = default
region_name = RegionOne
project_name = service
username = neutron
password = 000000
service_metadata_proxy = true
metadata_proxy_shared_secret = METADATA_SECRET

OpenStack Train版双节点安装(十)安装网络服务neutron - 图26

建立 ml2 的软连接

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

填充 Neutron 数据库

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

image.png

注释:如果数据库填充出现错误提示:
image.png

解决办法:

[root@controller ~]# mysql -u root -p
MariaDB [(none)]> use neutron;
MariaDB [neutron]> SET foreign_key_checks = 0 ;
MariaDB [neutron]> ALTER TABLE subnets MODIFY network_id VARCHAR(36) NOT NULL;
MariaDB [neutron]> SET foreign_key_checks = 1 ;
MariaDB [neutron]> exit
image.png

重新启动 nova-api 服务

systemctl restart openstack-nova-api.service

启动 neutron 服务和配置开机启动

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
image.png

启动好之后,可以使用 systemctl status 命令查看各个服务运行的状态,使用 netstat -tnlup 查看是否有 9696 端口。
至此,控制节点上的 neutron 服务组件安装完毕,下面切换到另外一台虚拟机,在计算节点上安装 neutron 服务。

三、在计算节点安装网络服务 neutron

结合上一节所讲的物理部署,计算节点主要安装 neutron 的下面组件

OpenStack Train版双节点安装(十)安装网络服务neutron - 图31

在计算节点(compute)上进行如下操作安装网络服务 neutron(计算节点)

安装组件

yum install openstack-neutron-linuxbridge ebtables ipset -y

image.png

修改配置文件

(1)修改 neutron 主配置文件
cp /etc/neutron/neutron.conf /etc/neutron/neutron.conf.bak
grep -Ev ‘^$|#’ /etc/neutron/neutron.conf.bak>/etc/neutron/neutron.conf
vim /etc/neutron/neutron.conf
[DEFAULT]
transport_url = rabbit://openstack:000000@controller
auth_strategy = keystone

[keystone_authtoken](共 9 行)
www_authenticate_uri = http://controller:5000
auth_url = http://controller:5000
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = neutron
password = 000000

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

(2)配置 Linux 网桥代理
cp /etc/neutron/plugins/ml2/linuxbridge_agent.ini /etc/neutron/plugins/ml2/linuxbridge_agent.ini.bak
grep -Ev ‘^$|#’ /etc/neutron/plugins/ml2/linuxbridge_agent.ini.bak>/etc/neutron/plugins/ml2/linuxbridge_agent.ini
vim /etc/neutron/plugins/ml2/linuxbridge_agent.ini

以下内容自行添加
[linux_bridge]
physical_interface_mappings = provider:ens34

[vxlan]
enable_vxlan = false

[securitygroup]
enable_security_group = true
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
image.png
(3)sysctl.conf
vim /etc/sysctl.conf
加入下面 2 行:
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
image.png
modprobe br_netfilter
sysctl -p
image.png

修改 nova 配置文件

vim /etc/nova/nova.conf
[neutron]
auth_url = http://controller:5000
auth_type = password
project_domain_name = default
user_domain_name = default
region_name = RegionOne
project_name = service
username = neutron
password = 000000

重启 nova 计算服务

systemctl restart openstack-nova-compute.service
systemctl status openstack-nova-compute.service
image.png

启动 neutron 服务和设置开机自启动

systemctl enable neutron-linuxbridge-agent.service
systemctl start neutron-linuxbridge-agent.service
systemctl status neutron-linuxbridge-agent.service

image.png

至此,计算节点上面的 neutron 服务安装完毕,
下面切换到控制节点,验证整个 neutron 的安装。

四、验证整个 neutron 服务

在控制节点(controller)执行以下命令验证 neutron 服务
. /openrc/admin_openrc
openstack extension list —network

image.png
openstack network agent list

image.png

一定要确保列表中有 4 条记录,并且 Alive 状态为笑脸:-),State 为 UP。

可以对照官方文档来查看

image.png

https://blog.51cto.com/11694088/2460315