RAMCloud编译部署指南

作者:tuyunshan
RAMCloud技术交流QQ群:295905581


RAMCloud编译部署指南


1. 编译环境要求

  • GNU Make (Anything reasonably recent)
  • GNU g++ (4.9.x)
  • git (>= 1.6.0)
  • Perl (Anything reasonably recent)
    • For mergedeps.pl, which automatically inserts included headers in source files into the make dependencies.
  • Python 2.6, epydoc
  • Boost
    • If you’re having issues with Boost on Ubuntu, check boost ticket #3844.
  • pcre
  • Doxygen 1.7.2
  • protocol buffers
  • ZooKeeper
  • java and javac (>= 1.7.0_25)

2. CentOS下编译环境搭建

2.1 概述

本章中所有操作,都是在CentOS 6.5版本上安装部署完成的。不同机器上的配置可能不一样,可以先查看上述编译环境,如果某些编译环境满足要求,下述的相应步骤可以跳过。

注:可以把yum源改换成阿里云源,以下许多就可以通过yum安装了!

2.2 安装GNU Make

使用yum安装

yum -y make automake

2.3 升级gcc/g++

因为在RAMCloud源码中采用c++11标准,在编译时候需要加入-std=c++11选项,所以需要升级gcc/g++的版本(本人经验证明4.9.x版本以上都是可以的)。

  • 第一步:下载gcc安装包(也可手动下载并导入)

    wget ftp://ftp.gnu.org/gnu/gcc/gcc-4.9.2/gcc-4.9.2.tar.gz
  • 第二步:解压下载文件

    tar -xzvf gcc-4.9.2.tar.gz
  • 第三步:下载gcc依赖文件和库

    cd gcc-4.9.2  
    ./contrib/download_prerequisites

    注:如果不能下载gcc依赖文件和库,可以手动下载安装gcc所需的mpfr、gmp和mpc文件(详细安装步骤可以百度)。

  • 第四步:配置gcc
    建立一个输出目录,编译时所有生成的中间文件都放到该目录下:

    mkdir build

    工作目录切换至输出目录,并在其中执行配置和安装:

    cd build

    执行configure配置安装文件,其中--prefix=/usr/local/gcc-4.9.2参数给出了gcc安装目录:

    ../configure --prefix=/usr/local/gcc --enable-threads=posix --disable-checking --enable-languages=c,c++ --disable-multilib
  • 第五步:编译gcc(这个过程会很漫长,大约3个小时左右,请耐心等待)

    make
  • 第六步:安装gcc

    make install

如果已经安装了其他版本的gcc,并且需要备份的,可以采取以下命令:

  • 第一步:进入“/usr/bin”目录

    cd /usr/bin
  • 第二步:依次执行以下命令,重命名原有的gcc链接文件以作为备份

    mv gcc gcc.bak  
    mv g++ g++.bak
  • 第三步:依次执行以下命令,建立gcc 4.9.2的链接

    ln -s /usr/local/gcc/bin/gcc /usr/bin/gcc  
    ln -s /usr/local/gcc/bin/g++ /usr/bin/g++

最后,可以执行gcc --verion可以查看gcc版本,验证是否安装成功。

2.4 安装git

Git是一个开源的分布式版本控制工具。安装git,主要是为了从github上pull源码。

  • 通过yum工具安装git(这种方法比较简单)

    yum install git
  • 源码安装git:先从Git官网下载源码,然后解压,依次输入:./config,make,sudo make install这几个命令安装就好了。

2.5 安装Perl

  • 第一步:下载perl源码包

    wget http://www.cpan.org/src/5.0/perl-5.16.1.tar.gz
  • 第二步:解压源码包

    tar -xzvf perl-5.16.1.tar.gz
  • 第三步:编译并安装(目录可以自定义)

    cd perl-5.16.1
    ./Configure -des -Dprefix=/usr/local/perl  
    make  
    make test
    make install

如果系统以前已安装了旧版本的perl的话,替换系统原有的版本。

  • 第一步:重命名原有的gcc链接文件以作为备份

    mv /usr/bin/perl /usr/bin/perl.bak
  • 第二步:建立perl 5.16.1的链接

    ln -s /usr/local/perl/bin/perl /usr/bin/perl

最后,可以执行perl -v可以查看perl版本,验证是否安装成功。

2.6 安装Python 2.6

  • 第一步:下载Python源码包

    wget http://www.python.org/ftp/python/2.6.6/Python-2.6.6.tgz
  • 第二步:解压源码包

    tar xzf Python-2.6.6.tgz
  • 第三步:编译并安装(目录可以自定义)

    cd Python-2.6.6  
    ./configure --prefix=/usr/local/python2.6  
    make 
    make install
  • 第四步:创建一个python2.6的链接

    ln -sf /usr/local/python/bin/python2.6 /usr/bin/python2.6

完成后就可以在命令行中输入 python2.6 运行刚刚安装的python2.6.6 版本

2.7 安装Boost

在linux平台下,要编译安装Boost,除gcc和gcc-c++之外,还需要两个开发库:bzip2-devel 和python-devel,因此在安装前应该先保证这两个库已经安装。

yum install bzip2 bzip2-devel bzip2-libs python-devel -y
  • 第一步:到Boost官网下载源码包,本人下载的是boost_1_52_0.tar.bz2。
  • 第二步:解压源码包

    bzip2 -d boost_1_52_0.tar.bz2  
    tar -xvf  boost_1_52_0.tar
  • 第三步:编译安装,boost源码包中有配置脚本。

    cd boost_1_52_0  
    ./bootstrap.sh  
    ./b2  
    ./b2 install --prefix=/usr/local/boost_1_52_0

安装完毕后的头文件默认是在/usr/local/boost_1_52_0/include目录下,.a和.so在/usr/local/boost_1_52_0/lib目录下。然后将需要使用的库cp至/usr/lib64 。不然在执行代码时,ldd会提示找不到.so文件。

2.8 安装pcre

  • 第一步:使用rpm命令查看是否安装了pcre软件

    rpm -qa pcre
  • 第二步:编译升级到新版本的pcre。首先把系统里的旧版删除了,然后再进行安装。使用如下命令进行卸载它。

    rpm -e --nodeps pcre
  • 第三步:yum安装pcre

    yum pcre pcre-devel

2.9 安装Doxygen 1.7.2

在Doxygen源码安装过程中,需要用到cmake编译器,所以需要安装cmake(如果安装了cmake,此步可跳过)。

安装cmake

  • 第一步:获取cmake源码包

    wget http://www.cmake.org/files/v2.8/cmake-2.8.10.2.tar.gz
  • 第二步:解压源码包

    tar -zxvf cmake-2.8.10.2.tar.gz
  • 第三步:编译安装cmake

    cd cmake-2.8.10.2  
    ./bootstrap  
    gmake   
    gmake install

安装Doxygen

  • 第一步:从github仓库拉取源码

    git clone https://github.com/doxygen/doxygen.git
  • 第二步:编译Doxygen源码

    cd doxygen  
    mkdir build  
    cd build  
    cmake -G "Unix Makefiles" ..  
    make
  • 第三步:安装Doxygen

    make install

2.10 安装protocol buffers

  • 第一步:获取源码包

    wget https://github.com/google/protobuf/archive/v2.6.1.zip
  • 第二步:解压源码包

    unzip protobuf-2.6.1.zip
  • 第三步:编译安装

    cd protobuf-2.6.1  
    ./configure --prefix=/usr/local/protobuf  
    make  
    make check
    make install
  • 第四步:配置环境

    到此步还没有安装完毕,在/etc/profile或者用户目录~/.bash_profile添加下面内容

        ####### add protobuf lib path ########  
        #(动态库搜索路径) 程序加载运行期间查找动态链接库时指定除了系统默认路径之外的其他路径  
        export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/protobuf/lib/
        #(静态库搜索路径) 程序编译期间查找动态链接库时指定查找共享库的路径
        export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/protobuf/lib/
        #执行程序搜索路径
        export PATH=$PATH:/usr/local/protobuf/bin/
        #c程序头文件搜索路径
        export C_INCLUDE_PATH=$C_INCLUDE_PATH:/usr/local/protobuf/include/
        #c++程序头文件搜索路径
        export CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:/usr/local/protobuf/include/
        #pkg-config 路径
        export PKG_CONFIG_PATH=/usr/local/protobuf/lib/pkgconfig/
        ######################################

2.11 安装ZooKeeper

安装部署ZooKeeper

  • 第一步:下载ZooKeeper源码包

    wget http://www.apache.org/dist//zookeeper/zookeeper-3.3.6/zookeeper-3.3.6.tar.gz
  • 第二步:解压ZooKeeper源码包

    tar zxvf zookeeper-3.3.6.tar.gz  
    cd zookeeper-3.4.6
  • 第三步:配置ZooKeeper

    cp conf/zoo_sample.cfg conf/zoo.cfg  
    vi conf/zoo.cfg

    配置信息(单机版)如下:

        tickTime=2000
        initLimit=10
        syncLimit=5
        dataDir=/zoo/data
        dataLogDir=/zoo/logs
        clientPort=4180
        #如果报错端口被占用,可以使用下面的参数配置
        #admin.serverPort=12321

    如果想要配置集群版,可以参照官方或网上ZooKeeper配置教程

  • 第四步:启动ZooKeeper服务器
    启动ZooKeeper服务

    ./bin/zkServer.sh start

    停止ZooKeeper服务

    ./bin/zkServer.sh stop

安装ZooKeeper客户端

  • 编译安装

    cd zookeeper-3.4.5/src/c  
    ./configure  
    make   
    make install
  • 测试客户端

    ./cli_mt localhost:4180

2.12 java and javac

用yum安装java

  • 第一步:查看CentOS自带JDK是否已安装。

    yum list installed |grep java
  • 第二步:若有自带安装的JDK且版本不符合要求,卸载CentOS系统自带Java环境。
    卸载JDK相关文件输入

    yum -y remove java-1.7.0-openjdk*

    卸载tzdata-java输入

    yum -y remove tzdata-java.noarch

    当结果显示为Complete!即卸载完毕。

  • 第三步:查看yum库中的Java安装包。

    yum -y list java*
  • 第四步:使用yum安装Java环境。

    yum -y install java-1.7.0-openjdk*

最后,使用java -version查看java版本。

3. Debian下编译环境搭建

3.1 概述

本章中所有操作,都是在Debian 8.2版本上安装部署完成的。不同机器上的配置可能不一样,可以先查看上述编译环境,如果某些编译环境满足要求,下述的相应步骤可以跳过。

3.2 通过aptitude工具安装

Debian 8.2默认gcc版本为4.9.2,所以在此不用升级。下面安装上述要求的其它环境。

aptitude install build-essential git-core doxygen libboost1.42-all-dev libpcre3-dev protobuf-compiler libprotobuf-dev libcrypto++-dev libevent-dev libboost-all-dev libgtest-dev openjdk-7-source libzookeeper-mt-dev libssl-dev libcrypto++-dev

4. 编译RAMCloud

4.1 pull源码

RAMCloud源码放置在github仓库中,可以通过git clone命令拉取源码。

    git clone https://github.com/PlatformLab/RAMCloud.git

4.2 编译源码

目标文件和可执行文件将出现在子目录obj.xxx,xxx是你的当前分支(如:master)。

    cd RAMCloud
    make -j12

默认情况下,以debug模式编译RAMCloud,这个会使系统的速度大大降低。如果你想测试性能,可以不采用debug模式。

    make clean
    make -j12 DEBUG=no

更多编译选项可以参照官网。

5. 部署RAMCloud

集群配置,特定服务器启动,请参照下面的详细叙述。

    10.11.1.208:Zookeeper , Coordinator
    10.11.1.209Server(master和backup)
    10.11.1.205Server(master和backup) 
    10.11.1.204Server(master和backup)
    10.11.1.202Server(master和backup)
    10.11.1.206:Client

5.1 启动ZooKeeper

    cd zookeeper-3.4.5
    ./bin/zkServer.sh start

5.2 启动Coordinate

    cd RAMCloud
    ./obj.master/coordinator -C tcp:host=10.11.1.208,port=11100 -x zk:10.11.1.208:4180

具体参数含义,可以参照官网,也可以通过-h--help

5.3 启动Server

    cd RAMCloud
    sudo ./obj.master/server -L tcp:host=10.11.1.205,port=1105 -x zk:10.11.1.208:4180 --totalMasterMemory 16000 -f /home/tuyunshan/rc/data  --segmentFrames 10000 -r 2

具体参数含义,可以参照官网,也可以通过-h--help

5.4 启动client

    cd RAMCloud
    sudo ./obj.master/client -C tcp:host=10.11.1.208,port=11100 -L tcp:host=10.11.1.205,port=1105

具体参数含义,可以参照官网,也可以通过-h--help

5.5 运行RAMCloud自带的测试程序

    cd RAMCloud
    sudo obj.master/ClusterPerf -C  tcp:host=10.11.1.208,port=11100

具体参数含义,可以参照官网,也可以通过-h--help

由于作者水平有限,欢迎指正。

猜你喜欢

转载自blog.csdn.net/u011459120/article/details/52389188
今日推荐