Master.cpp
src/master/master.cpp是mesos master的大本营。
mesos非常依赖于libprocess,master也不例外,97-116行可以看到引用了若干libprocess的功能。
Master的各种常量定义
常量定义在src/master/constants.hpp,注释详细,以下简要说明:
Master::Master
是Master的构造函数,Master类的定义见src/master/master.hpp。
- 288-300:初始化Master对象的一些私有变量:
- Master对象中slaves的定义在src/master/master.hpp的1586-1705行。
- 308:设置一个随机的UUID作为Master的ID
- 315-319:存储Master相关信息
- 322-348:查找并设置Hostname、IP、端口
Master::initialize
Master真正初始化的地方,是谁在调用它??---
流程
- 375-377:输出hostname等启动时的信息
- 379-386:IP地址不可以绑定在LOOPBACK上
- 388-459:确定几个参数的合法性
- agent的重新注册间隔不能小于MIN_AGENT_REREGISTER_TIMEOUT(默认是多少??????)
- recovery_agent_removal_limit
- 源代码必须有HAS_AUTHENTICATION,命令行参数才能指定认证相关信息
- 462-475:加载credentials,credentials和secrets类似于用户与口令,见安全
- 477-580:处理安全认证等
- 582-637:ratelimits---
- 640-688:处理roles及与之相关的weights
- 691-696:确保命令行传递的timeout大于0
- 699-704:初始化allocator,见allocator
- 706-717:解析白名单、并启动白名单的watcher
- 723:记录下启动的时刻
- 728-838:设置Master收到的各种消息的回调函数
- 841-1043:设置对
http://masterip:masterport
的HTTP请求的处理函数 - 1050-1051:访问master的WEB主页时,路由到这个文件"master/static/index.html"
- 1055-1057:将变量authorize初始化为一个匿名函数,该函数将针对进程masterPid,调用Master::authorizeLogAccess,参数为principal
- 1061-1077:logdir---
- 1079:contender初始化
- 1083-1086:-------