Mesos 配置项解析

Mesos 配置项解析

Mesos 支持在运行时通过命令行参数形式提供的配置项。如果是通过系统服务方式启动,也支持以配置文件或环境变量方式给出。当然,实际上最终是提取为命令行参数传递给启动命令。

Mesos 的配置项分为三种类型:通用项(master 和 slave 都支持),只有 master 支持的,以及只有 slave 支持的。

Mesos 配置项比较多,下面对一些重点配置进行描述。少数为必备项,意味着必须给出配置值;另外一些是可选配置,自己带有默认值。

通用项

通用项数量不多,主要涉及到服务绑定地址和日志信息等,包括:

master 专属配置项

这些配置项是针对主节点上的 Mesos master 服务的,围绕高可用、注册信息、对应用框架的资源管理等。用户应该根据本地主节点资源情况来合理的配置这些选项。

用户可以通过 mesos-master --help 命令来获取所有支持的配置项信息。

必须指定的配置项有三个:

可选的配置项有:

下面给出一个由三个节点组成的 master 集群典型配置,工作目录指定为 /tmp/mesos,集群名称为 mesos_cluster

mesos-master \
--zk=zk://10.0.0.2:2181,10.0.0.3:2181,10.0.0.4:2181/mesos \
--quorum=2 \
--work_dir=/tmp/mesos \
--cluster=mesos_cluster

slave 专属配置项

slave 节点支持的配置项是最多的,因为它所完成的事情也最复杂。这些配置项既包括跟主节点打交道的一些参数,也包括对本地资源的配置,包括隔离机制、本地任务的资源限制等。

用户可以通过 mesos-slave --help 命令来获取所有支持的配置项信息。

必备项就一个:

以下为可选配置项:

下面这些选项需要配置 --with-network-isolator 一起使用(编译时需要启用 --with-network-isolator 参数)。

下面给出一个典型的 slave 配置,容器为 Docker,监听在 10.0.0.10 地址;节点上限制 16 个 CPU、64 GB 内存,容器的非临时端口范围指定为 [31000-32000],临时端口范围指定为 [32768-57344];每个容器临时端口最多为 512 个,并且外出流量限速为 50 MB/s。

mesos-slave \
--master=zk://10.0.0.2:2181,10.0.0.3:2181,10.0.0.4:2181/mesos \
--containerizers=docker \
--ip=10.0.0.10 \
--isolation=cgroups/cpu,cgroups/mem,network/port_mapping \
--resources=cpus:16;mem:64000;ports:[31000-32000];ephemeral_ports:[32768-57344] \
--ephemeral_ports_per_container=512 \
--egress_rate_limit_per_container=50000KB \
--egress_unique_flow_per_container

为了避免主机分配的临时端口跟我们指定的临时端口范围冲突,需要在主机节点上进行配置。

$ echo "57345 61000" > /proc/sys/net/ipv4/ip_local_port_range

注:非临时端口是 Mesos 分配给框架,绑定到任务使用的,端口号往往有明确意义;临时端口是系统分配的,往往不太关心具体端口号。