美文网首页
messos部署

messos部署

作者: 大斌对你说 | 来源:发表于2018-06-03 18:11 被阅读0次

    messos部署

    安装环境

    1:查看内核版本

    [root@localhost ~]# uname  -a

    Linux localhost.localdomain 3.10.0-693/21.1.el7.x86_64 #1 SMP Wed Mar 7 19:03:37 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

    2:系统版本

    [root@localhost ~]# cat  /etc/redhat-release

    CentOS Linux release 7.4.1708 (Core)

    3:修改yum源,所有机器都要做

    mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.default

    wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

    yum makecache

    4:docker版本

    [root@localhost ~]# docker  --version

    Docker version 1.13.1, build 94f4240/1.13.1

    5:关闭selinux

    sed -i 's/SELINUX=enforcing/SELINUX=disabled/g'    /etc/sysconfig/selinux

    sed -i 's/SELINUXTYPE=targeted/#SELINUXTYPE=targeted/g'    /etc/sysconfig/selinux

    setenforce 0

    getenforce

    6:添加hosts解析

    echo "10.10.10.110  messos-master"  >> /etc/hosts

    echo "10.10.10.120  messos-slave"  >>/etc/hosts

    7:关闭防火墙

    systemctl stop firewalld

    systemctl disable firewalld

    8:添加messos源

    rpm -Uvh http://repos.mesosphere.io/el/7/noarch/RPMS/mesosphere-el-repo-7-3.noarch.rpm

    rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-mesosphere

    二:安装zookeeper

    2.1:安装java

    [root@localhost ~]# java -version

    openjdk version "1.8.0_161"

    OpenJDK Runtime Environment (build 1.8.0_161-b14)

    OpenJDK 64-Bit Server VM (build 25.161-b14, mixed mode)

    2.2安装zookeeper

    安装方法1

    安装

    #wget http://apache.fayea.com/zookeeper/zookeeper-3.4.9/zookeeper-3.4.9.tar.gz

    #tar zxvf zookeeper-3.4.9.tar.gz

    #mv zookeeper-3.4.9 /usr/local/

    #mv /usr/local/zookeeper-3.4.9 /usr/local/zookeeper

    配置

    #cd /usr/local/zookeeper

    #cp zoo_sample.cfg zoo.cfg

    #vi zoo.cfg

    dataDir=/usr/local/zookeeper/data    #数据目录,如果没有需要新建此目录

    dataLogDir=/usr/local/zookeeper/logs  #日志目录,如果没有需要新建此目录

    如果是单机安装配置zookeeper,以下配置可忽略

    server.0=10.1.13.214:2888:3888       

    server.1=10.1.13.215:2888:3888

    server.2=10.1.13.216:2888:3888

    集群模式需要添加以下

    #vi /user/local/zookeeper/data/myid

    #创建myid文件,并编辑它,编辑的内容就是配置文件中server.后面跟着的号数。例如目前是在slave0机器上,则在myid文件中写入0

    0

    修改zookeeper输出日志文件位置

    如果不做修改,默认zookeeper的日志输出信息都打印到了zookeeper.out文件中,这样输出路径和大小没法控制,因为日志文件没有轮转。所以需要修改日志输出方式。具体操作如下:

    1、修改$ZOOKEEPER_HOME/bin目录下的zkEnv.sh文件,ZOO_LOG_DIR指定想要输出到哪个目录,ZOO_LOG4J_PROP,指定INFO,ROLLINGFILE的日志APPENDER.

    2、建立日志输出文件夹

    #mkdir -p /var/log/zookeeper

    #chmod 755 /var/log/zookeeper

    3,修改zkEnv.sh

    #vi /usr/local/zookeeper/bin/zkEnv.sh

    ...

    56    ZOO_LOG_DIR="/var/log/zookeeper"    #指定想要输出到哪个目录

    ...

    61    ZOO_LOG4J_PROP="INFO,ROLLINGFILE"    #ROLLINGFILE的日志APPENDER.

    ...

    4、修改$ZOOKEEPER_HOME/conf/log4j.properties文件的:zookeeper.root.logger的值与前一个文件的ZOO_LOG4J_PROP 保持一致,该日志配置是以日志文件大小轮转的,如果想要按照天轮转,可以修改为DaliyRollingFileAppender.

    5,修改log4j.properties

    # vim /usr/local/zookeeper/conf/log4j.properties

    ...

    2 zookeeper.root.logger=INFO, ROLLINGFILE      #值与前一个文件的ZOO_LOG4J_PROP

    ...

    53 log4j.appender.TRACEFILE=org.apache.log4j.RollingFileAppender      #如果想要按照天轮转,可以修改为DaliyRollingFileAppender

    ...

    环境变量配置

    #vi /etc/profile

    export ZOOKEEPER_HOME=/usr/local/zookeeper

    export PATH=$PATH:$ZOOKEEPER_HOME/bin

    #source /etc/profile

    启动 zookeeper 服务

    #cd /user/local/zookeeper/bin

    #zkServer.sh start

    安装方法2 (本文档使用该方法)

    #yum install mesosphere-zookeeper

    zookeeper启动文件在/opt/mesosphere/zookeeper/bin下,配置文件在/etc/zookeeper/zoo.cfg

    配置同上

    三:安装messos

    3.1:安装messos-master

    #yum install mesos

    3.2:配置messos-zookeeper

    root@localhost ~]# cat /etc/mesos/zk

    zk://10.1.13.214:2181/mesos

    备注:有多个zookeeper后面加“,”添加

    3.3:配置messos-hostname

    echo 本地IP地址 | tee /etc/mesos-master/ip

    echo 本地IP地址 | tee /etc/mesos-master/hostname

    echo 本地IP地址 | tee /etc/mesos-slave/ip

    echo 本地IP地址 | tee /etc/mesos-slave/hostname

    echo 2 > /etc/mesos-master/quorum  #这个数字要大于安装的master节点的总数的0.5倍,即一半

    启动master服务

    #systemctl stop  mesos-slave

    #systemctl restart mesos-master

    #systemctl status mesos-master

    #systemctl enable mesos-master

    服务启动后,可以通过浏览器访问查看系统信息: http://10.10.10.110:5050

    3.4:安装messos-slave

    #yum install mesos

    配置实例

    #touch /etc/mesos-slave/hostname

    #echo 10.10.10.120 /etc/mesos-slave/hostname

    ZooKeeper设定

    # vi /etc/mesos/zk

    zk://10.10.10.110:2181/mesos

    客户端端口设置

    #echo 5051 > /etc/mesos-slave/port

    配置mesos-slave

    注意:参数来containerizers的顺序很重要。它指定选择containerizer启动任务时使用的优先级。

    #echo 'docker,mesos' > /etc/mesos-slave/containerizers

    slave 执行超时时间

    #echo '5mins' > /etc/mesos-slave/executor_registration_timeout

    启动服务,添加开机启动

    #systemctl stop  mesos-master

    #systemctl start docker

    #systemctl start  mesos-slave 

    #systemctl status mesos-slave

    #systemctl enable mesos-slave

    报错日志查看命令

    #journalctl -f -u  mesos-slave

    四:mesos-marathon安装配置

    Marathon 的其它重要特性还包括:

    支持零停机时间部署,包括滚动部署、蓝绿部署与金丝雀部署模式。

    基于 HTTP、TCP 以及命令之应用程序运行状态检查。

    指标发送与收集集成(包括 Graphite、DataDog 以及StatsD)。

    具备一套强大的事件总线,使得 DevOps 人员以编程化方式通过定制化模式实现应用程序变更响应。

    具备用于应对网络与节点故障的弹性,且同时适用于 Marathon 本身及其管理的应用程序。

    包括用户认证以及基于角色访问控制在内的多种安全功能。

    采用一套灵活的插件架构,使得插件能够被定制化集成至现有企业IT环境当中。

    只在10.10.10.110上配置

    安装mesos-marathon

    #yum install marathon

    配置mesos-marathon

    创建下他的配置文件的路径(yum装的没给我们创建)

    #mkdir -p /etc/marathon/conf/ && touch hostname 

    #echo 10.10.10.110 |tee  etc/marathon/conf/hostname

    启动服务,添加开机启动

    #systemctl start marathon

    #systemctl status marathon

    #systemctl enable marathon

    访问验证

    http://10.10.10.110:8080

    五:mesos-dns安装配置

    mesos-dns介绍

    Mesos-DNS用来支持Mesos集群上的服务发现,使运行在Mesos上的应用和服务可以通过域名服务器来发现彼此。你只要知道一个Mesos数据中心上运行的应用的名字,就可以通过Mesos-DNS查询到该应用的IP和端口号。

    Mesos-DNS定期去查询Mesos master,监测所有framework上运行的所有任务,并生成这些任务的DNS记录(包括A记录和SRV记录)。当Mesos集群上的任务发生启动、结束、重启等状态变化时,Mesos-DNS都会更新DNS记录,以保持最新的状态。

    Mesos-DNS不需要与framework交互,只需要在启动的时候指向Mesos master即可。运行在Master Slave上的应用和服务,可以通过查询Mesos-DNS来发现它们依赖的应用和服务的IP和端口号。

    对于那些非Mesos任务的DNS解析请求,Mesos-DNS自己解析不了,通常使用一个扩展DNS服务器,将这些请求转发到扩展DNS服务来解析即可。

    slave上操作

    mesos-dns安装

    Mesos-DNS不需要编译安装,从https://github.com/mesosphere/mesos-dns/releases直接获取二进制文件即可

    #mkdir /usr/local/mesos-dns

    #cd /usr/local/mesos-dns

    #curl -o mesos-dns https://github.com/mesosphere/mesos-dns/releases/download/v0.6.0/mesos-dns-v0.6.0-linux-amd64

    #chmod +x mesos-dns

    mesos-dns配置

    编写json配置文件,mesos-dns启动时需要指定一个json的配置文件,这个配置文件里指定了Mesos master、域名等所需要的参数

    #vim /usr/local/mesos-dns/config.json

    {

      "zk": "zk://10.1.13.214:2181/mesos", #单机

      "zk": "zk://10.1.13.214:2181,10.1.13.215:2181,10.1.13.216:2181/mesos", #单机

      "masters": ["10.1.13.214:5050"], #单机

      "masters": ["10.1.13.214:5050","10.1.13.215:5050","10.1.13.216:5050"], #多机

      "refreshSeconds": 60,

      "ttl": 60,

      "domain": "mesos",

      "port": 53,

      "resolvers": ["8.8.8.8"],

      "timeout": 5,

      "httpon": true,

      "dnson": true,

      "httpport": 8123,

      "externalon": true,

      "listener": "10.1.13.211",  #slave本机ip

      "SOAMname": "felix.mesos",

      "SOARname": "admin.felix.mesos",

      "SOARefresh": 60,

      "SOARetry":  600,

      "SOAExpire":  86400,

      "SOAMinttl": 60,

      "IPSources": ["netinfo", "mesos", "host"]

    }

    运行mesos-dns

    使用命令行直接运行mesos-dns

    #/usr/local/mesos-dns/mesos-dns -config=/usr/local/mesos-dns/config.json &

    使用marathon来运行mesos-dns

    使用marathon来运行mesos-dns的好处是,即使在mesos-dns挂了之后也会立刻被重新运行。因为DNS服务器需要一个稳定的IP地址,所以通常将其指定在一个Mesos slave节点上运行。这里通过constraints字段来指定运行的slave的IP为10.1.13.213。在marathon上运行mesos-dns的json配置如下:

    {

      "id": "/mesos-dns",

      "cmd": "/usr/local/mesos-dns/mesos-dns -config=/usr/local/mesos-dns/config.json",

      "cpus": 0.2,

      "mem": 128,

      "disk": 0,

      "instances": 1,

      "constraints": [

        [

          "hostname",

          "CLUSTER",

          "10.1.13.213"

        ]

      ]

    }

    使用mesos-dns

    指定mesos-dns为域名服务器 为了让Mesos上运行的任务都使用mesos-dns作为主DNS服务器来解析,需要在Mesos slave节点的/etc/resolv.conf配置文件的第一行指定mesos-dns服务器为域名服务器。

    [root@localhost ~]#sed -i '1s/^/nameserver 10.1.13.213\n/' /etc/resolv.conf

    mesos-dns能解析的域名的格式

    mesos-dns解析的域名格式为:应用名.框架名.mesos域

    |构成项    |说明

    |---------|------------------------------------------------------

    |应用名    |  marathon上运行的应用或任务的名字,如果该应用在分组里面,需要在应用|名后面接上”-组名”;另外,应用名字里面有点号的,需要替换成减号”-“

    |框架名    |  我们采用的是marathon,这里的名字就为marathon

    |mesos域  |    这个是在mesos-dns的json配置文件里,domain字段定义的;默认为mesos

    例如,Mesos用的框架为marathon,在test分组里运行着名为test04的应用,则该应用将对应名为test04-test.marathon.mesos的域名

    测试

    格式:dig 应用名.框架名.mesos域 +short @mesos-dns所在节点IP

    [root@localhost ~]# yum install bind-utils  #安装dig命令

    [root@localhost ~]# dig test03.marathon.mesos +short @10.1.13.213

    10.1.13.211 

    #test03没有在分组中,@10.1.13.213是dig的参数,@mesos-dns所在节点IP

    [root@localhost ~]# dig test04-test.marathon.mesos +short   

    10.1.13.211

    注意,test03为marathon任务的name,test03这个任务要在marathon上运行,这里才能查到

    mesos-dns HTTP API

    Mesos-DNS提供了几个简单的REST API以供通过http方式来发现服务。 以上面mesos-dns在10.1.13.213为例,则有:

    |URL                                                |说明

    |----------------------------------------------------------------

    |http://10.1.13.213:8123/v1/version            |mesos-dns版本信息

    |http://10.1.13.213:8123/v1/config              |mesos-dns配置信息

    |http://10.1.13.213:8123/v1/hosts/{host}            |该host的IP地址信息

    |http://10.1.13.213:8123/v1/services/{service}  |该service的host、IP、端口信息

    注意: host为mesos-dns能解析的域名,如:test04-test.marathon.mesos service为DNS SRV记录名,如:test04-test.tcp.marathon.mesos

    相关文章

      网友评论

          本文标题:messos部署

          本文链接:https://www.haomeiwen.com/subject/sjzjsftx.html