本文来自:SDNAP.com - SDN联合播报

11月份受邀访问了汉柏科技,据他们开发SDN小组介绍他们也正在SDN上面花大量人力物力,将会为数据中心提供一整套SDN解决方案。不久将有这方面DEMO,到时希望能在SDNAP沙龙做些分享,或是做些技术上的分享。本文是汉柏SDN产品线经理曾红李参加SDNAP沙龙听KkBluE做了这方面介绍,特意组织出这方面的一个教程分享。非常感谢大家的有心分享。

1 安装准备

本文主要介绍了openstack+contrail的安装过程,用户界面还是openstack的界面,只是openstack的网络功能由contrail 完成(可以从测试中对VM之间通信的抓包可以看出使用了mpls over GRE 隧道)。由于开源版本contrail 安装部署的文档较少,搭建这个环境比较复杂,在此我们分享一下安装和编译过程中遇到的问题和解决方案。由于代码开源,我们也简单介绍了一些调试的手段。如果有什么问题联系 chensheng(at)opzoon.com, 或是SDN QQ群#汉柏-树袋熊,或@holly77r25

1.1 硬件环境

  • 服务器两台:操作系统fedora17(18,19应该也没问题)
  • 以太网交换机:1台

逻辑组网拓扑图如下:

1.2 安装软件准备

(1)安装fedora系统(略);

(2)设置普通用户的sudo权限,openstack的安装是以普通用户的身份安装的(建议不要 以root身份执行安装脚本)

编译sudoers文件

$sudo chmod 777 /etc/sudoers

$vi /etc/sudoers

找到如下行

root    ALL=(ALL)       ALL

添加普通用户的sudo权限,如下

root    ALL=(ALL)       ALL

opzoon   ALL=(ALL)       NOPASSWD:ALL

把sudoers文件权限复原,否则执行安装脚本会报错

$sudo chmod 440 /etc/sudoers

(3)配置两台服务器的网络,其中一台配置如下(最简单的配置),另外一台的配置需要根据两个服务器是否在一个网段,进行IP地址的修改,在本例子中,两台服务器在同一个网段,IP地址分别为:10.0.0.11 和10.0.0.12

$sudo vi /etc/sysconfig/network-scripts/ifcfg-em1

UUID=”fcc9fad3-4b99-4a02-b02a-adfd6d8f0f64″

NM_CONTROLLED=”yes”

HWADDR=”D0:67:E5:EC:E9:08″

IPADDR=10.0.0.11

NETMASK=255.255.255.0

GATEWAY=10.0.0.1

DNS1=8.8.8.8

DEVICE=”em1″

ONBOOT=”yes”

(4)添加ssh认证

脚本安装过程会下载contrail源码,其下载过程需要ssh认证,需要去https://github.com网站注册个账户,然后在注册的账户里添加ssh公匙。步骤如下:

(1)安装ssh

$sudo yum install -y openssh-server

(2)生成公匙和私匙

$ssh-keygen

(3)显示生成的公匙

$cat ~/.ssh/id_rsa.pub

(4)网页登陆https://github.com上注册的账户,点击右上角的设置图标,进入设置界              面后,在左侧栏找到SSH-Keys,就可以添加SSH公匙了。把上面打印的公匙复制            到 key里点击add key就能可以了。

(5)验证密匙是否生效

$ssh -T git@github.com

如果打印如下信息,说明添加成功了。

Hi opzoon! You’ve successfully authenticated, but GitHub does not provide shell                   access.

(5)下载devstack(openstack 安装脚本)

Juniper公司把contrail的安装集成到了devstack脚本里,下载地址为https:github.com/dsetia/devstack,可以直接上网页下载zip包,也可以在命令行下用git clone命令下载。git下载方式如下:

$sudo yum install git -y

$cd ~/

$git clone https://github.com/dsetia/devstack.git

(6)下载相应系统内核源码和更新必要库文件

$sudo yum install -y kernel-devel  #编译内核模块vrouter需要

$sudo yum update libtasn1       #运行openstack-compute时,不更新该库会出错

2. 安装和编译

根据前面的拓扑图,我们对服务节点和计算节点进行安装。

1.进入下载好的devstack目录,根据需要修改安装节点启动脚本(之后的步骤是一样的)。

(1)服务节点的安装脚本

把contrail目录下的localrc-multinode-server复制一份到devstack目录,并命名为            localrc, 如下:

$cd ~/devstack

$cp contrail/localrc-multinode-server ./localrc

修改localrc里的参数,例如:

PHYSICAL_INTERFACE=em1

HOST_IP=10.0.0.11

CONTRAIL_VGW_PUBLIC_SUBNET=10.0.0.240/28,建议IP范围和样本保持一致 (240     to 255)。

(2)计算节点的安装脚本

把contrail目录下的localrc-multinode-compute复制一份到devstack目录,并命名为        localrc,如下:

$cd ~/devstack

$cp contrail/localrc-multinode-compute ./localrc

修改localrc里的参数,例如:

PHYSICAL_INTERFACE=em1

HOST_IP=10.0.0.12

SERVICE_HOST=10.0.0.11

CONTRAIL_VGW_PUBLIC_SUBNET=10.0.0.240/28,建议IP范围和样本保持一致 (240     to 255)。

最后,再把enable_service contrail添加到localrc里。

2.脚本安装里下载的源码存放在了/opt/stack目录里,脚本可能没有权限创建stack目    录,需要手动创建,并设置权限。如下:

$sudo mkdir /opt/stack
$sudo chmod 777 /opt/stack

3.执行安装脚本,安装openstack和contrail。

$./stack.sh

第一次执行脚本,会下载源码和依赖包,安装时间比较长。安装结束后,会打印网页访问地址,用户及密码。一般情况下,很难一次就安装成功的,中间多少会出现一些问题。如果出现安装中断和失败,接着看后面的内容。如果安装失败或者安装提示完成了却仍然有问题,可以看看调试章节的内容定位问题的原因。脚本执行到下载contrail源码时,容易出问题,一般表现为认证、访问网址等诸多原因失败,如果出现这种情况后,需要手动下载(还用脚本下载有可能被跳过),下载方法看后面章节。

4.重新执行安装脚本之前,先执行卸载脚本。

$./unstack.sh

3 安装过程遇到的问题及解决方式

1) 如果安装过程遇到HOST_IP无法确定的问题,查看stack.sh里的       FLOATING_RANGE或FIXED_RANGE是否与你的IP地址有冲突。如果有冲突,把它  修改成其它的网段。

2)  如果以前下载过devstack,需要重新下载,新版本补丁做了修改,并修复了一些     BUG。

3)  contrail源码下载出现问题,大概会长时间停留在如下打印处(后面可能还会打印   认证失败或访问被拒绝之类的):

repo init -u git@github.com:Juniper/contrail-vnc

repo init -u git@github.com:Juniper/contrail-vnc

Get https://gerrit.googlesource.com/git-repo

长时间无反应情况下,多按几次ctrl+c让脚本完全退出安装,执行手动下载,步骤        如下:

4) 首先判断是否有repo命令,如果没有,按如下步骤安装:

$wget http://commondatastorage.googleapis.com/git-repo-downloads/repo

$chmod 0755 repo

$sudo mv repo /usr/bin

5) 下载contrail源码(前提是前面的ssh认证通过了):

$sudo rm -rf /opt/stack/contrail

$sudo mkdir /opt/stack/contrail

$sudo chmod 777 /opt/stack/contrail

$cd /opt/stack/contrail

$git config –global user.name “Anonymous”

$git config –global user.email “anonymous@nowhere.com”

$repo init -u git@github.com:Juniper/contrail-vnc

如果上面这步出现问题,ctrl+c退出后,进行如下操作后重新执行(不行就多试几次,直到成功下载完)。

$rm -rf .repo*

$repo init -u git@github.com:Juniper/contrail-vnc

最后,同步源码

$repo sync

下载完contrail源码,就可以重新执行安装脚本了

$cd ~/devstack

$./stack.sh

6) contrail的编译和安装需要下载一些依赖,当脚本执行到编译contrail或安装contrail       时出现问题,先确认如下目录文件是否都下载成功。如发现某些文件大小为0的情况,    直接删除,下次执行安装脚本时会重新下载。

$ls -l  /tmp/cache/third_party/
bind-9.9.2-P1.tar.gz
fysom-1.0.8.tar.gz
hiredis-master.zip
libxml2-2.8.0.tar.gz
tbb40_20111130oss_src.tgz
boost_1_48_0.tar.gz
gmock-1.6.0.zip
hiredis-v0.11.0.tar.gz
log4cplus-1.1.1.tar.bz2
thrift-0.8.0.tar.gz
bottle-0.11.6.tar.gz
gperftools-2.1.tar.gz
http-parser-v2.1.tar.gz
pugixml-1.2.tar.gz
curl-7.24.0.tar.gz
gtest-1.6.0.zip
ifmap-python-master.zip
rapidjson-0.11.zip
$ls -l /opt/stack/contrail/third_party
apache-cassandra-2.0.2
bottle-0.11.6
hiredis-0.11.0
irond-0.3.0-bin.zip
bottle_patch1.diff
hiredis-asio-patch1.diff
libxml2-2.8.0
tbb40_20111130oss
apache-cassandra-2.0.2-bin.tar.gz
curl-7.24.0
hiredis-boostasio-adapter
log4cplus-1.1.1
thrift-0.8.0
bind-9.9.2-P1
fetch_packages.py
hiredis-patch1.diff
ncclient-v0.3.2.tar.gz
thrift_autoconf.patch
bind_patch1.diff
fysom-1.0.8
http-parser-2.1
ncclient-v0.3.2.tar.gz.1
thrift_patch1.diff
boost_1_48_0
gmock-1.6.0
ifmap-python-client
packages.xml
zookeeper-3.4.5
boost_1_48_patch1.diff
gperftools-2.1
ifmap-python-patch1.diff
pugixml
zookeeper-3.4.5.tar.gz
boost_time_utc.patch
gtest-1.6.0
irond-0.3.0-bin
rapidjson

另外,把pache-cassandra-2.0.2复制一份命名为apache-cassandra-2.0.2-bin或者修改devstack/lib/neutron_thirdparty/contrail里对该文件存在的判断,以避免每次执行安装脚本都要下载。
7) 新版本的devstack安装后,好像没有安装config_parser命令(连它的本名都修改为 了contrail_parser.py),没有它contrail创建不了接口,创建虚拟机会失败。按如下方法     修复(前提是安装脚本至少执行到了给nova源码打补丁的地方,即执行完了    nova_v4.patch。否则没有这个文件):

$sudo cp -rf /opt/stack/nova/plugins/contrail/contrail_parser.py  /usr/sbin/config_parser

$sudo chmod a+x /usr/sbin/config_parser

8) 安装过程可能还会遇到一些文件创建权限问题,对于这些情况,参照调试部分定位问题,设置权限。

4 如何调试

1.如果遇到了上面没有提到的问题,就需要看程序执行的情况来定位问题出现原因。  用devstack安装openstack和contrail后,会创建两个screen,在这两个screen中调试比       较方便,定位问题也方便多了。调试步骤如下(如果是root用户安装的,需要切换到       stack账户下调试):

(1)列出screen

$screen -ls

打印如下信息,说明两个screen都创建成功了。

4810.contrail   (Detached)

4670.stack      (Attached)

2 Sockets in /var/run/screen/S-opzoon.

(2)进入到contrail界面

$screen -x contrail

正常情况下,单节点和服务节点最后一行显示如下(计算节点只有agent和vif):

0$ shell 1$(L) redis  2$(L) cass  3$(L) zk  4$(L) ifmap  5$(L) disco  6$(L) apiSrv               7$(L) schema  8$(L) control  9$(L) agent  10$(L) vif*

其中显示有*号的表示现在正处于这个界面,切换到其它程序执行界面的方法:按  一下ctrl+a后,按数字进入对应的程序界面或按p和n进行前、后界面的切换。

(3)进入stack界面的方法及操作和contrail相同。

2.当发现有程序执行异常时,无法通过异常结果判断原因,可以用pdb进行调试查看  问题原因。pdb的使用方法,网上有许多教程,我就不多说了。

3.出现ERROR:Address already in use之类的错误时,大部分情况下表示该程序在另   一个地方运行,这种情况说明程序是正常的,小部分情况是你运行了一些其它的程序,    占用了该端口号。

4.每个程序运行界面,都可以ctrl+c退出程序的执行。不管程序异常退出,还是ctrl+c 退出的,都可以通过按向上的方向键找到运行程序的命令,重新运行程序。

5 实际测试

按照前面提到的拓扑进行测试环境安装过程,使用两台设备,一台安装服务节点(包含了计算节点),一台安装计算节点。在这个测试环境里,暂时没有涉及L3层网络,无法保证ssh能登陆虚拟机。登陆虚拟机的方式可以安装virt-manager,通过GUI界面登陆进去测试互通情况,不过在计算节点中创建的虚拟机无法登陆(可以在服务节点中的虚拟机通过ssh登陆),只能看到一个光标在闪,刚开始还以为创建虚拟机有问题,后来ping它里面的虚拟机才知道创建成功了。下面贴上两台主机里的虚拟机互ping抓包的结果,可以看出其隧道封装为MPLS over GRE

本文链接:http://www.sdnap.com/sdnap-post/3326.html \ 本文标签: opencontrail, openstack

Openstack+Opencontrail安装与部署初级教程相关推荐

  1. Ubuntu-12.04 OpenStack (Folsom)安装和部署手册

    Ubuntu-12.04 OpenStack的安装和部署手册 Table 2.1.  OpenStack version names Release name Release date OpenSta ...

  2. JDK的下载、安装与部署图文教程

    这个虽然对很多人来说非常简单,但是还是写写吧,希望能帮助依然有需要的后来者, 记得我第一次配置JDK的时候配置了很久,而且现在每次需要自己重新配置JDK都要看下相应的文章来回忆下,这样才能够完成 JD ...

  3. Linux环境下安装及部署Nginx教程

    一.安装教程 1.官网下载地址:nginx: download 2.下载教程: 1)选择Stable version版本下载到本地(该版本为Linux版本),下载完成后直接在本地解压后放入linux系 ...

  4. Windows环境下安装及部署Nginx教程

    一.安装Nginx教程 1.官网下载地址:https://nginx.org/en/download.html 2.下载教程:选择Stable version版本下载到本地 3.下载完成后,解压放入本 ...

  5. windows下OpenCV的安装配置部署详细教程

    零.简介 OpenCV的全称是Open Source Computer Vision Library,是一个跨平台的计算机视觉库.OpenCV是由英特尔公司发起并参与开发,以BSD许可证授权发行,可以 ...

  6. 开源笔记系统leanote安装和部署完整教程

    本篇教程主要是带大家在自己的Linux服务器上搭建属于自己的开源云笔记系统. leanote官网 https://leanote.com/ [蚂蚁笔记 = 笔记 + 博客 + 协作 + 私有云] 私有 ...

  7. 【openstack一键安装与部署】

    1.关闭SELinux: setenforce 0 vi /etc/selinux/config 修改配置文件:将SELINUX=enforcing改为SELINUX=disabled getenfo ...

  8. qnap nas 安装 mysql_QNAP新手教程:从零开始使用威联通NAS安装和设置初级教程!...

    威联通的初始化 1.不管您用的是453Bmini,还是和我一样的1600P,还是其它威联通的产品,几乎都会进行接下来的操作,威联通的设置较为复杂,因为每个功能上都有很多小按钮和设置选项. 而且很多功能 ...

  9. Openstack的安装部署教程

    Openstack的安装部署教程 一.环境规划 二.全部节点环境配置工作 1.配置hosts 2.关闭所有防火墙和selinux 3.关闭NetworkManager服务 三.配置openstack的 ...

  10. Openstack安装与部署(Havana)-ubuntu

    http://agenge.com/blog/2013/11/10/openstack-install-with-deploy-for-havana/ Openstack安装与部署(Havana) 前 ...

最新文章

  1. 用Azure VM + Azure Database for MySQL搭建Web服务
  2. lvs直接路由模式简单部署
  3. Xilinx® 7 series FPGAs CLBs专题介绍(二)
  4. android 防止截屏录屏
  5. JS中调用本地exe程序
  6. ITK:与矢量型图像应用GradientRecursiveGaussianImageFilter
  7. Java中的HashSet
  8. 微软私有云解决方案_微软发布电信云平台 ,互联网巨头争夺5G网络商机
  9. Linux ${}表达式详解
  10. Android 动态权限申请 BaseActivity 封装 拨打电话
  11. ping 丢包 网络摄像头_FIFA21 新加入网络连接监测功能
  12. vite+vue3 整合vue-router4和vuex4
  13. tar打包命令(linux)
  14. OpenJudge NOI 2.1 1813:熄灯问题
  15. Stderr: VBoxManage.exe: error: VT-x is not available (VERR_VMX_NO_VMX) VBoxM
  16. 云原生到底是什么?一文了解云原生四要素!
  17. 官方MySQL解压版安装说明
  18. 云、CDN、IDC 三个概念的区别是什么
  19. java取当前周期、月初至月末、季度初至季度末日期
  20. C语言“水仙花数”是一个正三位数,他的个位十位百位的立方和等于他本身

热门文章

  1. Android Studio在运行时显示Please Select Android SDK的解决方法
  2. android T 前台Service
  3. 5.WireShark学习-WireShark中的时间显示
  4. hdjs---后盾网requireJS课程
  5. 计算机在bios设置用u盘启动不,bios设置u盘启动图解
  6. SEM和SEO有什么区别,哪种更好一些
  7. 国际电话区号mysql表SQL
  8. Java—求最大公约数和最小公倍数
  9. 100个java项目_我如何在100天内建立​​100个项目
  10. 软件测试之开发转测试相比于其他测试人员有哪些优势