• 产品与解决方案
  • 行业解决方案
  • 服务
  • 支持
  • 合作伙伴
  • 关于我们

H3C SeerEngine-DC OpenStack融合版本插件安装指导-容器化-E6304Pxx-5W300

01-正文

本章节下载 01-正文  (775.03 KB)

01-正文


1 概述

通过安装OpenStack插件可实现SeerEngine-DC与OpenStack云平台的对接,对接完成后,SeerEngine-DC可处理云平台的业务部署请求。本文主要介绍如何通过安装OpenStack插件实现与OpenStack云平台的对接。

OpenStack插件主要包含SeerEngine-DC Neutron插件、Nova补丁、openvswitch-agent补丁和DHCP逃生相关组件。

1.1  SeerEngine-DC Neutron插件

在OpenStack环境中,Neutron(OpenStack网络服务)用来管理所有VNI(Virtual Networking Infrastructure,虚拟网络架构),它负责向OpenStack计算服务管理的设备提供虚拟网络服务。

SeerEngine-DC Neutron插件是针对SeerEngine-DC推出的符合OpenStack框架要求的Neutron插件,实现了核心插件(Networks、Subnets、Routers和Ports等)的全部特性,并负责通过REST API接口将从OpenStack获取的网络配置信息,如租户的网络(Networks)、子网(Subnets)、路由器(Routers)、端口(Ports)等,同步设置到SeerEngine-DC。

注意

使用插件对接OpenStack云平台后,为了避免影响用户业务,建议不要在控制组件上修改云平台下发的配置,如:在云平台中创建的虚拟链路层网络、虚拟路由器、虚拟子网等网络资源。

 

1.2  SeerEngine-DC Neutron安全插件

SeerEngine-DC Neutron安全插件是针对SeerEngine-DC推出的符合OpenStack框架要求的Neutron插件,实现了安全插件(Fwaas、Lbaass和Vpnaas等)的全部特性,并负责通过REST API接口将从OpenStack获取的安全配置信息,如租户的防火墙(FW)、负载均衡(LB)、VPN等,同步设置到SeerEngine-DC,为租户提供了调度安全网络资源的能力。


2 安装前的准备工作

2.1  硬件配置需求

SeerEngine-DC Neutron插件所需的服务器或虚拟机的硬件配置需求如表2-1所示。

表2-1 硬件配置需求

CPU内核

内存

所需磁盘空间

1核及以上

2GB及以上

5GB及以上

 

2.2  软件配置需求

SeerEngine-DC Neutron插件所需的软件配置需求如表2-2所示。

表2-2 软件配置需求

软件配置需求

备注

OpenStack

当OpenStack使用Kolla-Ansible方式部署时,OpenStack软件版本支持情况如下:

·     Ocata

·     Pike

·     Queens

·     Rocky

·     Stein

·     Train

·     Ussuri

·     Victoria

·     Wallaby

·     Xena

 

说明

·     安全插件暂不支持Stein、Train、Ussuri、Victoria、Wallaby和Xena版本OpenStack。

·     安装OpenStack插件前需要先访问互联网安装基础环境,所以请确保在安装过程中,系统能够正常访问互联网。

·     安装OpenStack插件前需要确保OpenStack已正确完成部署,确认各节点的/etc/hosts文件已配置主机名和IP地址的映射。具体部署步骤请参考OpenStack官网上指定OpenStack软件版本的安装指导手册。

 


3 部署OpenStack

安装插件前需要先部署OpenStack,具体部署步骤请参考OpenStack官网上指定OpenStack软件版本的安装指导手册。


4 SeerEngine-DC预配置

SeerEngine-DC预配置,只提供SeerEngine-DC的基本配置信息。涉及不同业务场景配置,请参考对应SeerEngine-DC业务场景的典型配置指导。

预配置如表4-1所示。

表4-1 SeerEngine-DC预配置

配置

菜单路径

Fabrics

[自动化>数据中心网络>Fabrics>Fabrics]

VDS

[自动化>数据中心网络>公共网络设置>虚拟分布式交换机]

地址池

[自动化>数据中心网络>资源池>IP地址池]

VNID池(VLAN池、VXLAN池、VLAN-VXLAN映射)

[自动化>数据中心网络>资源池> VNID池 > VLAN]

[自动化>数据中心网络>资源池> VNID池 > VXLAN]

[自动化>数据中心网络>资源池> VNID池 > VLAN-VXLAN映射]

为Fabric添加接入设备和边界设备

[自动化>数据中心网络>Fabrics>Fabrics]

L4-L7设备、资源池及模板

[自动化>数据中心网络>资源池>设备资源>物理设备]

[自动化>数据中心网络>资源池>设备资源>L4-L7物理资源池]

出口网关

[自动化>数据中心网络>公共网络设置>出口网关]

计算域、主机

[自动化>数据中心网络>Fabrics > 计算域]

[自动化>数据中心网络>Fabrics > 计算域>主机]

OpenStack云对接

[自动化>数据中心网络>云及虚拟化对接 >OpenStack]

 

注意

·     OpenStack云对接中添加云平台名称务必与Neutron插件ml2_conf.ini中cloud_region_name参数保持一致,区分大小写,且该配置项不可为空。

·     OpenStack云对接中VNI范围务必与云平台的VXLAN VNI范围保持一致。

 


5 Kolla-ansible部署OpenStack插件

目前支持在多个版本的OpenStack上安装SeerEngine-DC Neutron插件。不同版本的OpenStack上使用的SeerEngine-DC Neutron插件的安装包相同。

SeerEngine-DC Neutron插件安装在OpenStack控制节点上。安装插件或补丁前需要在相应的OpenStack节点上安装基础环境,具体方法请参见“5.1  安装基础环境”。

5.1  安装基础环境

安装插件及补丁前,需先安装基础环境,即在线下载并安装Python工具包。

(1)     更新软件源列表,然后下载并安装Python工具包,以CentOS操作系统为例。

¡     CentOS 8操作系统

[root@localhost ~]# yum clean all

[root@localhost ~]# yum makecache

[root@localhost ~]# yum install –y python3-pip python3-setuptools

¡     其他CentOS操作系统

[root@localhost ~]# yum clean all

[root@localhost ~]# yum makecache

[root@localhost ~]# yum install –y python-pip python-setuptools

(2)     安装Runlike工具。

¡     CentOS 8操作系统

[root@localhost ~]# pip3 install runlike

¡     其他CentOS操作系统

[root@localhost ~]# pip install runlike

(3)     登录控制节点,编辑/etc/hosts文件。添加SeerEngine-DC上[自动化 > 数据中心网络 > Fabrics > 计算域 > 主机]中所有本OpenStack主机的IP和Name映射信息。并添加SeerEngine-DC上[自动化 > 数据中心网络 > 资源池 > 设备资源 > 物理设备]中所有该场景下Leaf、Spine、Border设备的IP和Name映射信息。

[root@localhost ~]# vim /etc/hosts

127.0.0.1 localhost

::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

99.0.83.75 controller

99.0.83.76 compute1

99.0.83.77 compute2

99.0.83.78 nfs-server

99.0.83.79 compute3

99.0.83.74 compute4

5.2  安装/升级SeerEngine-DC Neutron插件

5.2.1  安装SeerEngine-DC Neutron插件

1. 获取SeerEngine-DC Neutron插件安装软件包

获取所需版本的SeerEngine-DC OpenStack软件包,并将SeerEngine-DC OpenStack软件包拷贝至服务器或虚拟机上的待安装目录下,或通过FTP、TFTP、SCP等文件传输协议将软件包上传到指定目录。

提示

·     使用FTP、TFTP方式上传时,请选择binary模式(二进制模式)传输,以免损坏软件包。

·     安装过程中,修改配置文件时如果参数后边括号有“以XXX为例”的说明,表示该参数取值可以根据用户需求改变,否则不能改变。

 

2. 在OpenStack控制节点上安装SeerEngine-DC Neutron插件

(1)     生成neutron-server容器的启动脚本

[root@localhost ~]# runlike neutron_server>docker-neutron-server.sh

(2)     修改neutron.conf配置文件。

a.     通过vi编辑器打开neutron.conf配置文件。

[root@localhost ~]# vi /etc/kolla/neutron-server/neutron.conf

b.     根据Kolla环境操作系统参考对应插件安装指导。

-     若环境为CentOS操作系统,请参考《H3C SeerEngine-DC OpenStack融合版本插件安装指导-CentOS》配置neutron.conf。

-     若环境为Ubuntu操作系统,请参考《H3C SeerEngine-DC OpenStack融合版本插件安装指导-Ubuntu》配置neutron.conf。

(3)     修改ml2_conf.ini配置文件。

a.     通过vi编辑器打开ml2_conf.ini配置文件。

[root@localhost ~]# vi /etc/kolla/neutron-server/ml2_conf.ini

b.     按[i]键进入编辑模式,按照如下所示修改文件配置。修改完成后,按[ESC]键退出编辑模式,再输入:wq,按回车,保存ml2_conf.ini配置文件并退出vi编辑器。

[ml2]

type_drivers = vxlan,vlan

tenant_network_types = vxlan,vlan

mechanism_drivers = ml2_h3c

extension_drivers = ml2_extension_h3c,qos,port_security

[ml2_type_vlan]

network_vlan_ranges = physicnet1:1000:2999

[ml2_type_vxlan]

vni_ranges = 1:500

各参数含义如下:

·     type_drivers:驱动类型,VXLAN必须作为第一个参数。

·     tenant_network_types:租户所属的网络类型。目前只支持租户所属的网络类型外网为VLAN,内网为VXLAN。

¡     主机Overlay以及网络Overlay层次化端口绑定:VXLAN必须作为第一个参数。

¡     网络Overlay非层次化端口绑定:VLAN必须作为第一个参数。

¡     主机Overlay/网络Overlay层次化场景与网络Overlay场景混用:VXLAN作为第一个参数,同时需要注意,VLAN网络此时需要通过后台命令行、RestAPI或者管理员界面创建。

·     mechanism_drivers:ml2驱动名称。当创建VLAN网络的sriov类型实例时,需配置为“sriovnicswitch,ml2_h3c,openvswitch”;当创建支持层次化的实例时,需配置为“ml2_h3c,openvswitch”。

·     extension_drivers:扩展驱动名称,取值包括ml2_extension_h3c、qos和port_security。当OpenStack上未开启QoS功能时,不需配置QoS驱动;当OpenStack不需要开启端口安全功能时,不需要配置port_security(Ocata 2017.1版本的OpenStack不支持配置port_security参数)。

·     network_vlan_ranges:租户外网的VLAN ID取值范围(以physicnet1:1000:2999为例)。

·     vni_ranges:租户内网VXLAN ID取值范(以1:500为例)。

(4)     安装SeerEngine-DC Neutron插件后,在ml2_conf.ini配置文件中加载插件配置项。修改ml2_conf.ini配置文件。

a.     通过vi编辑器打开ml2_conf.ini配置文件。

[root@localhost ~]# vi /etc/kolla/neutron-server/ml2_conf.ini

b.     根据Kolla环境的操作系统配置ml2_conf.ini文件。

-     若Kolla环境为CentOS操作系统,请参考《H3C SeerEngine-DC OpenStack融合版本插件安装指导-CentOS》中ml2_conf.ini的[SDNCONTROLLER]配置组配置ml2_conf.ini。

-     若Kolla环境为Ubuntu操作系统,请参考《H3C SeerEngine-DC OpenStack融合版本插件安装指导-Ubuntu》中ml2_conf.ini的[SDNCONTROLLER]配置组配置ml2_conf.ini。

(5)     拷贝插件安装包到neutron_server容器:

[root@localhost ~]# docker cp SeerEngine_DC_PLUGIN-E3608-py2.7.egg neutron_server:/

(6)     进入neutron_server容器,进入插件安装包所在文件夹,安装插件软件包和websocket-client。

[root@localhost ~]# docker exec -it -u root neutron_server  bash

¡     安装插件软件包

提示

在执行安装插件前需要检查easy_install的安装路径是否在容器的虚拟环境中,并且与neutron同目录,可通过如下方式检查:

1、获取neutorn路径。

(neutron-server) [root@localhost ~]# python3

>>> import neutron

>>> neutron.__path__

['/var/lib/kolla/venv/lib/python3.6/site-packages/neutron']

2、获取easy_install安装路径。

(neutron-server)[ root@localhost ~]# easy_install --version

setuptools 50.3.2 from /usr/lib/python3.6/site-packages (Python 3.6)

3、当出现如上两个路径不一致情形时,请参见“7. 关于使用Kolla部署开源Wallaby和Xena版本安装插件的路径问题说明”。

 

(neutron-server) [root@localhost ~]# easy_install SeerEngine_DC_PLUGIN-E3608-py2.7.egg

(neutron-server) [root@localhost ~]# h3c-sdnplugin controller install

¡     安装websocket-client

-     CentOS 8

(neutron-server) [root@localhost ~]# yum install –y python3-websocket-client

-     其他CentOS

(neutron-server) [root@localhost ~]# yum install –y python-websocket-client

说明

·     python-websocket-client需要确保为0.56版本。

·     安装websocket-client后请参见“8. 关于使用Kolla方式部署的开源Wallaby和Xena版本安装python3-websocket-client的问题说明”检查容器中websocket路径和neutron路径是否一致,确保安装websocket-client工具包后可用。

·     执行h3c-sdnplugin controller install命令时可能会报错,请忽略。

·     执行h3c-sdnplugin controller install时,请确保/root目录下不存在neutron.conf文件,如果存在,请先删除或者移动到其他位置。

 

(7)     生成neutron-server容器镜像。

[root@localhost ~]# neutron_server_image=$(docker ps --format {{.Image}} --filter name=neutron_server)

[root@localhost ~]# docker ps | grep $neutron_server_image

16d60524b8b3        kolla/centos-source-neutron-server:rocky              "dumb-init --single-?   16 months ago       Up 2 weeks                              neutron_server

[root@localhost ~]# docker commit 16d60524b8b3 (需替换为以上命令查到的uuid)kolla/neutron-server-h3c

[root@localhost ~]# docker rm -f neutron_server

[root@localhost ~]# docker tag $neutron_server_image kolla/neutron-server-origin

[root@localhost ~]# docker rmi $neutron_server_image

[root@localhost ~]# docker tag kolla/neutron-server-h3c $neutron_server_image

[root@localhost ~]# docker rmi kolla/neutron-server-h3c

(8)     启动neutron-server容器。

[root@localhost ~]# source docker-neutron-server.sh

(9)     查看容器启动状态,显示为Up表示已启动。

[root@localhost ~]# docker ps --filter "name=neutron_server"

CONTAINER ID        IMAGE                                      COMMAND                  CREATED             STATUS              PORTS               NAMES

289e4e132a9b        kolla/centos-source-neutron-server:ocata   "dumb-init --single-?   1 minutes ago        Up 1 minutes                              neutron_server

5.2.2  升级SeerEngine-DC Neutron插件

注意

·     升级过程中可能造成业务中断,请谨慎操作。

·     当插件进行版本升级时,因Kolla环境无法自动继承插件配置项,故在升级新版本插件前,请先对配置文件“/etc/kolla/neutron-server/neutron.conf”和“/etc/kolla/neutron-server/ml2_conf.ini”的配置信息进行备份,升级插件后请根据备份的配置手动修改相关参数取值以保证升级前后插件配置相同。

 

升级SeerEngine-DC Neutron插件可参考以下升级方式:

1. 不保留neutron_server container

(1)     删除带有原版本插件的container及image。

neutron_server_image=$(docker ps --format {{.Image}} --filter name=neutron_server)

a.     若原环境中无docker-neutron-server.sh脚本文件,则需要执行如下命令,若存在,则跳过此命令。

[root@localhost ~]# runlike neutron_server>docker-neutron-server.sh

b.     开始删除带有原版本插件的container及image。

[root@localhost ~]# docker rm -f neutron_server

[root@localhost ~]# docker rmi  $neutron_server_image

c.     恢复kolla环境默认container及image。

[root@localhost ~]# docker tag kolla/neutron-server-origin $neutron_server_image

[root@localhost ~]# docker rmi kolla/neutron-server-origin

[root@controller ~]# source docker-neutron-server.sh

注意

在重新启动neutron_server容器前,需要将neutron.conf,ml2_conf.ini中配置恢复,去除H3C插件相关配置,避免容器启动失败。

 

(2)     重新安装插件,具体方法请参见“5.2.1  安装SeerEngine-DC Neutron插件”。

2. 保留neutron_server container

保留neutron_server container的升级需要进入neutron_server,卸载旧版本插件,再安装新版本插件。升级步骤如下。

(1)     升级neutron_server container。

a.     进入neutron_server容器卸载旧版本插件。

[root@localhost ~]# docker exec -it -u root neutron_server bash

(neutron-server) [root@localhost ~]# h3c-sdnplugin controller uninstall

Remove service

Removed symlink /etc/systemd/system/multi-user.target.wants/h3c-agent.service.

Restore config files

Uninstallation complete.

(neutron-server) [root@localhost ~]# pip uninstall seerengine-dc-plugin

Uninstalling SeerEngine-DC-PLUGIN-E3608:

/usr/bin/h3c-agent

/usr/bin/h3c-sdnplugin

……

b.     安装新版本插件,注意按照新版本插件对应资料,重新检查并配置插件配置项。

[root@localhost ~]# docker cp SeerEngine-DC-PLUGIN-E3608-py2.7.egg neutron_server:/

[root@localhost ~]# docker exec -it -u root neutron_server bash

(neutron-server) [root@localhost ~]# easy_install SeerEngine-DC-PLUGIN-E3608-py2.7.egg

(neutron-server) [root@localhost ~]# h3c-sdnplugin controller install

退出容器,重启neutron_server容器

(neutron-server)[root@controller01 ~]# exit

[root@controller01 ~]# docker restart neutron_server

说明

·     执行h3c-sdnplugin controller install / uninstall命令时可能会报错,请忽略。

·     执行h3c-sdnplugin controller install时,请确保/root目录下不存在neutron.conf文件,如果存在,请先删除或者移动到其他位置。

 

5.3  安装/升级SeerEngine-DC Neutron安全插件

5.3.1  安装安全插件

1. 获取安全插件安装软件包

获取所需版本的安全插件软件包,并将软件包拷贝至服务器或虚拟机上的待安装目录下,或通过FTP、TFTP、SCP等文件传输协议将软件包上传到指定目录。

提示

·     使用FTP、TFTP方式上传时,请选择binary模式(二进制模式)传输,以免损坏软件包。

·     安装过程中,修改配置文件时如果参数后边括号有“以XXX为例”的说明,表示该参数取值可以根据用户需求改变,否则不能改变。

 

2. 在OpenStack控制节点上安装安全插件

(1)     生成neutron-server和h3c-sec-agent容器的启动脚本。

[root@localhost ~]# runlike neutron_server>docker-neutron-server.sh

[root@localhost ~]# cp docker-neutron-server.sh docker-h3c-sec-agent.sh

[root@localhost ~]# sec –i 's/neutron-server/h3c-sec-agent/g' docker-h3c-sec-agent.sh

[root@localhost ~]# sec –i 's/neutron_server/h3c_sec_agent/g' docker-h3c-sec-agent.sh

(2)     修改neutron.conf配置文件。

a.     通过vi编辑器打开neutron.conf配置文件。

[root@localhost ~]# sudo vi /etc/kolla/neutron-server/neutron.conf

b.     按[i]键进入编辑模式,修改完成后,按[ESC]键退出编辑模式,再输入:wq,按回车,保存neutron.conf配置文件并退出vi编辑器。

¡     当OpenStack为Pike和Rocky版本时,请按照如下修改neutron.conf配置文件。

[DEFAULT]

service_plugins = firewall,h3c_security_core,lbaasv2,vpnaas

 

[service_providers]

service_provider=FIREWALL:H3C:networking_sec_h3c.fw.h3c_fwplugin_driver.H3CFwaasDriver:default

service_provider=LOADBALANCERV2:H3C:networking_sec_h3c.lb.h3c_lbplugin_driver_v2.H3CLbaasv2PluginDriver:default

service_provider=VPN:H3C:networking_sec_h3c.vpn.h3c_vpnplugin_driver.H3CVpnPluginDriver:default

注意

对于Pike版本OpenStack,负载均衡支持Context类型多资源池时,需要在控制组件上预配置名称为dmz或core的资源池,然后修改service_provider配置项为:

LOADBALANCERV2:DMZ:networking_sec_h3c.lb.h3c_lbplugin_driver_v2.H3CLbaasv2PluginDMZDriver:default或

LOADBALANCERV2:CORE:networking_sec_h3c.lb.h3c_lbplugin_driver_v2.H3CLbaasv2PluginCOREDriver:default。

 

¡     当OpenStack为Ocata版本时,请按照如下修改neutron.conf的配置文件。

[DEFAULT]

service_plugins = firewall,neutron_lbaas.services.loadbalancer.plugin.LoadBalancerPluginv2,vpnaas

 

[service_providers]

service_provider=FIREWALL:H3C:networking_sec_h3c.fw.h3c_fwplugin_driver.H3CFwaasDriver:default

service_provider=LOADBALANCERV2:H3C:networking_sec_h3c.lb.h3c_lbplugin_driver_v2.H3CLbaasPluginDriver:default

service_provider=VPN:H3C:networking_sec_h3c.vpn.h3c_vpnplugin_ko_driver.H3CVpnPluginDriver:default

注意

当OpenStack版本为Ocata时,仅支持配置为负载均衡V2服务。

当OpenStack版本为Pike和Rocky时,要配置VPN服务,需注意service_provider与Ocata版本service_provider的区别。

 

各参数含义如下:

¡     service_plugins:扩展服务插件加载入口,即加载扩展服务插件到OpenStack。

¡     service_provider:各种服务插件的路径。

注意

当前安全插件支持配置如下防火墙服务,可选择在service_plugins项中修改防火墙服务为:

·     开源防火墙plugin的agent模式:firewall。

·     优化防火墙策略及规则下发时间过长的agent模式:fwaas_h3c。

·     优化开源防火墙plugin的去agent模式:firewall_h3c。(执行安装安全插件命令h3c-secplugin controller install后,会自动运行h3c-sec-agent进程。当安全插件配置为去agent模式时,需要关闭并禁止启动h3c-sec-agent进程,即systemctl stop h3c-sec-agent和systemctl disable h3c-sec-agent。)

配置防火墙服务时,必须在service_plugin中配置安全核心服务h3c_security_core。

在neutron_server配置目录(/etc/kolla/neutron-server/)下,同一service的service_provider只能配置一次,请确保firewall在neutron.conf配置service_provider后,fwaas_driver.ini中不再配置service_provider。Lbaas和Vpnaas也遵循着同样的配置规则。

为确保h3c-sec-agent可以正常加载driver,请将/etc/kolla/neutron-server/fwaas_driver.ini的[fwaas]下的driver修改为networking_sec_h3c.fw.h3c_fwplugin_driver.H3CFwaasDriver。

 

(3)     修改ml2_conf.ini配置文件。

a.     通过vi编辑器打开ml2_conf.ini配置文件。

[root@localhost ~]# vi /etc/kolla/neutron-server/ml2_conf.ini

b.     按[i]键进入编辑模式,按照如下所示修改文件配置。修改完成后,按[ESC]键退出编辑模式,再输入:wq,按回车,保存ml2_conf.ini配置文件并退出vi编辑器。

[ml2]

type_drivers = vxlan,vlan

tenant_network_types = vxlan,vlan

mechanism_drivers = ml2_h3c

extension_drivers = ml2_extension_h3c,qos,port_security

[ml2_type_vlan]

network_vlan_ranges = physicnet1:1000:2999

[ml2_type_vxlan]

vni_ranges = 1:500

各参数含义如下:

·     type_drivers:驱动类型,VXLAN必须作为第一个参数。

·     tenant_network_types:租户所属的网络类型。目前只支持租户所属的网络类型外网为VLAN,内网为VXLAN。

¡     主机Overlay以及网络Overlay层次化端口绑定:VXLAN必须作为第一个参数。

¡     网络Overlay非层次化端口绑定:VLAN必须作为第一个参数。

¡     主机Overlay/网络Overlay层次化场景与网络Overlay场景混用:VXLAN作为第一个参数,同时需要注意,VLAN网络此时需要通过后台命令行、RestAPI或者管理员界面创建。

·     mechanism_drivers:ml2驱动名称。当创建VLAN网络的sriov类型实例时,需配置为“sriovnicswitch,ml2_h3c,openvswitch”;当创建支持层次化的实例时,需配置为“ml2_h3c,openvswitch”。

·     extension_drivers:扩展驱动名称,取值包括ml2_extension_h3c、qos和port_security。当OpenStack上未开启QoS功能时,不需配置QoS驱动;当OpenStack不需要开启端口安全功能时,不需要配置port_security(Ocata 2017.1版本的OpenStack不支持配置port_security参数)。

·     network_vlan_ranges:租户外网的VLAN ID取值范围(以physicnet1:1000:2999为例)。

·     vni_ranges:租户内网VXLAN ID取值范围(以1:500为例)。

(4)     修改neutron.conf配置文件,增加安全插件的配置项。

a.     通过vi编辑器打开neutron.conf配置文件。

[root@localhost ~]# vi /etc/kolla/neutron-server/neutron.conf

b.     按[i]键进入编辑模式,增加如下所示的配置项,对于配置文件中已存在的配置项,请保留原有配置。修改完成后,按[ESC]键退出编辑模式,再输入:wq,按回车,保存配置文件并退出vi编辑器。

[SEC_SDNCONTROLLER]

url = https://127.0.0.1: 30000

username = admin

password =Pwd@12345

domain = sdn

timeout = 1800

retry = 10

white_list = False

use_neutron_credential = False

firewall_force_audit = False

sec_output_json_log = False

vendor_rpc_topic = VENDOR_PLUGIN

enable_https = False

neutron_plugin_ca_file =

neutron_plugin_cert_file =

neutron_plugin_key_file =

enable_iam_auth = False

enable_firewall_metadata = False

enable_router_nat_without_firewall = False

enable_firewall_object_group = False

cloud_region_name = default

各参数含义如下:

·     url:登录统一数字底盘的URL地址(以https://127.0.0.1:30000为例)。

·     username:登录统一数字底盘的用户名(以admin为例)。当use_neutron_credential参数取值为True时,不需要配置本参数。

·     password:登录统一数字底盘的密码(以Pwd@12345为例)。当use_neutron_credential参数取值为True时,不需要配置本参数。如密码中包含字符“$”,需要在该字符前输入转义符“\”。

·     domain:SeerEngine-DC所在域的域名(以sdn为例)。

·     timeout:Neutron-server等待SeerEngine-DC响应的时间,单位为秒(以1800秒为例)。建议本参数的值设置为大于等于1800秒。

·     retry:发送连接请求消息的尝试次数(以10为例)。

·     white_list:是否和SeerEngine-DC免认证用户功能配合使用(以False为例)。

·     use_neutron_credential:是否使用OpenStack neutron用户名和密码与SeerEngine-DC通信(以False为例)。

·     firewall_force_audit:是否强制开启SeerEngine-DC上防火墙策略的审计功能。Kilo 2015.1版本的OpenStack本参数缺省值为True;其他版本的OpenStack本参数缺省值为False。取值包括:

¡     True:不论OpenStack上配置的防火墙策略是否开启审计功能,防火墙策略同步到SeerEngine-DC上时都强制开启该功能。

¡     False:OpenStack上配置的防火墙策略同步到SeerEngine-DC上时,审计状态不变。

·     sec_output_json_log:是否将SeerEngine-DC Neutron安全插件和SeerEngine-DC通信的REST API消息以JSON格式输出到OpenStack的操作日志文件(以False为例)。

·     vendor_rpc_topic:厂商的RPC topic。当其他厂商需要从SeerEngine-DC Neutron插件获取neutron数据时,需要配置此参数。本参数的取值需要由H3C和其他厂商协商,缺省值为VENDOR_PLUGIN,目前取值包括:

¡     VENDOR_PLUGIN:表示本参数不生效。

¡     DP_PLUGIN:迪普的RPC topic。

·     enable_https:支持HTTPS双向认证功能,缺省值为False,目前仅Pike版本OpenStack支持配置本参数。

·     neutron_plugin_ca_file:控制组件的CA证书存放位置,建议存放在/usr/share/neutron目录下,目前仅Pike版本OpenStack支持配置本参数(以/etc/neutron/ca.crt为例)。

·     neutron_plugin_cert_file:控制组件的Cert证书存放位置,建议存放在/usr/share/neutron目录下,目前仅Pike版本OpenStack支持配置本参数(以/etc/neutron/sna.pem为例)。

·     neutron_plugin_key_file :控制组件的Key证书存放位置,建议存放在/usr/share/neutron目录下,目前仅Pike版本OpenStack支持配置本参数(以/etc/neutron/sna.key为例)。

·     enable_iam_auth:使能IAM接口认证,当对接统一数字底盘时,插件可配置此项为True,表示使用IAM接口完成认证。缺省值为False。目前仅Newton版本OpenStack支持配置本参数。本参数已废弃。

·     enable_firewall_metadata:开启本功能时,CloudOS云平台可向控制组件下发防火墙相关定制字段,如资源池名称等。本参数仅用于对接CloudOS平台时使用。目前仅Pike版本OpenStack支持配置本参数。

·     enable_router_nat_without_firewall:未配置防火墙时是否使能NAT功能。默认取值为False,当取值为True时,对于未配置防火墙的租户,如果租户下虚拟路由器已绑定外部网络,将自动创建默认的防火墙资源用于实现NAT功能。目前仅Pike版本OpenStack支持配置此参数。

·     cloud_region_name:对于单云对接控制组件场景,升级后云平台第一次对接控制组件,并且控制组件侧没有新增租户资源时,可修改cloud_region_name,并且需与控制组件界面中配置名称保持一致,设置为默认云平台。若已在控制组件侧新增租户资源,则cloud_region_name不允许修改。对于多云对接控制组件场景,第一个云平台接入时,接入原则同单云对接控制组件场景。其他云平台接入时,需将不同云平台的cloud_region_name修改为对应云平台的取值,并且与控制组件界面中配置保持一致,使用过程中不允许修改此参数。

(5)     当white_list定制为True时,则需要完成如下步骤:

¡     删除ml2_sec_conf_h3c.ini配置文件[SEC_SDNCONTROLLER]中username、password和domain这三个字段。

¡     在控制组件上添加免认证用户,将免认证IP填写为Neutron-server所在主机的IP地址,“角色”选择“系统管理员”。

(6)     当use_neutron_credential定制为True时,需要进行以下配置:

a.     修改neutron.conf配置文件。

通过vi编辑器打开neutron.conf配置文件,按[i]键进入编辑模式,新增如下配置。修改完成后保存neutron.conf配置文件并退出vi编辑器。

[keystone_authtoken]

admin_user = neutron

admin_password = KEYSTONE_PASS

参数含义为:

-     admin_user:在OpenStack上进行Keystone认证使用的管理用户名称(以neutron为例)。

-     admin_password:在OpenStack上进行Keystone认证使用的管理用户密码(即替换KEYSTONE_PASS为Keystone认证使用的Neutron用户密码)。

b.     在控制组件上增加管理员用户,配置用户名为neutron,角色选择为系统管理员,密码请使用OpenStack上neutron用户对应的密码。

(7)     拷贝插件安装包到neutron_server容器:

[root@localhost ~]# docker cp SeerEngine_DC_SEC_PLUGIN-E3603P01-py2.7.egg neutron_server:/

(8)     进入neutron_server容器,安装插件软件包。

[root@localhost ~]# docker exec –it –u root –name neutron_server bash

[root@localhost ~]# easy_install SeerEngine_DC_SEC_PLUGIN-E3603P01-py2.7.egg

[root@localhost ~]# h3c-secplugin controller install

提示

·     执行h3c-secplugin controller install命令时可能会报错,请忽略。

·     执行h3c-secplugin controller install时,请确保/root目录下不存在neutron.conf文件,如果存在,请先删除或者移动到其他位置。

 

(9)     生成neutron-server和h3c-sec-agent容器镜像。

[root@localhost ~]# neutron_server_image=$(docker ps –format {{.Image}} –filter name=neutron_server)

[root@localhost ~]# h3c_sec_agent_image=$(echo $neutron_server_image |sed 's/neutron-server/h3c-sec-agent/')

[root@localhost ~]# docker commit $neutron_server_image kolla/neutron-server-h3c

[root@localhost ~]# docker rm –f neutron_server

[root@localhost ~]# docker tag $neutron_server_image kolla/neutron-server-origin

[root@localhost ~]# docker rmi $neutron_server_image

[root@localhost ~]# docker tag kolla/neutron-server-h3c $neutron_server_image

[root@localhost ~]# docker tag kolla/neutron-server-h3c $h3c_sec_agent_image

[root@localhost ~]# docker rmi kolla/neutron-server-h3c

(10)     拷贝neutron-server配置至h3c-sec-agent目录,并修改配置。

[root@localhost ~]# cp –pR /etc/kolla/neutron-server /etc/kolla/h3c-sec-agent

[root@localhost ~]# sed –i 's/neutron-server/h3c-sec-agent/g' /etc/kolla/h3c-sec-agent/config.json

(11)     启动neutron-server容器和h3c-sec-agent容器。

[root@localhost ~]# source docker-neutron-server.sh

[root@localhost ~]# source docker-h3c-sec-agent.sh

(12)     查看容器启动状态,显示为Up表示已启动。

[root@localhost ~]# #  docker ps –filter "name=neutron_server"

CONTAINER ID    IMAGE       COMMAND           CREATED   STATUS   PORTS  NAMES

289e4e132a9b  kolla/centos-source-neutron-server:ocata   "dumb-init –single-?

1 minutes ago  Up 1 minutes    neutron_server

[root@localhost ~]# # docker ps –filter "name=h3c_sec_agent"

CONTAINER ID    IMAGE       COMMAND           CREATED   STATUS   PORTS  NAMES

C334f7ec9857  kolla/centos-source-h3c-sec-agent:ocata   "dumb-init –single-?

1 minutes ago  Up 1 minutes    h3c_sec_agent

5.3.2  升级SeerEngine-DC Neutron安全插件

升级SeerEngine-DC Neutron安全插件时重新安装新版本安全插件即可,具体方法请参见“5.3.1  安装安全插件”。升级过程中可能造成业务中断,请谨慎操作。

若融合插件从E6304P01前版本升级到E6304P01及之后版本,因部分参数从ml2_sec_conf_h3c.ini中迁移至控制组件Web页面,安装当前版本插件和控制组件后,需要在控制组件页面中将对应的参数取值手动配置为升级前的取值。

(1)     将控制节点/etc/neutron/plugins/ml2路径下的“ml2_sec_conf_h3c.ini.bak”或“ml2_sec_conf_h3c.ini.h3c_bak”文件保存到本地。

(2)     进入控制组件的OpenStack配置页面,根据“ml2_sec_conf_h3c.ini.bak”或“ml2_sec_conf_h3c.ini.h3c_bak”文件中的配置信息修改对应OpenStack的参数,控制组件页面参数与配置项的对应关系如表5-1所示。其中部分配置项参数需要废弃,如表5-2所示。

表5-1 控制组件页面参数与配置项的对应关系

升级前ml2_sec_conf_h3c.ini文件配置项

升级后控制组件页面参数名称

directly_external:OFF

防火墙业务:全部开启

directly_external:ANY

防火墙业务:全部关闭

directly_external:SUFFIX

directly_external_suffix:name(name为虚拟路由器名称后缀)

防火墙业务:指定后缀的虚拟路由器关闭

tenant_gw_selection_strategy:match_gateway_name

tenant_gateway_name:name(name为出口网关名称)

外网配置模式:单Segment

租户出口网关策略:匹配出口网关名称

enable_multi_gateways:True

外网配置模式:单Segment

租户出口网关策略:匹配虚拟路由器外部网络的物理网络名称

enable_multi_segments:True

外网配置模式:多Segment

租户出口网关策略:匹配外部网络的Segment物理网络名称

auto_create_resource:True

自动创建资源:开启

resource_mode:CORE_GATEWAY

firewall_type:CGSR

防火墙资源类型:服务网关

防火墙资源模式:独享

resource_mode:CORE_GATEWAY

firewall_type:CGSR_SHARE

防火墙资源类型:服务网关

防火墙资源模式:共享

resource_mode:CORE_GATEWAY

firewall_type:NFV_CGSR

防火墙资源类型:服务网关

防火墙资源模式:NFV

resource_mode:SERVICE_LEAF

firewall_type:ACSR

防火墙资源类型:SERVICE LEAF

防火墙资源模式:独享

resource_mode:SERVICE_LEAF

firewall_type:ACSR_SHARE

防火墙资源类型:SERVICE LEAF

防火墙资源模式:共享

lb_type:CGSR

LB资源模式:独享

lb_type:CGSR_SHARE

LB资源模式:共享

lb_type:NFV_CGSR

LB资源模式:NFV

resource_share_count:1

资源节点共享数:1

lb_resource_mode:SP

LB资源池模式:单资源池

lb_resource_mode:MP

LB资源池模式:多资源池

lb_enable_snat:True

LB源地址转换:开启

lb_member_slow_shutdown:True

LB实服务器慢宕:开启

enable_lb_xff:True

LB源IP透传:开启

enable_lb_certchain:True

SSL服务端发送完整证书链:开启

 

表5-2 升级中的废弃参数说明

参数

说明

firewall_type

在SeerEngine-DC上创建的防火墙模式,废弃取值CGSR_SHARE_BY_COUNT。

CGSR_SHARE_BY_COUNT:以Context承载的网关服务型防火墙。当Context数量达到cgsr_fw_context_limit指定的阈值后,将进入资源共享模式。仅resource_mode取值为CORE_GATEWAY时本取值有效;仅Pike版本OpenStack支持配置本模式

fw_share_by_tenant

当防火墙创建模式为CGSR_SHARE或ACSR_SHARE时,是否开启单个租户独享一个网关服务型防火墙Context,并且租户内服务资源共享该Context(以False为例)

cgsr_fw_context_limit

以Context承载的网关资源型防火墙的Context数量阈值,取值为整数。当创建的Context数量达到此阈值时,则开启资源共享模式,仅当firewall_type取值为CGSR_SHARE_BY_COUNT时本参数有效。仅Pike版本OpenStack支持配置此参数

nfv_ha

开启NFV堆叠模式

 

注意

当插件进行跨版本升级时,可能由于不同版本插件的配置文件中参数缺省值不同导致升级前后插件的配置不同。此时,建议用户手动修改相关参数取值以保证升级前后插件配置相同。

 


6 Kubernetes部署OpenStack插件

6.1  安装/升级SeerEngine-DC Neutron插件

6.1.1  安装SeerEngine-DC Neutron插件

1. 获取SeerEngine-DC Neutron插件安装软件包

获取所需版本的SeerEngine-DC OpenStack软件包,并将SeerEngine-DC OpenStack软件包拷贝至服务器或虚拟机上的待安装目录下,或通过FTP、TFTP、SCP等文件传输协议将软件包上传到指定目录。

提示

·     使用FTP、TFTP方式上传时,请选择binary模式(二进制模式)传输,以免损坏软件包。

·     安装过程中,修改配置文件时如果参数后边括号有“以XXX为例”的说明,表示该参数取值可以根据用户需求改变,否则不能改变。

2. 获取插件容器化安装部署脚本

获取所需版本的插件容器化安装部署脚本,软件包的名称格式为SeerEngine_DC_PLUGIN_SHELL_INSTALL-version.zip,其中version为软件包版本号。解压软件包后,neutron_h3c_plugin_init.sh为Kubernetes部署Neutron插件时使用的脚本。

3. 在Kubernetes的neutron-server中安装SeerEngine-DC Neutron插件

(1)     在所有neutron-server运行节点,创建文件夹/neutron_plugin_dir/net_packages,注意此文件夹路径与/root/同级。

[root@localhost ~]# mkdir /neutron_plugin_dir/net_packages

(2)     从互联网获取基础环境离线包,格式为.rpm或者.whl。根据neutron-server Pod内操作系统及Python版本,选择适合的基础环境离线包,基础环境包包含以下内容。

¡     Python3:python3-pip、python3-setuptools

¡     Python2:python-pip、python-setuptools

¡     0.56版本python-websocket-client:建议使用.whl的基础环境离线包

(3)     将上述插件安装包、基础环境包放入每个/neutron_plugin_dir/net_packages路径中,将shell脚本放入/neutron_plugin_dir/路径下。

说明

注意修改shell脚本权限为755。

[root@neutron_server]# chmod 755 neutron_h3c_plugin_init.sh

(4)     修改ml2_conf.ini、neutron.conf配置文件。

根据宿主机环境操作系统参考对应插件安装指导。

¡     若环境为CentOS操作系统,请参考《H3C SeerEngine-DC OpenStack融合版本插件安装指导-CentOS和Kylin》配置ml2_conf.ini和neutron.conf。

¡     若环境为Ubuntu操作系统,请参考《H3C SeerEngine-DC OpenStack融合版本插件安装指导-Ubuntu》配置ml2_conf.ini和neutron.conf。

(5)     修改neutron-server的deployment yaml文件

a.     修改yaml文件中的commond和args内容。

command: [“/bin/bash”, “-c”, “--“]

args: [ “/neutron_plugin_dir/neutron_h3c_plugin_init.sh; /bin/bash /root/start_neutron_server.sh” ]

b.     增加yaml文件中的mountPath内容。

mountPath: /neutron_plugin_dir/

name: neutron-plugin-dir

c.     增加yaml文件中的hostPath内容:

hostPath:

path: /neutron_plugin_dir/

name: neutron-plugin-dir

说明

·     因容器化环境部署灵活,ml2_conf.ini和neutron.conf文件位于宿主机位置不定,请根据具体环境修改对应配置文件。

·     因neutron-server Pod的部署方式多样,当其不使用deployment部署时,修改的yaml文件不同,请根据Kubernetes的具体环境进行修改。

4. 删除原生neutron-server Pod

若neutron-server是以deployment方式启动的,则执行如下命令删除neutron-server Pod。

[root@localhost ~]# kubectl delete deployments neutron-server-deployment –n namespace

5. 重启neutron-server Pod

[root@localhost ~]# kubectl create -f neutron-server-deployment.yaml

说明

因Kubernetes环境部署灵活,上述命令行中灰色显示的内容需依据具体环境进行修改。

6.1.2  升级SeerEngine-DC Neutron插件

(1)     替换相关节点的/neutron_plugin_dir/net_packages中Neutron插件安装包。

(2)     删除原生neutron-server Pod,请参见“4. 删除原生neutron-server Pod”。

(3)     重启neutron-server Pod,请参见“5. 重启neutron-server Pod”。

6.2  安装/升级SeerEngine-DC Neutron安全插件

6.2.1  安装SeerEngine-DC Neutron安全插件

1. 获取SeerEngine-DC Neutron安全插件安装软件包

获取所需版本的SeerEngine-DC OpenStack软件包,并将SeerEngine-DC OpenStack软件包拷贝至服务器或虚拟机上的待安装目录下,或通过FTP、TFTP、SCP等文件传输协议将软件包上传到指定目录。

提示

·     使用FTP、TFTP方式上传时,请选择binary模式(二进制模式)传输,以免损坏软件包。

·     安装过程中,修改配置文件时如果参数后边括号有“以XXX为例”的说明,表示该参数取值可以根据用户需求改变,否则不能改变。

2. 获取安全插件容器化安装部署脚本

获取所需版本的安全插件容器化安装部署脚本,软件包的名称格式为SeerEngine_DC_SEC_PLUGIN_SHELL_INSTALL-version.zip,其中version为软件包版本号。解压软件包后,neutron_h3c_sec_plugin_init.sh为Kubernetes部署Neutron安全插件时使用的脚本。

3. 在Kubernetes的neutron-server中安装SeerEngine-DC Neutron安全插件

(1)     在所有neutron-server运行节点,创建文件夹/neutron_plugin_dir/sec_packages,注意此文件夹路径与/root/同级。

[root@localhost ~]# mkdir /neutron_plugin_dir/sec_packages

(2)     将上述插件安装包放入每个/neutron_plugin_dir/sec_packages路径中,将shell脚本放入/neutron_plugin_dir/路径下。

说明

注意修改shell脚本权限为755。

[root@neutron_server]# chmod 755 neutron_h3c_sec_plugin_init.sh

(3)     修改neutron.conf配置文件。

¡     若环境为CentOS操作系统,请参考《H3C SeerEngine-DC OpenStack融合版本插件安装指导-CentOS和Kylin》中安全插件相关章节修改neutron.conf配置文件。

¡     若环境为Ubuntu操作系统,请参考《H3C SeerEngine-DC OpenStack融合版本插件安装指导-Ubuntu》中安全插件相关章节修改neutron.conf配置文件。

(4)     修改ml2_conf.ini配置文件。

根据宿主机环境操作系统参考对应插件安装指导,将[SEC_SDNCONTROLLER]相关配置项加到ml2_conf.ini中。

¡     若环境为CentOS操作系统,请参考《H3C SeerEngine-DC OpenStack融合版本插件安装指导-CentOS和Kylin》中安全插件“修改ml2_sec_conf_h3c.ini配置文件”的章节,将[SEC_SDNCONTROLLER]相关配置项加到ml2_conf.ini中。

¡     若环境为Ubuntu操作系统,请参考《H3C SeerEngine-DC OpenStack融合版本插件安装指导-Ubuntu》中安全插件“修改ml2_sec_conf_h3c.ini配置文件”的章节,将[SEC_SDNCONTROLLER]相关配置项加到ml2_conf.ini中。

(5)     修改neutron-server的deployment yaml文件。

a.     修改yaml中的commond和args内容如下。

command: [“/bin/bash”, “-c”, “--“]

args: [“/neutron_plugin_dir/neutron_h3c_plugin_init.sh; /bin/bash /neutron_plugin_dir/neutron_h3c_sec_plugin_init.sh; /bin/bash /root/start_neutron_server.sh” ]

说明

若已执行“6.1  安装/升级SeerEngine-DC Neutron插件”,则将/neutron_plugin_dir/neutron_h3c_sec_plugin_init.sh放到neutron_plugin_dir/ neutron_h3c_plugin_init.sh之后)

b.     (若已执行“6.1  安装/升级SeerEngine-DC Neutron插件”,则跳过此步骤)增加yaml中的mountPath内容。

mountPath: /neutron_plugin_dir/

name: neutron-plugin-dir

c.     (若已执行“6.1  安装/升级SeerEngine-DC Neutron插件”,则跳过此步骤)增加yaml中的hostPath内容。

hostPath:

path: /neutron_plugin_dir/

name: neutron-plugin-dir

说明

·     因容器化环境部署灵活,neutron.conf文件位于宿主机位置不定,请根据具体环境修改对应配置文件。

·     因neutron-server Pod的部署方式多样,当其不使用deployment部署时,修改的yaml文件不同,请根据Kubernetes的具体环境进行修改。

4. 删除原生neutron-server pod

若neutron-server是以deployment方式启动的,则执行如下命令删除neutron-server Pod。

[root@localhost ~]# kubectl delete deployments neutron-server-deployment –n namespace

5. 重启neutron-server pod

[root@localhost ~]# kubectl create -f neutron-server-deployment.yaml

说明

因Kubernetes环境部署灵活,上述命令行中灰色显示的内容需依据具体环境进行修改。

6.2.2  升级SeerEngine-DC Neutron安全插件

(1)     替换相关节点的/neutron_plugin_dir/sec_packages中Neutron安全插件安装包。

(2)     删除原生neutron-server Pod,请参见“4. 删除原生neutron-server Pod”。

(3)     重启neutron-server Pod,请参见“5. 重启neutron-server Pod”。


7 非融合版本插件升级至融合版本插件

由非融合版本插件升级至融合版本插件时,请按照本章节的步骤进行操作。

1. 升级控制组件版本

将控制组件版本升级至支持融合版本插件的版本。

2. 卸载非融合版本插件

(1)     进入neutron-server容器。

[root@neutron_server ~]# docker exec -itu root neutron_server bash

(2)     卸载控制节点插件。

¡     E3702前的版本

[root@localhost ~]# h3c-vcfplugin controller uninstall

¡     E3702及之后的版本

[root@localhost ~]# h3c-sdnplugin controller uninstall

(3)     在所有节点上卸载插件软件包。

¡     CentOS 8操作系统

[root@localhost ~]# pip3 uninstall seerengine-dc-plugin

¡     其他CentOS操作系统

[root@localhost ~]# pip uninstall seerengine-dc-plugin

说明

不同版本的插件卸载命令可能有差异,具体请参见对应版本的插件安装指导。

 

3. 安装融合版本插件

(1)     安装融合版本插件和安全插件,参见章节“5 Kolla-ansible部署OpenStack插件”。

(2)     通过vi编辑器打开控制节点的ml2_conf.ini配置文件。

[root@localhost ~]# vi /etc/neutron/plugins/ml2/ml2_conf.ini

(3)     按[i]键进入编辑模式,按照如下所示修改文件配置。修改完成后,按[ESC]键退出编辑模式,再输入:wq,按回车,保存ml2_conf.ini配置文件并退出vi编辑器。

[VCFCONTROLLER]

sdnc_rpc_url = ws://127.0.0.1:30000

sdnc_rpc_ping_interval = 60

websocket_fragment_size = 102400

cloud_region_name = default

各参数修改方式如下:

¡     sdnc_rpc_url:当需要支持Metadata功能或使用DHCP逃生时,本参数需配置为统一数字底盘的IP地址和Websocket端口号。如统一数字底盘的url为http://127.0.0.1:30000,则sdnc_rpc_url应为ws://127.0.0.1:30000。

¡     cloud_region_name:对于单云对接控制组件场景,升级后云平台第一次对接控制组件,并且控制组件侧没有新增租户资源时,可修改cloud_region_name,并且需与控制组件界面中配置名称保持一致,设置为默认云平台。若已在控制组件侧新增租户资源,则cloud_region_name不允许修改。对于多云对接控制组件场景,第一个云平台接入时,接入原则同单云对接控制组件场景。其他云平台接入时,需将不同云平台的cloud_region_name修改为对应云平台的取值,并且与控制组件界面中配置保持一致,使用过程中不允许修改此参数。不同云平台需配置不同的vxlan vni_ranges。

(4)     对非融合插件的备份文件,比如ml2_conf_h3c.ini.bak或者ml2_conf_h3c.ini.h3c_bak,需要进行删除或者修改文件后缀。否则在下一次升级安全插件时,可能会导致部分安全插件参数被修改或初始化。

4. 配置控制组件界面参数

非融合版本中ml2_conf_h3c.ini配置文件中的部分参数已迁移至控制组件Web页面,安装融合版本插件后,需要在控制组件页面中将对应的参数取值手动配置为升级前的取值。

(1)     将控制节点/etc/kolla/neutron-server路径下的“ml2_conf_h3c.ini.bak或“ml2_conf_h3c.ini.h3c_bak”文件保存到本地。

(2)     进入控制组件的OpenStack配置页面,根据ml2_conf_h3c.ini.bak或“ml2_conf_h3c.ini.h3c_bak”文件中的配置信息修改对应OpenStack的参数,控制组件页面参数与配置项的对应关系如表7-1所示。

表7-1 控制组件页面参数与配置项的对应关系

升级前ml2_conf_h3c.ini文件配置项

升级后控制组件页面参数名称

cloud_region_name

名称

hybrid_vnic

网络类型转换

enable_metadata:True

enable_dhcp_hierarchical_port_binding:True

网络接入策略:VLAN

enable_metadata:True

enable_dhcp_hierarchical_port_binding:False

网络接入策略:VXLAN

enable_metadata:False

enable_dhcp_hierarchical_port_binding:False

网络接入策略:不接入

ip_mac_binding

IP-MAC防欺骗

directly_external:OFF

防火墙业务:全部开启

directly_external:ANY

防火墙业务:全部关闭

directly_external:SUFFIX

directly_external_suffix:namename为虚拟路由器名称后缀)

防火墙业务:指定后缀的虚拟路由器关闭

tenant_gw_selection_strategy:match_gateway_name

tenant_gateway_name:namename为出口网关名称)

外网配置模式:单Segment

租户出口网关策略:匹配出口网关名称

enable_multi_gateways:True

外网配置模式:单Segment

租户出口网关策略:匹配虚拟路由器外部网络的物理网络名称

enable_bind_router_gateway_with_specified_name:True

外网配置模式:单Segment

租户出口网关策略:匹配虚拟路由器外部网络名称

enable_multi_segments:True

外网配置模式:多Segment

租户出口网关策略:匹配外部网络的Segment物理网络名称

deploy_network_resource_gateway

外网预配置出口网关

network_force_flat

外网强制转换为Flat

enable_network_l3vni:False

自动分配外网L3VNI:关闭

dhcp_lease_time

DHCP租约时长

generate_vrf_based_on_router_name:False

虚拟路由器VRF名称生成方式:自动生成

generate_vrf_based_on_router_name:True

虚拟路由器VRF名称生成方式:使用虚拟路由器名称

vds_name

默认VDS:指定默认VDS

auto_create_resource:True

自动创建资源:开启

resource_mode:CORE_GATEWAY

firewall_type:CGSR

防火墙资源类型:服务网关

防火墙资源模式:独享

resource_mode:CORE_GATEWAY

firewall_type:CGSR_SHARE

防火墙资源类型:服务网关

防火墙资源模式:共享

resource_mode:CORE_GATEWAY

firewall_type:NFV_CGSR

防火墙资源类型:服务网关

防火墙资源模式:NFV

resource_mode:SERVICE_LEAF

firewall_type:ACSR

防火墙资源类型:SERVICE LEAF

防火墙资源模式:独享

resource_mode:SERVICE_LEAF

firewall_type:ACSR_SHARE

防火墙资源类型:SERVICE LEAF

防火墙资源模式:共享

lb_type:CGSR

LB资源模式:独享(服务网关)

resource_mode:CORE_GATEWAY

lb_type:CGSR_SHARE

资源类型:服务网关

LB资源模式:共享(服务网关)

resource_mode:CORE_GATEWAY

lb_type:NFV_CGSR

资源类型:服务网关

LB资源模式:NFV(服务网关)

resource_share_count:1

资源节点共享数:1

lb_resource_mode:SP

LB资源池模式:单资源池

lb_resource_mode:MP

LB资源池模式:多资源池

lb_enable_snat:True

LB源地址转换:开启

lb_member_slow_shutdown:True

LB实服务器慢宕:开启

enable_lb_xff:True

LB源IP透传:开启

enable_lb_certchain:True

SSL服务端发送完整证书链:开启

 

表7-2 升级中的废弃参数说明

参数

说明

firewall_type

在SeerEngine-DC上创建的防火墙模式,废弃取值CGSR_SHARE_BY_COUNT。

CGSR_SHARE_BY_COUNT:以Context承载的网关服务型防火墙。当Context数量达到cgsr_fw_context_limit指定的阈值后,将进入资源共享模式。仅resource_mode取值为CORE_GATEWAY时本取值有效;仅Pike版本OpenStack支持配置本模式

fw_share_by_tenant

当防火墙创建模式为CGSR_SHARE或ACSR_SHARE时,是否开启单个租户独享一个网关服务型防火墙Context,并且租户内服务资源共享该Context(以False为例)

cgsr_fw_context_limit

以Context承载的网关资源型防火墙的Context数量阈值,取值为整数。当创建的Context数量达到此阈值时,则开启资源共享模式,仅当firewall_type取值为CGSR_SHARE_BY_COUNT时本参数有效。仅Pike版本OpenStack支持配置此参数

nfv_ha

开启NFV堆叠模式

 

升级后,控制组件上还需进行如下配置:

(1)     在控制组件页面配置VNI范围,与升级前ml2_conf.ini文件配置项的vni_ranges保持一致。

(2)     控制组件上必须存在VXLAN池。若没有VXLAN池或已有的VXLAN池资源不足时,新增VXLAN池的范围不能包含已有虚拟路由器的Segment ID。

5. 重启neutron-server服务

[root@localhost ~]# docker restart neutron_server


8 扩展功能

8.1  配置网络节点的Metadata服务

开源OpenStack支持VM通过DHCP和L3 Gateway两种方式从网络节点获取Metadata数据,我司当前的Metadata方案仅支持DHCP方式。当使用我司的Metadata方案时,请按如下步骤配置网络节点的Metadata服务。

1. 按照OpenStack安装指导正确配置Metadata服务

OpenStack安装指导请从OpenStack官网下载,请参照该手册正确配置网络节点的Metadata服务。

2. 修改网络节点通过DHCP方式提供Metadata服务

(1)     通过vi编辑器打开dhcp_agent.ini配置文件。

[root@network ~]# vi /etc/kolla/neutron-dhcp-agent/dhcp_agent.ini

(2)     按[i]键进入编辑模式,按照如下所示修改文件配置。修改完成后,按[ESC]键退出编辑模式,再输入:wq,按回车,保存dhcp_agent.ini配置文件并退出vi编辑器。

[DEFAULT]

force_metadata = True

参数含义如下:

¡     force_metadata:强制网络节点通过DHCP方式提供Metadata服务。

(3)     重启dhcp-agent容器。

[root@network ~]# docker restart neutron_dhcp_agent


9 常见问题解答

1. 当您的网络通过代理服务器联网时,无法使用yum命令直接访问互联网安装插件或补丁所需的Python工具包,怎么办?

可以通过为yum命令设置HTTP代理的方法解决,具体步骤如下:

(1)     配置网络实现服务器或虚拟机能够正常访问HTTP代理服务器。

(2)     通过vi编辑器修改yum.conf配置文件。如果该配置文件不存在,则新建该文件。

[root@localhost ~]# vi /etc/yum.conf

(3)     按[i]键进入编辑模式,按照如下所示,在打开的yum.conf配置文件中添加HTTP代理信息。添加完成后,按[ESC]键退出编辑模式,再输入:wq,按回车,保存yum.conf配置文件并退出vi编辑器。

·     当登录HTTP代理服务器无需用户名和密码时,请按如下格式添加代理信息:

proxy = http://yourproxyaddress:proxyport

·     当登录HTTP代理服务器需要用户名和密码时,请按如下格式添加代理信息:

proxy = http://yourproxyaddress:proxyport

proxy_username=username

proxy_password=password

¡     username:登录代理服务器的用户名(以sdn为例)。

¡     password:登录代理服务器的密码(以123456为例)。

¡     yourproxyaddress:代理服务器IP地址(以172.25.1.1为例)。

¡     proxyport:代理服务的端口号(以8080为例)。

proxy = http://172.25.1.1:8080

proxy_username = sdn

proxy_password = 123456

2. 插件安装成功后,与云平台对接出现异常时应该如何处理?

按照本文档中的步骤进行了正确的配置和安装后,对接云平台时出现问题时,请联系云平台厂商定位是否云平台侧的配置存在问题,排除云平台侧问题后,如仍然存在问题,请联系售后工程师进行处理。

3. 使用指定目的主机的迁移方式进行虚机热迁移时,因目的主机服务异常,导致迁移失败,如何处理?

(1)     查看迁移虚机状态,若虚机迁移动作正常回退,状态无异常,虚机业务不受影响,则此虚机无需处理。恢复目的主机后,再进行热迁移操作即可。

(2)     通过资源信息对比功能检查目的主机上是否存在残留map,若存在残留,请评估是否影响业务,如不影响业务,可不删除;如评估影响业务,请联系H3C工程师协助删除。

4. Inter X700系列网卡接收不到LLDP报文,怎么办?

以网卡enp61s0f3为例,解决办法如下:

(1)     查询并记录系统内核信息。

[root@localhost ~]# uname -r

3.10.0-957.1.3.el7.x86_64

(2)     查询网卡详细信息,记录firmware-version和bus-info的值。

[root@localhost ~]# ethtool -i enp61s0f3

driver: i40e

version: 2.8.20-k

firmware-version: 3.33 0x80000f0c 1.1767.0

expansion-rom-version:

bus-info: 0000:3d:00.3

supports-statistics: yes

supports-test: yes

supports-eeprom-access: yes

supports-register-dump: yes

supports-priv-flags: yes

(3)     根据内核版本和网卡固件版本的不同,有以下两种解决方案:

·     当内核高于kernel-3.10.0-957.el7且网卡固件版本(firmware-version)大于等于4时

a.     执行如下命令。

[root@localhost ~]# ethtool --set-priv-flags enp61s0f3 disable-fw-lldp on

b.     查看disable-fw-lldp状态是否是on。

[root@localhost ~]# ethtool --show-priv-flags enp61s0f3  | grep lldp

disable-fw-lldp       : on

c.     上述命令执行后,网卡LLDP报文已可收到,为防止服务器重启此命令失效,需要将此命令写入开机自定义程序启动文件中,已保证服务器重启有效。

d.     打开开机自启文件:

[root@localhost ~]# vi /etc/rc.d/rc.local

e.     按[i]键进入编辑模式,修改完成后,按[ESC]键退出编辑模式,再输入:wq,按回车,保存修改。

ethtool --set-priv-flags enp61s0f3  disable-fw-lldp on

f.     设置文件权限为可执行文件。

[root@localhost ~]# chmod 755 /etc/rc.d/rc.local

·     内核版本小于kernel-3.10.0-957.el7或者网卡固件版本(firmware-version)小于4时

g.     执行命令echo "lldp stop" > /sys/kernel/debug/i40e/bus-info/command,其中,bus-info请输入已记录的网卡对应值,并在“:”前输入转义符“\”。

[root@localhost ~]# echo "lldp stop" > /sys/kernel/debug/i40e/0000\:3d\:00.3/command

上述命令执行后,网卡LLDP报文已可收到,为防止服务器重启此命令失效,需要将此命令写入开机自定义程序启动文件中,已保证服务器重启有效。

h.     打开开机自启文件:

[root@localhost ~]# vi /etc/rc.d/rc.local

i.     按[i]键进入编辑模式,添加以下配置,修改完成后,按[ESC]键退出编辑模式,再输入:wq,按回车,保存修改。

echo "lldp stop" > /sys/kernel/debug/i40e/0000\:3d\:00.3/command

j.     设置文件权限为可执行文件

[root@localhost ~]# chmod 755 /etc/rc.d/rc.local

5. 当正常环境突然无法创建虚拟机实例,可能有什么原因?

(1)     查看websocket-client工具包是否安装,若未安装,则检查控制组件集群是否出现过重启

(2)     若控制组件集群重启过,则需要重启neutron-server后再进行创建虚拟机实例操作。

(3)     建议安装websocket-client工具包,并使能与控制组件的RPC连接功能,避免因控制组件集群重启导致数据丢失的问题。

6. 有关nova补丁和openvswitch-agent补丁的说明

在如下使用场景下,可先参考《H3C SeerEngine-DC OpenStack融合版本插件安装指导-CentOS》和《H3C SeerEngine-DC OpenStack融合版本插件安装指导-Ubuntu》中nova补丁和openvswitch-agent补丁的配置方式,并参考“5.2  安装/升级SeerEngine-DC Neutron插件”完成补丁的安装。

(1)     Nova补丁使用场景

¡     KVM类型的主机Overlay或网络Overlay组网中,如果虚拟机作为Loadbalancer成员,Loadbalancer需要感知成员状态。

¡     vCenter类型的网络Overlay场景。

(2)     openvswitch-agent补丁使用场景(Rocky版本之前):

当OpenStack的计算节点使用KVM虚拟化技术且需应用层次化端口绑定功能时,开源openvswitch-agent进程可能导致开源OVS(Open vSwitch)上缺少对应VLAN的流表,通过安装openvswitch-agent补丁可解决此问题。

7. 关于使用Kolla部署开源Wallaby和Xena版本安装插件的路径问题说明

以CentOS Stream 8操作系统和python3.6.8为例:

(1)     进入neutron_server容器。

[root@localhost ~]# docker exec -it -u root neutron_server  bash

(2)     更新setuptools版本为50.3.2。

(neutron-server)[ root@localhost ~]# /var/lib/kolla/venv/bin/python -m pip install --upgrade setuptools==50.3.2

(3)     拷贝easy_install到虚拟环境bin目录并重命名为easy_install_h3c以防止冲突。

(neutron-server)[ root@localhost ~]# cp /usr/bin/easy_install /var/lib/kolla/venv/bin/easy_install_h3c

(4)     通过vi编辑器打开easy_install_h3c配置文件。

(neutron-server)[ root@localhost ~]# vi /var/lib/kolla/venv/bin/easy_install_h3c

(5)     按[i]键进入编辑模式,修改完成后,按[ESC]键退出编辑模式,再输入:wq,按回车,保存easy_install配置文件并退出vi编辑器。

a.     删除首行

#!/usr/libexec/platform-python

b.     添加首行

#!/var/lib/kolla/venv/bin/python

(6)     执行检查命令查看是否指向neutron所在目录。

(neutron-server)[ root@localhost ~]# easy_install_h3c --version

setuptools 50.3.2 from /var/lib/kolla/venv/lib/python3.6/site-packages (Python 3.6)

(7)     此后使用easy_install_h3c命令安装插件。

(neutron-server)[ root@localhost ~]# easy_install_h3c SeerEngine_DC_PLUGIN-E3608-py2.7.egg

注意

若使用easy_install_h3c安装插件,之后场景安装插件时均需要使用easy_install_h3c而不是easy_install

 

8. 关于使用Kolla方式部署的开源Wallaby和Xena版本安装python3-websocket-client的问题说明

以CentOS Stream 8操作系统和python3.6.8为例:

(1)     检查容器中websocket路径和neutron路径。

(neutron-server)[root@localhost /]# python

Python 3.6.8 (default, Jan 19 2022, 23:28:49)

[GCC 8.5.0 20210514 (Red Hat 8.5.0-7)] on linux

>>> import websocket

>>> websocket.__path__

['/usr/lib/python3.6/site-packages/websocket']

>>> import neutron

>>> neutron.__path__

['/var/lib/kolla/venv/lib/python3.6/site-packages/neutron']

(2)     neutron路径为正确路径,如果websocket的路径和neutron不一致,则请参见步骤(3)(5)进行处理;若一致,则websocket-client工具包可用。

(3)     卸载使用yum安装的python3-websocket-client。

(neutron-server)[root@localhost /]# yum remove python3-websocket-client

(4)     检查容器中pip3路径,如果该路径和neutron路径一致,使用pip3安装python3-websocket-client(需要能够正常访问互联网)。

(neutron-server)[root@localhost /]# pip3 -V

pip 21.3.1 from /var/lib/kolla/venv/lib/python3.6/site-packages/pip (python 3.6)

(neutron-server)[root@localhost /]# pip3 install websocket-client==0.56.0

(5)     完成以上步骤后,如websocket-client工具包仍不可用,请联系技术工程师。

9. 若Neutron数据库连接信息加密,融合插件在继承portforwardings数据表时会出现访问数据库失败,导致无法继承,怎么办?

(1)     先卸载Neutron插件。

(neutron-server) [root@localhost ~]# h3c-sdnplugin controller uninstall

(2)     重新安装Neutron插件,并在安装Neutron插件时指定db_connection参数。

(neutron-server) [root@localhost ~]# h3c-sdnplugin controller install --db_connection mysql+pymysql://neutron:PASSWORD@controller/neutron

db_connection参数的取值为neutron.conf文件中[database]配置组connection的值,其中Neutron数据库的访问密码为未加密的密码。

connection = mysql+pymysql://neutron:PASSWORD@controller/neutron

 

 

 

不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!

新华三官网
联系我们