• mesos+marathon+zookeeper的docker管理集群亲手搭建实例(环境Centos6.8)


    资源:3台centos6.8虚拟机 4cpu 8G内存 ip 10.19.54.111-113

    1台centos6.8虚拟机2cpu 8G ip 10.19.53.55

    1、System Requirements及安装环境配置并关闭防火墙与SELinux

    For full support of process isolation under Linux a recent kernel >=3.10 is required.

    由于我使用的centos6.8,所以要升级内核(http://www.cnblogs.com/zhangmingcheng/p/6046274.html

    关闭防火墙

    关闭命令:  service iptables stop 
    永久关闭防火墙:chkconfig iptables off

    两个命令同时运行,运行完成后查看防火墙关闭状态  service iptables status 

    关闭selinux

    Redhat应用了SELinux去加强平安,永久封闭的举措为:

    修改 /etc/selinux/config 文件中的 SELINUX=”” 为 disabled ,然后重启。

    Mesos runs on Linux (64 Bit) and Mac OS X (64 Bit). To build Mesos from source, GCC 4.8.1+ or Clang 3.5+ is required.

    根据官方文档进行配置(http://mesos.apache.org/gettingstarted/

    注意:每次ssh连接到服务器时,需要输入:scl enable devtoolset-2 bash 暂时改变GCC版本

    2、这几台CentOS服务器时间同步(NTP时间同步)

    博客地址:http://www.cnblogs.com/zhangmingcheng/p/6047052.html

    3、设置hostname   添加映射

    修改/etc/sysconfig/network配置文件来修改主机名:

    需重启机器: shutdown -r now

    修改/etc/hosts文件添加局域网内主机映射:

    4、因为要安装marathon,由于mesos官方文档中安装的jdk是1.7版本,所以我们要换成1.8 :sudo yum install -y java-1.8.0-openjdk-devel

    5、在这几台服务其上面安装安装Zookeeper

      安装:

    wget http://mirrors.cnnic.cn/apache/zookeeper/zookeeper-3.4.8/zookeeper-3.4.8.tar.gz -P /usr/local/src/
    tar zxvf zookeeper-3.4.8.tar.gz -C /opt
    cd /opt && mv zookeeper-3.4.8 zookeeper
    cd zookeeper
    cp conf/zoo_sample.cfg conf/zoo.cfg

    #把zookeeper加入到环境变量

    echo -e "# append zk_env
    export PATH=$PATH:/opt/zookeeper/bin" >> /etc/profile

    Zookeeper集群配置:
    注意:搭建zookeeper集群时,一定要先停止已经启动的zookeeper节点。

    #修改过后的配置文件zoo.cfg,如下:

    cat zoo.cfg

    tickTime=2000
    initLimit=10
    syncLimit=5
    dataDir=/opt/zookeeper/data
    dataLogDir=/opt/zookeeper/logs
    clientPort=2181
    autopurge.snapRetainCount=500
    autopurge.purgeInterval=24
    server.1=10.19.54.111:2888:3888
    server.2=10.19.54.112:2888:3888
    server.3=10.19.54.113:2888:3888

    #创建相关目录,三台节点都需要

    mkdir -p /opt/zookeeper/{logs,data}

    #其余zookeeper节点安装完成之后,同步配置文件zoo.cfg。

    创建ServerID标识

    除了修改zoo.cfg配置文件外,zookeeper集群模式下还要配置一个myid文件,这个文件需要放在dataDir目录下。

    这个文件里面有一个数据就是A的值(该A就是zoo.cfg文件中server.A=B:C:D中的A),在zoo.cfg文件中配置的dataDir路径中创建myid文件。

    #在110.19.54.111服务器上面创建myid文件,并设置值为1,同时与zoo.cfg文件里面的server.1保持一致,如下

    echo "1" > /opt/zookeeper/data/myid

    #在10.19.54.112服务器上面创建myid文件,并设置值为1,同时与zoo.cfg文件里面的server.2保持一致,如下

    echo "2" > /opt/zookeeper/data/myid

    #在10.19.54.113服务器上面创建myid文件,并设置值为1,同时与zoo.cfg文件里面的server.3保持一致,如下

    echo "3" > /opt/zookeeper/data/myid
    到此,相关配置已完成

    启动每个服务器上面的zookeeper节点
    /opt/zookeeper/bin/zkServer.sh start

    PS:Zookeeper一些常用命令:

         在准备好相应的配置之后,可以直接通过zkServer.sh 这个脚本进行服务的相关操作

    • 1. 启动ZK服务:       sh bin/zkServer.sh start
    • 2. 查看ZK服务状态: sh bin/zkServer.sh status
    • 3. 停止ZK服务:       sh bin/zkServer.sh stop
    • 4. 重启ZK服务:       sh bin/zkServer.sh restart

    通过sh bin/zkServer.sh status命令发现当前113主机是leader。

    6、在这几台服务器上面安装mesos

    先下载Mesos

    $ wget http://www.apache.org/dist/mesos/0.28.2/mesos-0.28.2.tar.gz $ tar -zxf mesos-0.28.2.tar.gz

    我都安装在/opt/mesos底下

     cd mesos

     mkdir build

     cd build

     ../configure

     make 编译

     make check 编译检查

     make install 安装

          在以上步骤里,只要环境配置有误(如缺少软件,或者环境版本过低都会导致失败,如gcc版本低,根据提示错误进行解决),因为这几台服务器使用代理进行连网,所以我遇   到一个比较坑的地方,在make时一直提示不能下载.pom,之后发现是需要在/root/.m2底下配置settings.xml

     <proxies>
     <proxy>
     <id>myProxy</id>
     <active>true</active>
     <protocol>http</protocol>
     <host>123.123.123.123</host>
     <port>8080</port>
     <username>XXXXX</username>
     <password>XXXXX</password>
     <nonProxyHosts>*.XXX.com|XXX.org</nonProxyHosts>
     </proxy>
     </proxies>

     在<settings>标签中添加如上代码,说明如下:

     1、proxies中可以配置多个proxy,但是默认第一个proxy生效。

     2、active中的TRUE表示该代理目前生效状态。

     3、http协议、主机地址、端口不在赘述。

     4、用户名密码按需配置即可。

     5、nonProxyHost表示不需要代理访问的地址。中间的竖线分隔多个地址,此处可以使用星号作为通配符号。

    7、配置Mesos(Master与Slave)

      首先开启cgconfig服务并设为开机自启

      service cgconfig start
      chkconfig   cgconfig on

    PS:查看Linux启动的服务
    chkconfig --list 查询出所有当前运行的服务
    chkconfig --list atd 查询atd服务的当前状态

    表示每个运行级别下,服务的启动状态


    运行级别0:系统停机状态
    运行级别1:单用户工作状态
    运行级别2:多用户状态(没有NFS)
    运行级别3:完全的多用户状态(有NFS),登陆后进入控制台命令行模式
    运行级别4:系统未使用,保留
    运行级别5:X11控制台,登陆后进入图形GUI模式
    运行级别6:系统正常关闭并重启
    查看服务的状态:service cgconfig status

     1、增加、修改配置文件

           在节点上安装好Mesos后,默认的配置文件在/usr/local/etc/mesos目录下,刚开始目录下只有mesos-deploy-env.sh.template、mesos-master-env.sh.template和  mesos-slave-env.sh.template这三个模版文件。我们需要新建masters和slaves文件、根据原有的文件复制出mesos-deploy-env.sh、mesos-master-env.sh(仅master复制)和mesos-  slave-env.sh(仅slave复制)这三个文件。

    1) masters和slaves

    这两个文件分别写入运行Master的主机名或IP以及Slave运行的主机名或IP,每行一个。

     masters:10.19.54.111

      slaves: 10.19.54.112

                 10.19.54.113

    2) mesos-master-env.sh

    该文件是关于Master的相关配置。单点Master集群的需要配置的参数是:MESOS_log_dir:log输出的目录,如果不设置,默认不会产生log、MESOS_worker_dir:存放元数据的目录。

    3) mesos-slave-env.sh

    该文件是Slave相关的配置文件。MESOS_log_dir:log输出的目录,如果不设置,默认不会产生log;MESOS_worker_dir:存放framework工作目录的目录路径(默认: /tmp/mesos)。MESOS_master这个参数是必不可少的,这里设为Master节点的主机名:端口。

    在mesos-slave.env.sh里再添加一句:export MESOS_containerizers=docker,mesos

    4)mesos-deploy-env.sh

    该文件包含了部署脚本运行的环境变量。只要从模版文件复制过来即可,不需要添加其他参数。

    这样配置文件的相关参数就设置好了。需要将这些配置文件复制给每一个mesos所在的节点。

    后台启动: 

    mesos-daemon.sh mesos-master 


    mesos-daemon.sh mesos-slave --master=10.19.54.111:5050

    8、在Mesos-Master上安装并后台运行Marathon

    # wget http://downloads.mesosphere.com/marathon/v1.1.1/marathon-1.1.1.tgz

    第一次下载的是最新版本的marathon,运行时看见说Mesos JAR版本不够,之后选择安装1.1.1

    # tar zxf marathon-1.1.1.tgz

    后台运行:nohup ./start --master 10.19.54.111:5050  --zk zk://10.19.54.111:2181/marathon &

    9、在Mesos-slave上安装docker

          yum update

    添加yum仓库:$ sudo tee /etc/yum.repos.d/docker.repo <<-'EOF'

    [dockerrepo] name=Docker Repository

    baseurl=https://yum.dockerproject.org/repo/main/centos/$releasever/

    enabled=1

    gpgcheck=1

    gpgkey=https://yum.dockerproject.org/gpg

    EOF

        安装docker包:yum install docker-engine

        因为网络使用了代理,所以必须透过代理进行docker pull

        修改/etc/sysconfig/docker

      HTTP_PROXY=代理主机/域名:端口
      http_proxy=$HTTP_PROXY
      HTTPS_PROXY=$HTTP_PROXY
      https_proxy=$HTTP_PROXY
      export HTTP_PROXY HTTPS_PROXY http_proxy https_proxy

          开启docker deamon并设为开机自启:service docker start  、chkconfig docker on

    10、在10.19.53.55上安装docker私库

    sudo docker run -d -p 5000:5000 -v /opt/data/registry:/var/lib/registry registry

    :前面的是宿主机的地址(/opt/data/registry),后面是容器的地址(/var/lib/registry)

    修改mesos-slave的/etc/sysconfig/docker配置文件,添加:

    other_args=’–insecure-registry 10.19.53.55:5000 –graph=/data/docker/images’
    OPTIONS=’–selinux-enabled –insecure-registry 10.19.53.55:5000′

    使其可以通过http的方式到私库里pull镜像。

  • 相关阅读:
    c#修改config中的AppSettings属性
    C​#​小​实​例​之​-​-​-​C​#​判​断​网​络
    走过2013,走进2014
    前端工程师常去的网站
    正则表达式中文匹配
    浅谈 -webkit-tap-highlight-color 属性
    JS前端开发判断是否是手机端并跳转操作(小结)(转)
    swf文件加密基础(转)
    Object与Dictionary的区别
    关于事件机制的理解
  • 原文地址:https://www.cnblogs.com/zhangmingcheng/p/6056519.html
Copyright © 2020-2023  润新知