你的位置:首页 > ASP.net教程

[ASP.net教程]mesos 学习笔记1


参考资料:

官方文档:http://mesos.apache.org/documentation 
中文翻译:http://mesos.mydoc.io/ 
GitHub:https://github.com/apache/mesos/tree/master 
董的博客:http://dongxicheng.org/category/apache-mesos/

安装

下载mesos

参考:http://mesos.apache.org/documentation/latest/getting-started/ 
下载最新版本:mesos-1.0.0,版本要求:

- 64位linux操作系统- 内核版本大于3.10 版本- gcc版本大于4.8.1

安装依赖

  • 安装wget/tar 
    • http://mesos.apache.org/documentation/latest/getting-started/
  • 获取maven的repo: 
    • wget http://repos.fedorapeople.org/repos/dchen/apache-maven/epel-apache-maven.repo -O /etc/yum.repos.d/epel-apache-maven.repo
  • 安装epel repo(安装SVN必须): 
    • yum install -y epel-release
  • 添加SVN repo:

    • 在/etc/yum.repos.d/wandisco-svn.repo文件里添加:

      [WANdiscoSVN] 
      name=WANdisco SVN Repo 1.9 
      enabled=1 
      baseurl=http://opensource.wandisco.com/centos/7/svn-1.9/RPMS// 
      gpgcheck=1 
      gpgkey=http://opensource.wandisco.com/RPM-GPG-KEY-WANdisco

  • 更新systemd:

    • yum update systemd
  • 安装development tools

    • yum groupinstall -y "Development Tools"
  • 安装mesos依赖

    • sudo yum install -y apache-maven python-devel java-1.8.0-openjdk-devel zlib-devel libcurl-devel openssl-devel cyrus-sasl-devel cyrus-sasl-md5 apr-devel subversion-devel apr-util-devel

编译

cd mesosmkdir buildcd build../configuremake(可以使用make -j N加快编译速度,不然编译时间非常长)make checkmake install

配置

默认make install会安装到/user/local/sbin底下,配置文件在/usr/local/etc底下,在这两个目录下,会有一些文件跟master/agent相关

mesos-master

  • mesos-start-masters.sh:用于SSH登录到各个master并且进行start操作,如果单机执行,只需注释跟SSH相关操作(直接通过daemon mesos-master启动)
  • mesos-stop-master.sh:用于SSH登录到各个master,并且进行stop操作,如果单机执行,只需注释SSH相关操作(直接执行killall mesos-master)
  • mesos-daemon.sh:用于启动mesos daemon,默认会执行一些动作(设置ulimit -n以及启动对应的环境变量设置/usr/local/etc/PROCNAME-env.sh)
  • mesos-agent实际的二进制文件,可以通过--help来查看对应参数,参数参考:http://mesos.apache.org/documentation/latest/configuration/
  • /usr/local/etc/mesos/mesos-master-env.sh:设置mesos环境变量,变量命名规则为MESOS_参数,其中{参数}为mesos-master --help中的参数,设置如下:

    export MESOS_log_dir=/var/log/mesos/master  # 设置日志目录export MESOS_work_dir=/var/run/mesos/master # 设置work目录,会存放一些运行信息export MESOS_ip=127.0.0.1          # 设置IP# export MESOS_port=5050           # 设置PORT,默认是5050export MESOS_CLUSTER=mesos_test_cluster1   # 设置集群名称export MESOS_hostname=127.0.0.1       # 设置master hostnameexport MESOS_logging_level=INFO       # 设置日志级别export MESOS_offer_timeout=60secs      # 设置offer的超时时间# export MESOS_agent_ping_timeout=15     # 设置ping 超时时间,默认15s# export MESOS_allocation_interval=1     # 设置资源 allocation间隔,默认1s

注意:offer_timeout非常关键,默认是不超时,如果一个offer发给scheduler后scheduler不做任何处理(acceptOffers或者declineOffer),那么这个offer一直会被这个scheduler给占用了,直到scheduler自己结束进程或者退出注册。所以offer_timeout一般要设置,用于防止由于scheduler自身的问题(偶发性hang住,或者程序问题没有处理offer)导致资源无法利用

mesos-agent

  • mesos-start-agent.sh:用于SSH登录到各个agent并且进行start操作,如果单机执行,只需注释跟SSH相关操作(直接通过daemon mesos-agent启动)
  • mesos-stop-agent.sh:用于SSH登录到各个agent,并且进行stop操作,如果单机执行,只需注释SSH相关操作(直接执行killall mesos-agent)
  • mesos-daemon.sh:用于启动mesos daemon,默认会执行一些动作(设置ulimit -n以及启动对应的环境变量设置/usr/local/etc/PROCNAME-env.sh)
  • mesos-agent实际的二进制文件,可以通过--help来查看对应参数,参数参考:http://mesos.apache.org/documentation/latest/configuration/
  • /usr/local/etc/mesos/mesos-agent-env.sh:设置mesos-agent环境变量,变量命名规则为MESOS_参数,其中{参数}为mesos-agent --help中的参数,设置如下:

    # The mesos master URL to contact. Should be host:port for# non-ZooKeeper based masters, otherwise a zk:// or file:// URL.export MESOS_master=172.24.133.164:5050# Other options you're likely to want to set:export MESOS_ip=172.24.133.164export MESOS_port=5051export MESOS_hostname=mesos_cl_agent164export MESOS_log_dir=/var/log/mesos/agentexport MESOS_work_dir=/var/run/mesos/agentexport MESOS_logging_level=INFOexport MESOS_isolation=cgroups

启动

mesos-master

  • 执行sh mesos-start-masters.sh
  • ps aux | grep mesos-master 能看到master进程
  • netstat -nltp | grep mesos,能看到master已经绑定5050端口
  • 查看http://127.0.0.1:5050,可以看到当前mesos集群的一些状态
 

mesos-agent

  • 执行sh mesos-start-agents.sh
  • ps aux | grep mesos-agent 能看到agent进程
  • netstat -nltp | grep mesos,能看到agent已经绑定5051端口
  • 查看http://127.0.0.1:5050,可以看到当前mesos集群的一些状态,同时看到对应的agent
 

测试Framework

  1. 执行mesos自带的测试framework(测试framework会自动任务执行结束后自动退出)

    # Run C++ framework (Exits after successfully running some tasks.).$ ./src/test-framework --master=127.0.0.1:5050# Run Java framework (Exits after successfully running some tasks.).$ ./src/examples/java/test-framework 127.0.0.1:5050# Run Python framework (Exits after successfully running some tasks.).$ ./src/examples/python/test-framework 127.0.0.1:5050
  2. 查看http://127.0.0.1:5050,可以看到framework信息和framework执行的task信息