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

第十部分 安装网络服务neutron


一、准备工作

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

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

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

image.png


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

yum install net-tools -y

ifconfig eth1 promisc

ifconfig

image.png

控制节点eth1网卡信息中有PROMISC字样表示已经启用混杂模式。


image.png

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


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

. 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



二、预备知识:Linux Bridge网络模式

由于下面安装neutron需要使用到Linux Bridge这种network provider,所以下面介绍一下Linux Bridge的基本概念

假设宿主机上有一块与外网连接的物理网卡eth0 ,上面跑了一个虚拟机VM1,那么使用Linux Bridge,宿主机会创建一个Linux Bridge的bridge br0将eth0和实例的虚拟网卡vnet0连接起来。如下图所示:

image.png

在下面的安装中,我们会使用计算节点(可以看成是是实例的宿主机)的网卡eth1来桥接实例的虚拟网卡(实例如果是linux系统,则其虚拟网卡名称是eth0)。

br0由neutron创建,使用的名称是类似brq8c8dcd81-d3这样的

vnet0是br0上的一个端口,由neutron创建,其名称类似tapfdf3a9b5-f8这样的其中包含有由neutron service plugin、agent创建的ip地址等信息。实例启动后,neutron会将该端口分配给实例。

这样,brq8c8dcd81-d3把宿主机的eth1,端口tapfdf3a9b5-f8桥接起来,从而为实例提供网络访问。

image.png

具体来说就是这样连接的:实例(实例系统是linux系统的话)的虚拟网卡eth0←→tapfdf3a9b5-f8←→brq8c8dcd81-d3←→宿主机(计算节点)的eth1


同理,如果再启动一个新实例,则neutron会在brq8c8dcd81-d3创建一个新的端口,tapxxxxxxx-xx,将其分配给该实例。

image.png

可见,类比vSphere,brq8c8dcd81-d3其实就是一个标准虚拟交换机,tapfdf3a9b5-f8就是上面的端口(端口组),eth1就是上行链路。


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

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

image.png

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


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

创建Neutron数据库
mysql -u root -p
MariaDB [(none)] > CREATE DATABASE neutron;

数据库授权
MariaDB [(none)]> GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' IDENTIFIED BY 'NEUTRON_DBPASS';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' IDENTIFIED BY 'NEUTRON_DBPASS';

image.png

创建neutron用户
. admin-openrc
openstack user create --domain default --password NEUTRON_PASS neutron

向neutron用户添加admin角色
openstack role add --project service --user neutron admin

创建neutron服务实体
openstack service create --name neutron --description "OpenStack Networking" network

创建neutron服务端点
openstack endpoint create --region RegionOne network public http://ct:9696
openstack endpoint create --region RegionOne network internal http://ct:9696
openstack endpoint create --region RegionOne network admin http://ct:9696

image.png

配置二层网络(官方文档为提供商网络)
1、安装软件包
yum install openstack-neutron openstack-neutron-ml2 openstack-neutron-linuxbridge ebtables

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]
connection = mysql+pymysql://neutron:NEUTRON_DBPASS@ct/neutron

[DEFAULT]
core_plugin = ml2
service_plugins =
auth_strategy = keystone
notify_nova_on_port_status_changes = true
notify_nova_on_port_data_changes = true

[keystone_authtoken]
www_authenticate_uri = http://ct:5000
auth_url = http://ct:5000
memcached_servers = ct:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = neutron
password = NEUTRON_PASS

[nova]
auth_url = http://ct:5000
auth_type = password
project_domain_name = default
user_domain_name = default
region_name = RegionOne
project_name = service
username = nova
password = NOVA_PASS

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

image.png

(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:eth1

[vxlan]
enable_vxlan = false

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

image.png

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

image.png

从这段可以看出,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

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 = ct
metadata_proxy_shared_secret = METADATA_SECRET

image.png

修改nova的配置文件,也是为了和neutron进行交互
vim /etc/nova/nova.conf
在原来的基础上,再在[neutron]部分加入:
[neutron]
auth_url = http://ct:5000
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

image.png

建立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

重新启动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

至此,控制节点上的neutron服务组件安装完毕,下面切换到另外一台虚拟机,在计算节点上安装neutron服务。

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

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

image.png

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


安装组件
yum install openstack-neutron-linuxbridge ebtables ipset

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:RABBIT_PASS@ct
auth_strategy = keystone

[keystone_authtoken]
www_authenticate_uri = http://ct:5000
auth_url = http://ct:5000
memcached_servers = ct:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = neutron
password = NEUTRON_PASS

[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:eth1

[vxlan]
enable_vxlan = false

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

(3)sysctl.conf
vim /etc/sysctl.conf
加入下面2行:
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1

modprobe br_netfilter
sysctl -p

修改nova配置文件
vim /etc/nova/nova.conf
[neutron]
auth_url = http://ct:5000
auth_type = password
project_domain_name = default
user_domain_name = default
region_name = RegionOne
project_name = service
username = neutron
password = NEUTRON_PASS

重启nova计算服务
systemctl restart openstack-nova-compute.service

启动neutron服务和设置开机自启动
systemctl enable neutron-linuxbridge-agent.service
systemctl start neutron-linuxbridge-agent.service

image.png

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

验证整个neutron服务
控制节点(ct)执行以下命令验证neutron服务
. admin-openrc
openstack extension list --network

image.png

openstack network agent list

image.png

一定要确保列表中有4条记录。

猜你喜欢

转载自blog.51cto.com/11694088/2460315
今日推荐