先电云计算网络搭建操作手册-Cloud-SDN-v2.2

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

先电云计算网络搭建
操作手册
版本:先电Cloud-SDN-v2.2
发布日期:2018年2月1日南京第五十五所技术开发有限公司
版本修订说明
修订版本修订时间修订说明Cloud-SDN-v1.32015年8月18日先电云网络用户手册Cloud-SDN-v1.42016年4月12日添加注释说明和端口说明Cloud-SDN-v2.02016年10月30日修改为支持iaas 2.0版本Cloud-SDN-v2.0.52017年3月13日更新国际化、centos7命令Cloud-SDN-v2.22018年2月1日更新访问Dashboard界面
图片
目录
1、控制器介绍 (4)
2、环境介绍 (4)
2.1硬件环境 (4)
2.2拓扑介绍 (4)
3、安装控制器 (6)
3.1、安装JDK环境 (6)
3.2、安装Maven环境 (6)
3.3、安装OpenDayLight (7)
4、配置OpenStack (9)
4.1、清除Neutron配置内容 (9)
4.2、清除Neutron相关内容 (10)
4.3、清除OVS数据库数据 (12)
4.4、配置OpenvSwitch (13)
4.5、常见问题说明 (17)
5、使用ODL (17)
5.1、访问Dashboard界面 (17)
5.1、测试 (18)
1、控制器介绍
OpenDayLight是2013推出来的一个开源项目,参与者都是来自众多的设备厂商,其中就包括思科等网络设备巨头,IBM、微软等传统的硬件设备巨头,还包括BigSwitch等新兴网络设备厂商,以及Vmware等新兴IT软件厂商,这就说明SDN领域为业界的发展带来了更多的机会,是更多的参与者能够加入到SDN 的研发和创新中;OpenDayLight开源项目就是和Linux基金会合作,目标是成为SDN架构中的核心组件,使用户能够减少网络的运营复杂度,扩展现有的网络架构的硬件生命期,同时还能支持SDN新业务和新能力的创新。

所谓SDN是一种新型网络架构。

传统网络采用是分布式策略工作,由设备制定转发策略,而SDN的核心思想这是控制和转发分离,将软件应用到网络控制中,并起到主导作用,而不是固定的模式的协议控制网络,SDN的目的是提高网络的可控性与可编程性,可以根据用户需求灵活的提供不同的质量等级服务。

2、环境介绍
2.1硬件环境
系统最低要求:2CPU 、2G内存
2.2拓扑介绍
云平台具体安装拓扑如图一所示。

搭建云平台搭建之前,首先配置好OpenDayLight的生产环境,安装完成之后,根据云计算基础架构平台的用户手册,在控制节点和计算节点完成相关模块的安装和配置,本次云平台的网络模式为Neutron Gre模式,同时Neutron的L3 agent服务和Neutron的DHCP均安装在Compute节点,如果需要采用OpenDayLight模式管理虚拟网络,那么需要在配置之前清空OpenvSwitch的相关配置,所以云实例的启动需要在完成OpenDayLight的前提下进行,具体的IP地址分配如下所示。

主机名隧道(管理网段)地址实例(外网)地址
Controller30.0.0.10192.168.60.10
Compute/Network30.0.0.20192.168.60.20
OpenDayLight无192.168.60.10
本次安装配置可以按照以下的步骤:
(1)在控制节点安装OpenDayLight控制软件,并完成控制器的配置。

(2)安装云计算平台,确定网络节点。

如果不确定网络节点可以通过neutron agent-list 查看,即存在DHCP和L3服务的节点为网络节点,以下网络节点的操作步骤在此节点进行。

(3)修改Ml2的插件的mechanism_ drivers类型
(4)清空OpenvSwitch的默认配置,交由OpenDayLight来监控。

(5)重新启动OpenvSwitch,正常完成Neutron的使用,Dashboard界面创建网络和云主机。

3、安装控制器
3.1、安装JDK环境
OpenDaylight的安装节点需要配置JDK的环境,安装提供的Java软件包jdk-7u71-linux-x64.tar.gz
首先拷贝软件包到系统中,然后执行以下命令安装。

[root@controller ~]# # tar -zxvf jdk-7u71-linux-x64.tar.gz -C /usr/local/
修改环境变量添加如下内容
编辑文件 /etc/profile
export JAVA_HOME=/usr/local/jdk1.7.0_71/
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar 安装完成执行以下命令检测安装。

执行环境变量
[root@controller ~]# source /etc/profile
[root@controller ~]# java -version
java version "1.7.0_71"
Java(TM) SE Runtime Environment (build 1.7.0_71-b14)
Java HotSpot(TM) 64-Bit Server VM (build 24.71-b01, mixed mode)3.2 3.2、安装Maven环境
OpenDaylight的安装节点需要配置Maven的环境,安装提供的Maven软件包apache-maven-3.0.4.tar.gz
[root@controller ~]# tar -zxvf apache-maven-3.0.4.tar.gz -C
/usr/local/
修改环境变量添加如下内容
编辑文件 /etc/profile
export MAVEN_HOME=/usr/local/apache-maven-3.0.4/
export PATH=${PATH}:${MAVEN_HOME}/bin
安装完成执行以下命令检测安装。

执行环境变量
[root@controller ~]# source /etc/profile
[root@controller ~]# mvn -v
Apache Maven 3.0.4 (r1232337; 2012-01-17 16:44:56+0800)
Maven home: /usr/local/apache-maven-3.0.4
Java version: 1.7.0_71, vendor: Oracle Corporation
Java home: /usr/local/jdk1.7.0_71/jre
Default locale: zh_CN, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-327.36.2.el7.x86_64", arch: "amd64", family: "unix"
3.3、安装OpenDayLight
(1)拷贝软件包到系统内,执行以下命令完成解压
将软件包解压到指定的目录下(目录需存在)
# tar -zxvf opendaylight.tar.gz -C /opt
(2)进入目录准备安装
# cd /opt/opendaylight/
(3)修改mvn的配置setting位置路径
编辑以下配置文件
vi +37 etc/org.ops4j.pax.url.mvn.cfg
将此段修改成
org.ops4j.pax.url.mvn.settings=/usr/local/apache-maven-3.0.4/c onf/settings.xml
(4)启动OpenDayLight服务进程
# ./bin/start
确保存在进程后执行以下步骤,即确定 ps aux |grep opendaylight 存在进程。

(5)开始以客户端方式连接
需要在启动进程之后等待一段,否则会出现以下报错
Failed to get the session.
# ssh -p 8101 karaf@localhost
密码为karaf
登录成功如下图所示,此时我们继续配置OpenDayLight模块内容
Logging in as karaf
此时我们执行以下命令完成模块的安装
opendaylight-user@root> feature:install odl-ovsdb-openstack odl-dlux-core
通过以上命令我们可以安装OpenDayLight一个最基本的框架,目前只支持我们可以通过web界面简单的查看Neutron的分配情况,包括OpenvSwitch的网桥的分配的虚拟接口情况。

OpenDayLight提供的安装命令为feature:install然后加上安装的需要插件,odl-ovsdb-openstack为安装基于OpenvSwitch的的OpenStack功能,odl-dlux-core为安装DLUX功能,管理界面。

此时我们打开web界面均可以访问OpenDayLight界面。

打开方式http://主机IP:8181/index.html
默认用户名和密码均为admin。

至此,OpenDayLight环境安装完毕,下面开始配置OpenStack的Neutron服务和OpenvSwitch服务。

4、配置OpenStack
4.1、清除Neutron配置内容
由于是使用OpenDayLight来管理网络,所以节点的ovs-agent服务已经失去了意义,
Neutron的相关API接口都是通过Neutron-Server来管理和处理,从而使用适合的驱动。

那么在SDN的模式下,我们将Neutron的所有的请求都是转发给ODL来处理,ODL也是有着多种虚拟网络管理方式(OVSDB),在使用OVSDB之前我们需要在Neutron—server节点安装networking-odl软件包如下面所示。

networking-odl.tar.gz
# tar -zxvf networking-odl.tar.gz
# cd networking-odl
# python setup.py install
4.2、清除Neutron相关内容
我们需要确保OpenStack网络状态是没有配置的,当使用OpenDaylight作为Neutron的后端时,,ODL开始接管Open vSwitch的配置。

因此,有必要删除现有的OpenStack和OpenvSwitch配置。

通过以下命令删除相关内容。

(1)移除实例
通过命令或者Dashboard界面完成
# nova list
# nova delete <name /id >
(2)移除子路由器上子网接口
通过命令或者Dashboard界面完成
# neutron subnet-list
# neutron router-list
# neutron router-port-list <router name>
# neutron router-interface-delete <router name> <subnet ID or name> (3)移除网络子网、网络、路由器
# neutron subnet-delete <subnet name>
# neutron net-list
# neutron net-delete <net name>
# neutron router-delete <router name>
(4)停止Neutron-server服务
# systemctl stop neutron-server.service
(5)停止OvS-agent
所有节点停止Neutron-OpenvSwitch-agent服务,并将开机自启关闭。

# systemctl stop neutron-openvswitch-agent.service
# systemctl disable neutron-openvswitch-agent.service
(6)节点停止服务
# systemctl stop neutron-metadata-agent.service(所有节点)
# systemctl stop neutron-dhcp-agent.service (网络节点)
# systemctl stop neutron-l3-agent.service(网络节点)
# systemctl stop neutron-lbaas-agent.service(网络节点)
(7)删除Neutron数据库
[root@controller ~]# mysql -uroot -p000000(数据库密码为000000)mysql> drop database neutron;
mysql> create database neutron ;
mysql> GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' IDENTIFIED BY '000000';
mysql> GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' IDENTIFIED BY '000000';
mysql> exit
(8)同步数据库
# 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 # neutron-db-manage --service lbaas upgrade head
# neutron-db-manage --subproject neutron-fwaas upgrade head
4.3、清除OVS数据库数据
(1)配置OpenDaylight管理Open vSwitch
在每个节点上清除已有的Open vSwitch配置。

# systemctl stop openvswitch.service
# rm -rfv /var/log/openvswitch/*
# rm -rfv /etc/openvswitch/conf.db
# systemctl start openvswitch.service
(2)查看OVS数据
[root@controller ~]# ovs-vsctl show
32916fc3-c879-4afc-a1cc-2b499e1503f9
ovs_version: "2.1.3"
(3)配置Neutron ml2 Plugin
修改两个节点的/etc/neutron/plugins/ml2/ml2_conf.ini配置文件,修改如下mechanism_drivers = opendaylight
(4)添加ODL控制到ml2配置文件中
在两个节点的/etc/neutron/plugins/ml2/ml2_conf.ini配置文件最后添加如下内容
[ml2_odl]
password = admin
username = admin
url = http://30.0.0.10:9090/controller/nb/v2/neutron
(5)配置Gre模式
控制节点、计算/网络节点
openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini ml2 type_drivers gre
openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini ml2 tenant_network_types gre
openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini
ml2_type_gre tunnel_id_ranges 1:1000
openstack-config --set /etc/neutron/plugins/ml2/openvswitch_agent.ini agent tunnel_types gre
openstack-config --set /etc/neutron/plugins/ml2/openvswitch_agent.ini ovs local_ip 30.0.0.10/30.0.0.20 (实际隧道地址)
openstack-config --set /etc/neutron/plugins/ml2/openvswitch_agent.ini ovs enable_tunneling True
4.4、配置OpenvSwitch
(1)配置OpenvSwitch local_ip
控制节点
# ovs-vsctl set Open_vSwitch c11a6e0a-761a-471f-a2a2-3c4ad1835c46 other_config={'local_ip'='30.0.0.10'}
计算节点
# ovs-vsctl set Open_vSwitch ac83d579-5891-4fc5-bad6-69a20b151728 other_config={'local_ip'='30.0.0.20'}
注:ID为OpenvSwitch的ID,通过命令ovs-vsctl show查询
(2)配置完毕后可以通过以下命令查看Open_vSwitch的详细信息
# ovs-vsctl list Open_vSwitch
控制节点
[root@controller ~]# ovs-vsctl list Open_vSwitch
_uuid : c11a6e0a-761a-471f-a2a2-3c4ad1835c46
bridges : []
cur_cfg : 1
db_version : "7.4.0"
external_ids : {system-id="d9e75022-cf94-4096-b8ed-2f8bc9459858"}
manager_options : [8625e292-1a5f-4c61-a853-52ff3573c29f]
next_cfg : 77
other_config : {local_ip="30.0.0.10"}
ovs_version : "2.1.3"
ssl : []
statistics : {}
system_type : CentOS
system_version : "6.5-Final"
计算/网络节点
[root@compute ~]# ovs-vsctl list Open_vSwitch
_uuid : ac83d579-5891-4fc5-bad6-69a20b151728
bridges :[]
cur_cfg : 1
db_version : "7.4.0"
external_ids : {system-id="235037e4-ee77-4cc8-a9de-28068f6cada7"}
manager_options : [b0f89092-d52b-4e32-9786-37d5bf348de1]
next_cfg : 41
other_config : {local_ip="30.0.0.20"}
ovs_version : "2.1.3"
ssl : []
statistics : {}
system_type : CentOS
system_version : "6.5-Final"
(3)设置所有节点的OpenvSwitch对应的SDN控制器OpenDayLight
每个节点
# ovs-vsctl set-manager tcp:30.0.0.10:6640
执行完命令之后通过查看ovs的状态,可以看出br-int网桥已经创建成功
[root@controller ~]# ovs-vsctl show
c11a6e0a-761a-471f-a2a2-3c4ad1835c46
Manager "tcp:30.0.0.10:6640"
is_connected: true
Bridge br-int
Controller "tcp:30.0.0.10:6633"
is_connected: true
fail_mode: secure
Port br-int
Interface br-int
ovs_version: "2.1.3"
查看OVS的br-int端口的状态
[root@controller ~]# ovs-ofctl dump-ports-desc br-int -OopenFlow13 OFPST_PORT_DESC reply (OF1.3) (xid=0x2):
LOCAL(br-int): addr:8a:8c:e5:f0:3d:4a
config: PORT_DOWN
state: LINK_DOWN
speed: 0 Mbps now, 0 Mbps max
查看br-int的流规则
[root@controller ~]# ovs-ofctl dump-flows br-int -OopenFlow13 OFPST_FLOW reply (OF1.3) (xid=0x2):
cookie=0x0, duration=4902.037s, table=0, n_packets=0, n_bytes=0, send_flow_rem dl_type=0x88cc actions=CONTROLLER:65535
cookie=0x0, duration=4901.183s, table=0, n_packets=0, n_bytes=0, send_flow_rem priority=0 actions=goto_table:20
cookie=0x0, duration=4900.681s, table=20, n_packets=0, n_bytes=0, send_flow_rem priority=0 actions=goto_table:30
cookie=0x0, duration=4900.177s, table=30, n_packets=0, n_bytes=0, send_flow_rem priority=0 actions=goto_table:40
cookie=0x0, duration=4899.675s, table=40, n_packets=0, n_bytes=0, send_flow_rem priority=0 actions=goto_table:50
cookie=0x0, duration=4899.170s, table=50, n_packets=0, n_bytes=0, send_flow_rem priority=0 actions=goto_table:60
cookie=0x0, duration=4898.664s, table=60, n_packets=0, n_bytes=0, send_flow_rem priority=0 actions=goto_table:70
cookie=0x0, duration=4898.159s, table=70, n_packets=0, n_bytes=0, send_flow_rem priority=0 actions=goto_table:80
cookie=0x0, duration=4897.655s, table=80, n_packets=0, n_bytes=0, send_flow_rem priority=0 actions=goto_table:90
cookie=0x0, duration=4897.150s, table=90, n_packets=0, n_bytes=0, send_flow_rem priority=0 actions=goto_table:100
cookie=0x0, duration=4896.645s, table=100, n_packets=0, n_bytes=0, send_flow_rem priority=0 actions=goto_table:110
cookie=0x0, duration=4896.130s, table=110, n_packets=0, n_bytes=0, send_flow_rem priority=0 actions=drop
(4)节点配置br-ex
# ovs-vsctl add-br br-ex
# ovs-vsctl add-port br-ex enp9s0
(5)启动Neutron-server服务
# systemctl start neutron-server.service(网络节点)
(6)启动服务
# systemctl start neutron-metadata-agent.service(所有节点)
# systemctl start neutron-dhcp-agent.service (网络节点)
# systemctl start neutron-l3-agent.service(网络节点)
# systemctl start neutron-lbaas-agent.service(网络节点)
(7)检查OpenDayLight
通过curl命令检查返回状态
[root@controller ~]# curl -u admin:admin http:// 30.0.0.10:9090/controller/nb/v2/neutron/networks
{
"networks" : [ ]
查看返回结果,显示如上所示为正常。

4.5、常见问题说明
(1)遇到网络节点设备不通
通过ssh连接重启openvswitch服务和network网络服务解决
5、使用ODL
5.1、访问Dashboard界面
创建Neutron的网络,创建子网和路由器
5.1、测试
我们在openstack controller节点查询ovs的简单信息可以看出由opendaylight管理的网络流量如下:
[root@controller ~]# ovs-vsctl show
09274dec-f169-48c5-98cb-3dcce1a04372
Manager "tcp:172.24.13.10:6640"
is_connected: true
Bridge br-int
Controller "tcp:172.24.13.10:6653"
is_connected: true
fail_mode: secure
Port "tape717856b-ec"
Interface "tape717856b-ec"
type: internal
Port "tapa960c4a0-93"
Interface "tapa960c4a0-93"
type: internal
Port br-int
Interface br-int
type: internal
Port "gre-172.24.13.20"
Interface "gre-172.24.13.20"
type: gre
options: {key=flow, local_ip="172.24.13.10", remote_ip="172.24.13.20"}
Port "qr-448244f7-6e"
Interface "qr-448244f7-6e"
type: internal
Bridge br-ex
Port "enp10s0"
Interface "enp10s0"
Port "qg-e0566534-8d"
Interface "qg-e0566534-8d"
type: internal
Port br-ex
Interface br-ex
type: internal
ovs_version: "2.5.0"
我们可以通过在OpenDayLight终端命令可以查询网络情况
[root@controller ~]# curl -u admin:admin http://30.0.0.10:9090/controller/nb/v2/neutron/networks
{
"networks" : [ {
"id" : "e6d49962-ac82-472e-8334-d6e3cd1ebb85",
"name" : "ext",
"admin_state_up" : true,
"shared" : false,
"tenant_id" : "66f53f0adfdb49e2b47d87357f49441e",
"router:external" : true,
"provider:network_type" : "gre",
"provider:segmentation_id" : "1",
"status" : "ACTIVE",
"subnets" : [ "187c6453-d3df-4d2e-a7eb-66a130ccd969" ]
}, {
"id" : "c90cf500-c822-42bf-a54c-d14d8e4d7a0c",
"name" : "ext",
"admin_state_up" : true,
"shared" : false,
"tenant_id" : "66f53f0adfdb49e2b47d87357f49441e",
"router:external" : true,
"provider:network_type" : "gre",
"provider:segmentation_id" : "1",
"status" : "ACTIVE",
"subnets" : [ "d4f046a8-e8dd-491c-9b3a-7fad513436ea" ] }, {
"id" : "0321d24c-c7f0-46d3-b249-aa16023ecc87",
"name" : "demo",
"admin_state_up" : true,
"shared" : false,
"tenant_id" : "66f53f0adfdb49e2b47d87357f49441e",
"router:external" : false,
"provider:network_type" : "gre",
"provider:segmentation_id" : "2",
"status" : "ACTIVE",
"subnets" : [ "6a654cb0-24de-4428-99bd-ac0d42cef318" ] }, {
"id" : "598f43d7-265c-4060-85dd-46c33e4b81f8",
"name" : "192.168.60.0/24",
"admin_state_up" : true,
"shared" : false,
"tenant_id" : "66f53f0adfdb49e2b47d87357f49441e",
"router:external" : true,
"provider:network_type" : "gre",
"provider:segmentation_id" : "1",
"status" : "ACTIVE",
"subnets" : [ "ed93d0b0-715f-487a-b956-df5f4eb4f3e1" ]
}, {
"id" : "34d2a4b5-baee-4013-8997-61dbe338bb52",
"name" : "ext",
"admin_state_up" : true,
"shared" : false,
"tenant_id" : "66f53f0adfdb49e2b47d87357f49441e",
"router:external" : true,
"provider:network_type" : "gre",
"provider:segmentation_id" : "1",
"status" : "ACTIVE",
"subnets" : [ "85bbf6b9-08db-483b-af73-55bf7b6e90df" ] }, {
"id" : "76fcc8a9-601f-49ea-b2e8-885ab589f65a",
"name" : "ext",
"admin_state_up" : true,
"shared" : false,
"tenant_id" : "66f53f0adfdb49e2b47d87357f49441e",
"router:external" : true,
"provider:network_type" : "gre",
"provider:segmentation_id" : "1",
"status" : "ACTIVE",
"subnets" : [ "bf8b654d-7bee-4452-a329-81a6053e7a43" ] }, {
"id" : "b7f1848c-6cf8-4113-803a-87cf91f70336",
"name" : "admin",
"admin_state_up" : true,
"shared" : false,
"tenant_id" : "66f53f0adfdb49e2b47d87357f49441e",
"router:external" : true,
21
"provider:network_type" : "gre",
"provider:segmentation_id" : "1",
"status" : "ACTIVE",
"subnets" : [ "970f7639-ae07-4677-b8ad-9da4e1e0d5df" ]
} ]
以上这就是我们简单的使用ODL的管理流量的功能来处理Neutron的网络分配情况的一个实验测试。

22。

相关文档
最新文档