docker_practice/mesos/configuration.md

173 lines
12 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

## Mesos
Mesos
Mesos master slave master slave
Mesos
###
* `--advertise_ip=VALUE` 访访 master
* `--advertise_port=VALUE` 访
* `--external_log_file=VALUE` Web
* `--firewall_rules=VALUE` endpoint `VALUE` JSON JSON
* `--ip=VALUE` IP
* `--log_dir=VALUE`
* `--logbufsecs=VALUE` buffer
* `--logging_level=VALUE`
* `--port=VALUE` master 5050slave 5051
### master
Mesos master
`mesos-master --help`
* `--quorum=VALUE` 使 replicated-Log ZooKeeper HA
* `--work_dir=VALUE`
* `--zk=VALUE` HA ZooKeepr `zk://username:password@host1:port1,host2:port2,.../path`
* `--acls=VALUE` ACL
* `--allocation_interval=VALUE` allocation 1sec
* `--allocator=VALUE` HierarchicalDRF
* `--[no-]authenticate` framework
* `--[no-]authenticate_slaves` slaves
* `--authenticators=VALUE` framework salves
* `--cluster=VALUE` Web
* `--credentials=VALUE`
* `--external_log_file=VALUE`
* `--framework_sorter=VALUE` framework
* `--hooks=VALUE` master hook
* `--hostname=VALUE` master 使
* `--[no-]log_auto_initialize` replicated
* `--modules=VALUE` JSON
* `--offer_timeout=VALUE` offer
* `--rate_limits=VALUE` framework query per second (qps)
* `--recovery_slave_removal_limit=VALUE` slave master 100%
* `--slave_removal_rate_limit=VALUE slave` 1/10mins
* `--registry=VALUE` `replicated_log` `in_memory`
* `--registry_fetch_timeout=VALUE` 访
* `--registry_store_timeout=VALUE`
* `--[no-]registry_strict` false
* `--roles=VALUE` framework
* `--[no-]root_submissions` root framework true
* `--slave_reregister_timeout=VALUE` lead master slave salve 10mins
* `--user_sorter=VALUE` drf
* `--webui_dir=VALUE` webui `/usr/local/share/mesos/webui`
* `--weights=VALUE`
* `--whitelist=VALUE` offer slave None
* `--zk_session_timeout=VALUE` session 10secs
* `--max_executors_per_slave=VALUE` `--with-network-isolator` slave
master `/tmp/mesos` `mesos_cluster`
```sh
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`
* `--master=VALUE` master ZooKeeper
* `--attributes=VALUE`
* `--authenticatee=VALUE` master
* `--[no-]cgroups_enable_cfs` CFS CPU false
* `--cgroups_hierarchy=VALUE` cgroups `/sys/fs/cgroup`
* `--[no-]cgroups_limit_swap` swap false
* `--cgroups_root=VALUE` cgroups mesos
* `--container_disk_watch_interval=VALUE` 为容器进行硬盘配额查询的时间间隔;
* `--containerizer_path=VALUE` 采用外部隔离机制(`--isolation=external`)时候,外部容器机制执行文件路径;
* `--containerizers=VALUE` 可用的容器实现机制,包括 mesos、external、docker
* `--credential=VALUE` 加密后凭证,或者所在文件路径;
* `--default_container_image=VALUE` 采用外部容器机制时,任务缺省使用的镜像;
* `--default_container_info=VALUE` 容器信息的缺省值;
* `--default_role=VALUE` 资源缺省分配的角色;
* `--disk_watch_interval=VALUE` 硬盘使用情况的周期性检查间隔,默认为 1mins
* `--docker=VALUE` docker 执行文件的路径;
* `--docker_remove_delay=VALUE` 删除容器之前的等待时间,默认为 6hrs
* `--[no-]docker_kill_orphans` 清除孤儿容器,默认为 true
* `--docker_sock=VALUE` docker sock 地址,默认为 `/var/run/docker.sock`
* `--docker_mesos_image=VALUE` 运行 slave 的 docker 镜像如果被配置docker 会假定 slave 运行在一个 docker 容器里;
* `--docker_sandbox_directory=VALUE` sandbox 映射到容器里的哪个路径;
* `--docker_stop_timeout=VALUE` 停止实例后等待多久执行 kill 操作,默认为 0secs
* `--[no-]enforce_container_disk_quota` 是否启用容器配额限制,默认为 false
* `--executor_registration_timeout=VALUE` 执行应用最多可以等多久再注册到 slave否则停止它默认为 1mins
* `--executor_shutdown_grace_period=VALUE` 执行应用停止后,等待多久,默认为 5secs
* `--external_log_file=VALUE` 外部日志文件;
* `--fetcher_cache_size=VALUE` fetcher 的 cache 大小,默认为 2 GB
* `--fetcher_cache_dir=VALUE` fetcher cache 文件存放目录,默认为 /tmp/mesos/fetch
* `--frameworks_home=VALUE` 执行应用前添加的相对路径,默认为空;
* `--gc_delay=VALUE` 多久清理一次执行应用目录,默认为 1weeks
* `--gc_disk_headroom=VALUE` 调整计算最大执行应用目录年龄的硬盘留空量,默认为 0.1
* `--hadoop_home=VALUE` hadoop 安装目录,默认为空,会自动查找 HADOOP_HOME 或者从系统路径中查找;
* `--hooks=VALUE` 安装在 master 中的 hook 模块列表;
* `--hostname=VALUE` slave 节点使用的主机名;
* `--isolation=VALUE` 隔离机制,例如 `posix/cpu,posix/mem`(默认)或者 `cgroups/cpu,cgroups/mem``external` 等;
* `--launcher_dir=VALUE` mesos 可执行文件的路径,默认为 `/usr/local/lib/mesos`
* `--image_providers=VALUE` 支持的容器镜像机制,例如 'APPC,DOCKER'
* `--oversubscribed_resources_interval=VALUE` slave 节点定期汇报超配资源状态的周期;
* `--modules=VALUE` 要加载的模块,支持文件路径或者 JSON
* `--perf_duration=VALUE` perf 采样时长,必须小于 perf_interval默认为 10secs
* `--perf_events=VALUE` perf 采样的事件;
* `--perf_interval=VALUE` perf 采样的时间间隔;
* `--qos_controller=VALUE` 超配机制中保障 QoS 的控制器名;
* `--qos_correction_interval_min=VALUE` Qos 控制器纠正超配资源的最小间隔,默认为 0secs
* `--recover=VALUE` 回复后是否重连旧的执行应用reconnect默认值是重连cleanup 清除旧的执行器并退出;
* `--recovery_timeout=VALUE` slave 恢复时的超时,太久则所有相关的执行应用将自行退出,默认为 15mins
* `--registration_backoff_factor=VALUE` 跟 master 进行注册时候的重试时间间隔算法的因子,默认为 1secs采用随机指数算法最长 1mins
* `--resource_monitoring_interval=VALUE` 周期性监测执行应用资源使用情况的间隔,默认为 1secs
* `--resources=VALUE` 每个 slave 可用的资源,比如主机端口默认为 [31000, 32000]
* `--[no-]revocable_cpu_low_priority` 运行在可撤销 CPU 上容器将拥有较低优先级,默认为 true。
* `--slave_subsystems=VALUE` slave 运行在哪些 cgroup 子系统中,包括 memorycpuacct 等,缺省为空;
* `--[no-]strict` 是否认为所有错误都不可忽略,默认为 true
* `--[no-]switch_user` 用提交任务的用户身份来运行,默认为 true
* `--work_dir=VALUE` framework 的工作目录,默认为 /tmp/mesos。
下面这些选项需要配置 `--with-network-isolator` 一起使用(编译时需要启用 ` --with-network-isolator` 参数)。
* `--ephemeral_ports_per_container=VALUE` 分配给一个容器的临时端口的最大数目,需要为 2 的整数幂(默认为 1024
* `--eth0_name=VALUE` public 网络的接口名称,如果不指定,根据主机路由进行猜测;
* `--lo_name=VALUE` loopback 网卡名称;
* `--egress_rate_limit_per_container=VALUE` 每个容器的输出流量限制速率限制(采用 fq_codel 算法来限速),单位是字节每秒;
* `--[no-]-egress_unique_flow_per_container` 是否把不同容器的流量当作彼此不同的流,避免彼此影响(默认为 false
* `--[no-]network_enable_socket_statistics` 是否采集每个容器的 socket 统计信息,默认为 false。
下面给出一个典型的 slave 配置,容器为 Docker监听在 `10.0.0.10` 地址;节点上限制 16 个 CPU、64 GB 内存,容器的非临时端口范围指定为 [31000-32000],临时端口范围指定为 [32768-57344];每个容器临时端口最多为 512 个,并且外出流量限速为 50 MB/s。
```sh
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
```
为了避免主机分配的临时端口跟我们指定的临时端口范围冲突,需要在主机节点上进行配置。
```sh
$ echo "57345 61000" > /proc/sys/net/ipv4/ip_local_port_range
```
* Mesos 使*