Centos 6でMesosプラットフォームを構築

8100 ワード

最近、公有クラウドが人気があり、会社も複数の公有クラウドを使用しようとしているが、IDCも依然として使用されており、メンテナンス作業に多くのトラブルをもたらしている.IDC、パブリッククラウド資源を統一的に管理したいのですが、Mesosがこの仕事に適していることに気づきました.まずそれが何ができるかを明らかにします.
MINIプラットフォームを構築するために3つのノードを用意しました.OSはCentos 6です.6、計画アーキテクチャは以下の通りである:
    node1:mesos-master,marathon,zookeeper     node2:mesos-slave,docker     node3:haproxy
最初にnode 1とnode 2にmesosをインストールします
1.  mesos    

mesos-0.22のインストールを計画します.1, mesos 0.21.0以降のバージョンはC++11、GCCバージョンは4.8より大きく、devtoolset-2をインストールする必要があります.
#devtoolset-2 repoファイルのダウンロード
$ sudo wget -O/etc/yum.repos.d/slc6-devtoolset.repo http://linuxsoft.cern.ch/cern/devtoolset/slc6-devtoolset.repo
#CERN GPG keyをインポートする.
$ sudo rpm --import http://linuxsoft.cern.ch/cern/centos/7/os/x86_64/RPM-GPG-KEY-cern
Apache Maven repo fileをダウンロードします.
$ sudo wget http://repos.fedorapeople.org/repos/dchen/apache-maven/epel-apache-maven.repo -O/etc/yum.repos.d/epel-apache-maven.repo
# 'Mesos > 0.21.0'要件'subversion>1.8'develパッケージ、WANdisco SVN repoファイル"/etc/yum.repos.d/wandisco-svn.repo"を追加し、次のように書き込みます.
[WANdiscoSVN] name=WANdisco SVN Repo 1.8 enabled=1 baseurl=http://opensource.wandisco.com/centos/6/svn-1.8/RPMS/$basearch/gpgcheck=1 gpgkey=http://opensource.wandisco.com/RPM-GPG-KEY-WANdisco
#開発キットをインストールします.
$ sudo yum groupinstall -y "Development Tools"
インストール中に次のエラーが発生した場合は、パッケージの競合が発生していることを示します.これは少し面倒です.
   
#Error: Package: rpm-build-4.8.0-37.el6.x86_64 (c6-media)     #          Requires: rpm = 4.8.0-37.el6     #           Installed: rpm-4.8.0-38.el6_6.x86_64 (@Updates/$releasever)     #           rpm = 4.8.0-38.el6_6     #          Available: rpm-4.8.0-37.el6.x86_64 (c6-media)     #             rpm = 4.8.0-37.el6
必要なRPMパッケージを直接ダウンロードし、インストールすればいい:)
   
$ wget ftp://rpmfind.net/linux/centos/6.6/updates/x86_64/Packages/rpm-build-4.8.0-38.el6_6.x86_64.rpm     $ sudo yum localinstall -y rpm-build-4.8.0-38.el6_6.x86_64.rpm
インストール'devtoolset-2-toolchain'このパッケージにはGCC 4.8が含まれています.2関連するパッケージ.
    $ sudo yum install -y devtoolset-2-toolchain
パケットの競合の問題と同様に、次のエラー・プロンプトに遭遇する可能性があります.
####Error: Package: policycoreutils-python-2.0.83-19.47.el6.x86_64 (c6-media)     #       Requires: policycoreutils = 2.0.83-19.47.el6     #      Installed: policycoreutils-2.0.83-19.47.el6_6.1.x86_64 (@Updates/$releasever)     #          policycoreutils = 2.0.83-19.47.el6_6.1     #      Available: policycoreutils-2.0.83-19.47.el6.x86_64 (c6-media)
    #          policycoreutils = 2.0.83-19.47.el6
今度は軽自動車が慣れているはずなので、ダウンロードして入ればいいです.
   
$ wget ftp://rpmfind.net/linux/centos/6.6/updates/x86_64/Packages/policycoreutils-python-2.0.83-19.47.el6_6.1.x86_64.rpm
    $ sudo yum localinstall -y policycoreutils-python-2.0.83-19.47.el6_6.1.x86_64.rpm
そしてこれらのパッケージもmesosに必要です.
$ sudo yum install -y apache-maven python-devel java-1.7.0-openjdk-devel zlib-devel libcurl-devel openssl-devel cyrus-sasl-devel cyrus-sasl-md5 apr-devel subversion-devel apr-util-devel
残念なことに、私はバッグの衝突に遭遇したが、同じ方法で解決した.
####Error: Protected multilib versions: nss-util-3.16.1-3.el6.i686 != nss-util-3.16.2.3-2.el6_6.x86_64 ####Error: Protected multilib versions: nss-3.16.1-14.el6.i686 != nss-3.16.2.3-3.el6_6.x86_64 ####Error: Protected multilib versions: libcurl-7.19.7-37.el6_5.3.i686 != libcurl-7.19.7-40.el6_6.3.x86_64 ####Error: Protected multilib versions: nss-softokn-freebl-3.14.3-17.el6.i686 != nss-softokn-freebl-3.14.3-18.el6_6.x86_64 ####Error: Protected multilib versions: openssl-1.0.1e-30.el6.i686 != openssl-1.0.1e-30.el6_6.4.x86_64
####Error: Protected multilib versions: nss-softokn-3.14.3-17.el6.i686 != nss-softokn-3.14.3-18.el6_6.x86_64
競合パッケージをダウンロードしてインストールします.
   
$ wget ftp://195.220.108.108/linux/centos/6.6/updates/x86_64/Packages/libcurl-devel-7.19.7-40.el6_6.3.x86_64.rpm     $ sudo yum localinstall -y libcurl-devel-7.19.7-40.el6_6.3.x86_64.rpm     $ wget ftp://195.220.108.108/linux/centos/6.6/updates/x86_64/Packages/openssl-devel-1.0.1e-30.el6_6.4.x86_64.rpm     $ sudo yum localinstall -y openssl-devel-1.0.1e-30.el6_6.4.x86_64.rpm
インストールが完了するまで、shellでdevtoolset-2をアクティブにする最後のステップがあります.
$ scl enable devtoolset-2 bash $ g++ --version
GCCバージョンが4.8より大きい場合は、おめでとうございます.mesos実行環境が完了しました!!
2.mesosのインストール
APACHEのウェブサイトからmesos-0.22をダウンロードします.1、解凍します.
$ wget http://www.apache.org/dist/mesos/0.22.1/mesos-0.22.1.tar.gz $ tar -zxf mesos-0.22.1.tar.gz
コンパイルしてインストールする
$ mkdir build $ cd build $ ../configure --prefix=/usr/local/mesos $ make $ make install
穴だらけですね.設置中に以下のエラーを報告しました.原因はcodeです.google.comは天朝に遮られて、本当に人をののしりたいです.
#### Download error on http://code.google.com/p/google-apputils-python: [Errno 101] Network is unreachable
他にもダウンロードがあります.
    $ wget https://pypi.python.org/packages/source/p/python-gflags/python-gflags-2.0.tar.gz
    $ python setup.py install     $ wget https://pypi.python.org/packages/source/g/google-apputils/google-apputils-0.4.0.tar.gz     $ python setup.py install
装着してから再度make installして、無事に済ませました.   
ステップ2 node 1にZookeeperをインストール
    
zookeeperパッケージをダウンロードし、サービスを開始します.
$ wget http://apache.fayea.com/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz $ tar xzf zookeeper-3.4.6.tar.gz $ cd zookeeper-3.4.6 $ cp conf/zoo_sample.cfg conf/zoo.cfg
$ bin/zkServer.sh start
ステップ3 node 1でmesos masterを起動
$ mesos-master --ip=master-ip --work_dir=/var/lib/mesos --zk=zk://master-ip:2181/mesos --quorum=1 >/dev/null 2>&1 &
ブラウザにURLを入力http://master-ip:5050マスター管理ページにアクセスします.
ステップ4 node 1にmarathonをインストール
mesosphereサイトからmarathonパッケージをダウンロードし、marathonサービスを開始します.hostnameがdns解析できない場合は、/etc/hostsに追加してください.
    $ wget http://downloads.mesosphere.com/marathon/v0.9.0/marathon-0.9.0.tgz     $ tar xzf marathon-0.9.0.tgz     $ MESOS_NATIVE_JAVA_LIBRARY=/usr/local/mesos/lib/libmesos.so ./bin/start --master zk://master-ip:2181/mesos --zk zk://master-ip:2181/marathon  >/dev/null 2>&1 &
ブラウザにURLを入力http://master-ip:8080marathon管理ページにアクセスします.
ステップ5 node 2にdockerをインストールしdockerサービスを開始
    $ yum -y install http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm     $ yum install -y docker-io     $ service docker start     $ chkconfig docker on
ステップ6 node 2でmesos slaveサービスを開始
    $ mesos-slave --master=zk://master-ip:2181/mesos --ip=slave-ip --containerizers=docker,mesos  --executor_registration_timeout=5mins >/dev/null 2>&1 &
ステップ7 marathonによるコンピューティングリソースの割り当て
marathonのREST API呼び出しでdockerコンテナの作成を申請します.まずjsonファイルを用いて申請の計算資源mara-nginxを説明する.jsonの内容は以下の通りです.
{ "id":"run-a-nginx-cluster-v111", "cpus":0.3, "mem":128.0, "instances":2, "container":{    "type":"DOCKER",    "docker":{        "image":"nginx",        "parameters":[           { "key":"detach","value":"true"}],        "network":"BRIDGE",        "portMappings":[           { "containerPort":80,"servicePort":80,"protocol":"tcp"}] }, "healthChecks":[ {  "protocol": "HTTP",   "portIndex":0,   "path":"/",   "gracePeriodSeconds":5,   "intervalSeconds":20,   "maxConsecutiveFailures":3 } ] } }
curlでREST APIを直接呼び出す.Mesosはslaveマシン上でdockerコンテナを起動してnginxサービスを実行します.計算リソースを調整する必要がある場合、インスタンスの数を変更する場合は、jsonファイルで変更し、PUT APIを呼び出す.
 $curl -X POST -H "Content-Type:application/json"[email protected] http://master-ip:8080/v2/apps
ステップ8 node 3にhaproxyをインストール
haproxyは、YUMでインストールするサービスを公開します.
$ yum install -y haproxy
marathonスクリプトによりhaproxyを生成する.confファイル
$ marathon/bin/haproxy-marathon-bridge http://master-ip:8080 >/etc/haproxy/haproxy.conf
haproxyサービスの開始
$ service haproxy start