VALUE,slave,master,mesos,docker Mesos 配置項解析 Mesos 支持在運行時通過命令行參數形式提供的配置項。如果是通過系統服務方式啟動,也支持以配置文件或環境變數方式給出。當然,實際上最終是提取為命令行參數傳遞給啟動命令。 Mesos 的配置項分為三種類型:通用項 ...
VALUE,slave,master,mesos,docker
Mesos 配置項解析
Mesos 支持在運行時通過命令行參數形式提供的配置項。如果是通過系統服務方式啟動,也支持以配置文件或環境變數方式給出。當然,實際上最終是提取為命令行參數傳遞給啟動命令。
Mesos 的配置項分為三種類型:通用項(master 和 slave 都支持),只有 master 支持的,以及只有 slave 支持的。
另外要註意:光理論是不夠的。在此免費贈送套JAVA架構項目實戰教程及大廠面試題庫,有興趣的可以進裙 783802103,獲取,沒基礎勿進哦!
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 預設是 5050,slave 預設是 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
。
1
|
mesos-master
|
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 子系統中,包括 memory,cpuacct 等,預設為空;--[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。
1
|
mesos-slave
|
為了避免主機分配的臨時埠跟我們指定的臨時埠範圍衝突,需要在主機節點上進行配置。
1
|
$ echo "57345 61000" > /proc/sys/net/ipv4/ip_local_port_range
|
註:非臨時埠是 Mesos 分配給框架,綁定到任務使用的,埠號往往有明確意義;臨時埠是系統分配的,往往不太關心具體埠號。
最後註意:光理論是不夠的。在此免費贈送套JAVA架構項目實戰教程及大廠面試題庫,有興趣的可以進裙 783802103,獲取,沒基礎勿進哦!
本文的文字及圖片來源於網路加上自己的想法,僅供學習、交流使用,不具有任何商業用途,版權歸原作者所有,如有問題請及時聯繫我們以作處理