mesos 配置向导
mesos master 和 slave 可以通过命令行参数或环境变量来传递一系列的配置选项。通过运行 mesos-master --help
或者 mesos-slave --help
可以查看相关的可用选项。每个选项可以通过以下两种方式设置:
执行命令的时候使用 –-option_name=value 来传递配置选项。value 既可以是数值,也可以指定包含参数的文件 (--opthon_name=file://文件路径)。 该路径既可以是绝对路径,也可以是相对当前工作目录的相对路径。
通过设定环境变量 MESOSOPTION_NAME (变量名都以 MESOS 开头)
执行时会先读取环境变量,然后才看命令行参数
配置参数会首先在环境中搜索,然后才是命令行。
重要的配置
如果你有特定的需求,当配置 Mesos 的时候请参考 ./configure --help。另外,本文档列举了最新的配置选项。如果你想知道手头的版本支持哪些标志位,你可以运行带有 --help 的命令,例如 mesos-master --help。
Master 和 Slave 的配置选项
下列选项 都被 master 和 slave 所支持:
Flag | 说明 |
---|---|
--advertise_ip=VALUE | 用来触达 mesos master/slave 的 IP 广播地址。 Mesos master/slave 不会与这个 IP 地址绑定。 但是,这个 IP 地址可以被用来访问 Mesos master/slave. |
--advertise_port=VALUE |
用来触达 mesos master/slave 的广播端口 (配合
advertise_ip ). Mesos master/slave 不与这个端口绑定。
但是,这个端口 (配合 advertise_ip ) 可以用于访问 Mesos master/slave.
|
--firewall_rules=VALUE |
该值是终端防火墙的规则(rules),可以为JSON 类型的 rules 或包含 JSON 类型 rules 的文件。文件路径可以为 file:///path/to/file 或者 /path/to/file 。
规则的格式请参考文件 例如:
|
--[no-]help | 输出帮助信息 (默认值: false) |
--ip=VALUE |
监听的 IP 地址. 这个不能与--ip_discovery_command 一起使用. (master默认5050,slave默认5051)
|
--ip_discovery_command=VALUE |
IP 发现可选项: 如果设置 IP 地址,master/slave 将会尝试绑定这个 IP 地址。
不能与 --ip 一起使用.
|
--port=VALUE | 监听端口 |
--[no-]version | 显示版本并退出 (默认: false) |
--hooks=VALUE | 一个由逗号分隔的 hook 模块列表将被安装到 master/slave。 |
--hostname=VALUE |
slave 节点报告或 master 节点在 ZooKeeper 里广播的 hostname.
如果不做设置,hostname 将解析为 master/slave 绑定的 IP 地址。
除非用户已经使用 --no-hostname_lookup 明确禁止了此功能, in which case the IP itself
is used.
|
--[no-]hostname_lookup |
当没有明确指定 hostname 时(例如 --hostname ),是否查询找出服务器的 hostname。
默认值是 true; 如果设置为 false Mesos 将会使用 IP 地址信息,除非 hostname 被明确指出了。
(默认值: true)
|
--modules=VALUE |
List of modules to be loaded and be available to the internal
subsystems.
Use
Use Example:
|
masters 和 slaves 同时支持以下这些日志选项 更多日志信息,请访问 http://mesos.apache.org/documentation/latest/logging/
Flag | 说明 |
---|---|
--[no-]quiet | 禁用输出日志到 sterr (默认:false) |
--log_dir=VALUE | 输出日志文件的位置。默认方式下,不生成日志文件。这个参数不影响输出到 stderr 的日志。 如果特别指定了,就可以通过 Mesos webUI 看到这个日志文件。 注意: 第三方日志信息 (比如,ZooKeeper) 将只能写入到 stderr! |
--logbufsecs=VALUE | 缓冲日志的时长(秒数)默认:0秒 |
--logging_level=VALUE |
输出日志的起始级别,包括 INFO , WARNING , ERROR 。如果使用了--quiet 标记,只会影响到输出到 --log_dir 的日志的级别(默认:INFO)
|
--[no-]initialize_driver_logging |
master/slave 是否为 Mesos scheduler 和 executor driver 初始化 Google logging.
scheduler/executor drivers 将分别记录日志,不会写入 master/slave 的日志中。
如果使用的是 HTTP scheduler/executor APIs,这个选项将无效。 (默认:true) |
--external_log_file=VALUE |
定位外部管理的日志文件位置。Mesos 不会直接写入这个文件,仅会通过 WebUI 和 HTTP API 将其
暴露出来。这个仅用于混合外部日志机制来记录日志到 stderr 的情况。比如,syslog 或 journald。
当通过
此选项在 WebUI 的优先级高于 |
Master 配置选项
必选参数
Flag | 说明 |
---|---|
--quorum=VALUE |
使用基于 replicated-Log 的注册表时,复制的个数。
此值需要设置为masters总数量的一半以上,也就是:quorum > (number of masters)/2 。
注意:单机模式下不需要设置此参数。(非HA模式)
|
--work_dir=VALUE |
Registry 中持久化信息存储的位置。(如:/var/lib/mesos/master )
|
--zk=VALUE |
ZooKeeper 的 URL地址 (用于在masters中做领导选举)可能是下面所列形式中的一种:
注意: 单机模式下不需要设置此参数。(非HA模式).
|
可选参数
Flag | 说明 |
---|---|
--acls=VALUE |
此参数用于认证。一般是 JSON 格式的 ACLs 的字符串或者文件。
路径一般是这样的格式:file:///path/to/file 或 /path/to/file
注意:如果参数 在 authorizer.proto 中查看 ACLs protobuf 参考格式。 举例:
|
--allocation_interval=VALUE | (批次)执行分配(allocations)的间隔时间。(如:500ms,1秒……) 默认值:1秒 |
--allocator=VALUE |
分配器,用于给框架分配资源。默认使用 HierarchicalDRF 分配器,也可以通过
--modules 模块来选择其他的分配器。
(默认值:HierarchicalDRF)
|
--[no-]authenticate |
如果是 true ,则只有认证过的框架可以注册。
如果是 false ,则未认证的框架也可以注册。(默认:false)
|
--[no-]authenticate_http |
如果是 true ,则只有支持认证机制的已认证的 HTTP endpoints 请求被允许访问。
如果是 false ,则未认证的 HTTP endpoint 请求也会被允许访问。
(默认:false)
|
--[no-]authenticate_slaves |
如果是 true ,只有认证过的 slaves 才能注册。
如果是 false ,未认证的 slaves 也可以注册。
(默认:false)
|
--authenticators=VALUE |
框架或 slave 进行认证时使用的认证器。默认是 crammd5 ,也可以通过使用
--modules 更换其他认证模块。
(默认:crammd5)
|
--authorizers=VALUE |
用于进行授权的 Authorizer。默认使用 local ,也可以通过使用
--modules 替换成其他的 authorizer。
注意:如果参数 目前并不支持多个 authorizers. (默认:local) |
--cluster=VALUE | 集群别名,会在 WebUI上显示。 |
--credentials=VALUE |
一个存取凭证的路径。这个路径可以指向一个内容为凭证列表的文本文件,在这个文件中每一行包括由空格隔开的principal 和secret 。也可以指向一个包含凭证信息的 JSON 格式文件。
路径的格式可以是:file:///path/to/file 或 /path/to/file
JSON 文件举例:
文本文件举例:
|
--framework_sorter=VALUE | 给定 framework 之间的资源分配策略。选项与 user_allocator 相同。 (默认:drf) |
--http_authenticators=VALUE |
HTTP 认证器用于处理已验证的 endpoints 的请求。默认值是 basic ,或者通过
--modules 加载一个其他的 HTTP 认证器。
目前不支持多种 HTTP 认证器。(默认:basic) |
--[no-]log_auto_initialize | 是否自动初始化注册使用的 *replicated log* 。如果设置为否,日志将在每次使用时手动初始化。 (默认值:true) |
--max_completed_frameworks=VALUE | 存储在内存中的完成框架的最大数量。(默认:50) |
--max_completed_tasks_per_framework =VALUE | 存储在内存的每个框架中已完成任务的最大数量。(默认:1000) |
--max_slave_ping_timeouts=VALUE |
一个 slave 对于master的 ping 响应失败的最大次数。
如果 slaves 没有在 max_slave_ping_timeouts 之内响应,就会尝试关机。
(默认:5)
|
--offer_timeout=VALUE | 一个 offer 撤销的超时时间。 这可以让不同的 frameworks 提供的 offer 获得更公平的响应。 如果不设置, offers 没有超时限制。 |
--rate_limits=VALUE |
该值可以为一个 JSON 格式的速率限制或一个文件路径包含了被 framework 限速 所使用的 JSON 格式的速率限制。请记住你也可以是使用 file:///path/to/file 或 /path/to/file 参数值格式来将该 JSON 写入至一个文件。
期望的格式请参考 mesos.proto 中的 RateLimits protobuf. Example:
|
--recovery_slave_removal_limit=VALUE | 针对故障转移,限制上的百分比的 slaves 可以从注册中移除并关机在重新注册的超时时间到了之后。 如果该限制被突破, master 将实行故障转移而不是移除 slaves. 这可被用来针对生产环境提供安全保障。生产环境可能期望在 Master 故障转移过程中, 最多一定百分比的 slaves 将永久性的挂掉 (比如, 由于 rack-level 的故障)。 设定该限制可以保证一个人需要参与进来当在该集群中一个非预期的大范围的 slave 故障发生。值: [0%-100%] (默认: 100%) |
--registry=VALUE |
注册表持久化策略。可用选项有 replicated_log ,in_memory (用于测试)。
默认:replicated_log。
|
--registry_fetch_timeout=VALUE | 在操作被认为是一个失败后的为了从注册中提取数据的等待的时间间隔.(默认: 1mins) |
--registry_store_timeout=VALUE | 等待的时间周期为了当操作被认为一个失败的时候将数据存储入注册机。 (默认:20secs) |
--[no-]registry_strict |
无论 Master 是否将基于注册机中存储的持久信息来采取行动。设定改值为 false 意味着注册员将永远拒绝入列,出列和一个 slave 的移除。所以, false 可以用来在一个运行的集群上来引导持久化的状态。注意: 该标志位是 *experimental* 而且还不能在应用中使用.(默认: false)
|
--roles=VALUE | 其 frameworks 在这个集群中可能归属于的用逗号分离的一系列指派的角色。 |
--[no-]root_submissions | root 是否可以提交 frameworks? (默认: true) |
--slave_ping_timeout=VALUE | 在每个 slave 被期望从一个 master 回应一个 ping 值的超时时间。 Slaves 如果不是在 max_slave_ping_timeouts 回复,ping 从新尝试将被移除. (默认: 15secs) |
--slave_removal_rate_limit=VALUE |
最大的比例(e.g., 1/10mins , 2/3hrs , etc) 对于那个 slaves 将被从 master 中移除当他们遇到健康检测失败。默认的是 slave 将尽可能快的被移除当它们遇到健康监测失败。值为 (Number of slaves)/(Duration) 的模式。
|
--slave_reregister_timeout=VALUE | 在所有的 slaves 被期望重新注册当一个新的 master 被选举为 leader 的超时时间。 Slaves 其不会在此超时时间内被重新注册将被从注册中移除并将被关掉如果它们尝试去与 master 通信。 注意: 该值将被设置为最少 10mins. (默认: 10mins) |
--user_sorter=VALUE | 被用来在用户中分配资源的策略。可以为以下之一:dominant_resource_fairness (drf) (default: drf) |
--webui_dir=VALUE | 管理页面的网页文件的目录,默认:/usr/local/share/mesos/webui |
--weights=VALUE |
逗号分割的角色/权重列表,成对表单 role=weight,role=weight 。 weights是用来表达优先级。
|
--whitelist=VALUE |
一个 文件名器包含一系列的 slaves (每行一个)来通告 offers.该文件被观测,并周期性的重读取来刷新 slave 白名单。 默认的这里没有白名单/所有机器被接收. (默认: None)
文件路径可以是这样的形式:
file:///path/to/file 或 /path/to/file .
|
--zk_session_timeout=VALUE | zookeeper 的 session 超时时长。 (默认: 10secs) |
通过 --with-network-isolator
配置时可用的标记
Flag | 说明 |
---|---|
--max_executors_per_slave=VALUE | 每个 Slave 上最大允许的执行器数量。网络监控和隔离机制强行限制每个执行器使用的端口资源,所以每个 slave 上只能跑一定数量的执行器。 |
Slave 选项
必选项
Flag | 说明 |
---|---|
--master=VALUE |
可能是其中的一种:
host:port
zk://host1:port1,host2:port2,.../path
zk://username:password@host1:port1,host2:port2,.../path
file:///path/to/file (包含以上中的一个)
|
可选项
当配置了 ' –with-network-isolator ', 以下标记位才会生效:
--ephemeral_ports_per_container=VALUE 有网络隔离器分配临时端口给一个容器。此端口号必须是 2 的倍数。( 默认: 1024 )
--eth0_name = VALUE 公网接口的名称 ( 如 eth0 )。如果没有指定,网络隔离器会尝试基于主机的默认网关来猜测它。
--lo_name=VALUE 网络 loopback 接口的名称( 例如, lo )。如果没有指定,网络隔离器会尝试猜测它。
--egress_rate_limit_per_container=VALUE 每个容器的出口流量限制,单位是 字节/每秒。如果没有指定或指定为零,网络隔离器不会强制限制容器的出口流量。这个标记使用字节类型, 定义在 stout 。
--[no-]network_enable_socket_statistics_summary 是否从每个容器收集 socket 统计摘要。这个标记位被用在 'network/port_mapping' 隔离器。 ( 默认: false )
--[no-]network_enable_socket_statistics_details 是否从每个容器收集 socket 细节信息。该标记用于 ' network/port_mapping ' 隔离器。( 默认: false )
Mesos构建配置选项
配置脚本有以下可选的功能标志
--enable-shared[=PKGS] 建立共享库 [ 默认: yes ]
--enable-static[=PKGS] 建立静态库 [ 默认: yes ]
--enable-fast-install[=PKGS] 快速安装 [ 默认: yes ]
--disable-libtool-lock 避免锁死 ( 可能会破坏并行编译 )
--disable-java 不需要构建 Java 绑定
--disable-python 不需要构建 Python 绑定
--enable-debug 启用 Debug 调试。如果设置了 CFLAGS/CXXFLAGS ,这个选项不会改变它们。默认: no
--enable-optimize 启用优化 如果设置了 CFLAGS/CXXFLAGS ,这个选项不会改变它们。默认: no
--disable-bundled 预装相关依赖,而不是绑定 libraries 。
--disable-bundled-distribute 不包含构建和使用绑定的分发包来替换在 PYTHONPATH 中的已安装版本。
--disable-bundled-pip excludes 不包含构建和使用绑定的 pip 包来替换在 PYTHONPATH 中的已安装版本.
--disable-bundled-wheel 不包含构建和使用绑定的 wheel 包来替换在 PYTHONPATH 中的已安装版本
--disable-python-dependency-install 当在 make install 期间安装 python 包,不需要外部的依赖或安装。
配置脚本有以下的标志位针对可选的包选项:
--with-gnu-ld 假设 C 编译器使用 GNU ld [ 默认: no ]
--with-sysroot=DIR 在 DIR 中搜索依赖库 ( 或者如果编译器的 sysroot 没有指定 )
--with-zookeeper[=DIR] 不包含构建和已构建的 ZooKeeper 包来替代在一个给定的目录为前缀名的地址下的已安装版本。
--with-leveldb[=DIR] 不包含构建的和使用与 LevelDB 绑定的包来替代在一个给定的目录为前缀名的地址下的已安装版本。
--with-glog[=DIR] 不包含构建的和使用与 glog 绑定的包来替代在一个给定的目录为前缀名的地址下的已安装版本。
--with-protobuf[=DIR] 不包含构建的和使用与 protobuf 绑定的包来替代在一个给定的目录为前缀名的地址下的已安装版本。
--with-gmock[=DIR] 不包含构建的和使用与 gmock 绑定的包来替代在一个给定的目录为前缀名的地址下的已安装版本
--with-curl=[=DIR] 指定在哪里找到 curl 库
--with-sasl=[=DIR] 指定在哪里找到 sasl2 库
--with-zlib=[=DIR] 指定在哪里找到 zlib 库
--with-apr=[=DIR] 指定在哪里找到 apr-1 库
--with-svn=[=DIR] 指定在哪里找到 svn-1 库
--with-network-isolator 建立网络隔离
一些 influential 的环境变量配置脚本:
使用这些变量来重写 'configure'生成的选择项或帮助其来查找库文件和非标准的名字/地址一起来编程。
JAVA_HOME JDK 根目录
JAVA_CPPFLAGS JNI 目录
JAVA_JVM_LIBRARY libjvm.so 的完整路径
MAVEN_HOME mvn 的根目录
PROTOBUF_JAR 在 prefixed builds 上完整的 protobuf jar 路径
PYTHON 指定使用哪个 Python 解析器
PYTHON_VERSION 已经安装并使用的 Python 版本号 例如,'2.3'。该字符串将追加到 Python 解析器