2. process::firewall::install(move(rules));如果有参数--firewall_rules则会添加规则

 

对应的代码如下:

  1. // Initialize firewall rules.
  2. if (flags.firewall_rules.isSome()) {
  3.   vector<Owned<FirewallRule>> rules;
  4.  
  5.   const Firewall firewall = flags.firewall_rules.get();
  6.  
  7.   if (firewall.has_disabled_endpoints()) {
  8.     hashset<string> paths;
  9.  
  10.     foreach (const
    string& path, firewall.disabled_endpoints().paths()) {
  11.       paths.insert(path);
  12.     }
  13.  
  14.     rules.emplace_back(new DisabledEndpointsFirewallRule(paths));
  15.   }
  16.  
  17.   process::firewall::install(move(rules));
  18. }

 

对应的命令行参数如下:

 

 

这个参数的主要作用为,并不是Mesos的每一个API都想暴露出来,disabled_endpoints里面就是不能访问的API。

 

上面的install的代码会做下面的事情

 

 

最终会放到环境变量firewallRules里面。

 

那这些firewall是什么事情起作用的呢?

 

在3rdparty/libprocess/src/process.cpp里面有函数

 

  1. synchronized (firewall_mutex) {
  2.   // Don't use a const reference, since it cannot be guaranteed
  3.   // that the rules don't keep an internal state.
  4.   foreach (Owned<firewall::FirewallRule>& rule, firewallRules) {
  5.     Option<Response> rejection = rule->apply(socket, *request);
  6.     if (rejection.isSome()) {
  7.       VLOG(1) << "Returning '"<< rejection.get().status << "' for '"
  8.               << request->url.path << "' (firewall rule forbids request)";
  9.  
  10.       // TODO(arojas): Get rid of the duplicated code to return an
  11.       // error.
  12.  
  13.       // Get the HttpProxy pid for this socket.
  14.       PID<HttpProxy> proxy = socket_manager->proxy(socket);
  15.  
  16.       // Enqueue the response with the HttpProxy so that it respects
  17.       // the order of requests to account for HTTP/1.1 pipelining.
  18.       dispatch(
  19.           proxy,
  20.           &HttpProxy::enqueue,
  21.           rejection.get(),
  22.           *request);
  23.  
  24.       // Cleanup request.
  25.       delete request;
  26.       return;
  27.     }
  28.   }
  29. }

 

Mesos源码分析(3): Mesos Master的启动之二的更多相关文章

  1. Mesos源码分析(5): Mesos Master的启动之四

      5. Create an instance of allocator.   代码如下   Mesos源码中默认的Allocator,即HierarchicalDRFAllocator的位置在$ME ...

  2. Mesos源码分析(4) Mesos Master的启动之三

    3. ModuleManager::load(flags.modules.get())如果有参数--modules或者--modules_dir=dirpath,则会将路径中的so文件load进来   ...

  3. Mesos源码分析(2): Mesos Master的启动之一

    Mesos Master的启动参数如下: /usr/sbin/mesos-master --zk=zk://127.0.0.1:2181/mesos --port=5050 --log_dir=/va ...

  4. Mesos源码分析(6): Mesos Master的初始化

      Mesos Master的初始化在src/master/master.cpp中     在Mesos Master的log中,是能看到这一行的.   1.初始化role,并设置weight权重   ...

  5. Mesos源码分析(1): Mesos的启动过程总论

  6. Mesos源码分析(9): Test Framework的启动

    我们以Test Framework为例子解释Framework的启动方式. Test Framework的代码在src/examples/test_framework.cpp中的main函数 首先要指 ...

  7. Tomcat源码分析 (七)----- Tomcat 启动过程(二)

    在上一篇文章中,我们分析了tomcat的初始化过程,是由Bootstrap反射调用Catalina的load方法完成tomcat的初始化,包括server.xml的解析.实例化各大组件.初始化组件等逻 ...

  8. Mesos源码分析

    Mesos源码分析(1): Mesos的启动过程总论 Mesos源码分析(2): Mesos Master的启动之一 Mesos源码分析(3): Mesos Master的启动之二 Mesos源码分析 ...

  9. Mesos源码分析(11): Mesos-Master接收到launchTasks消息

    根据Mesos源码分析(6): Mesos Master的初始化中的代码分析,当Mesos-Master接收到launchTask消息的时候,会调用Master::launchTasks函数.   v ...

随机推荐

  1. STM32F0使用LL库实现Modbus通讯

    在本次项目中,限于空间要求我们选用了STM32F030F4作为控制芯片.这款MCU不但封装紧凑,而且自带的Flash空间也非常有限,所以我们选择了LL库实现.本篇将说明基于LL实现USART通讯. 1 ...

  2. codeblocks 配置 opengl 编程宝典 的 gltools 环境

    懒得多说,亲测,这个问题,csdn 和 cnblog 上的博客真的没有一个能解决的. 这个帖子2L的答案则完美解决了问题,虽然步骤有些繁琐,过程还是英文,但考虑到了可能出现的各种问题,跟着走一遍就完美 ...

  3. MySQL----下载安装

    MySQL 的官网下载地址:http://www.mysql.com/downloads/ 注意 1. MySQL Community Server 社区版本,开源免费,但不提供官方技术支持.2. M ...

  4. git 随笔(随时更新)

    w:跳到下个词前面, e:跳到下个词后面,b是跳到上一个单词前面. v:选择 ,可以批量操作 q + a:  录制宏, a 是存录制地方,q录制完毕. @a :执行录制操作. @a 前面➕数字:例如1 ...

  5. Android真机测试,连接到本地服务器的方法

    1. 前言 作为一名Android开发者,不管怎么说,都会经历使用Android真机来测试连接本地服务器这样的事情.这里所说的“本地服务器”大多数时候指的是:搭载有某种服务器软件的PC,例如搭载有To ...

  6. MySQL 笔记(Mysql 8.0.16)

    用户登陆 mysql -u user_name -p 修改密码 ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password'; 关闭服务 D:\ ...

  7. Redis 学习目录

    Redis in .NET Core 入门 Redis实战 - 1.String和计数器 Redis实战 - 2.list.set和Sorted Set Redis实战 - 4.Key Redis实战 ...

  8. 利用MMdnn对比keras和mxnet

    关键字 MMdnn,keras,mxnet,resnet50 需求:想测试一下keras下model转到MXNet框架下对于同一张图片各中间层输出结果有什么差异. 一. 前期准备 1. 依赖库的选择 ...

  9. 2018-2019 20165235 网络对抗技术 Exp0:kali的安装

    2018-2019 20165235 网络对抗技术 Exp0:kali的安装 安装kali 在官网上https://www.kali.org/下载kali 下载之后进行解压 打开VMware-> ...

  10. Thread类和Runnable接口实现多线程--2019-4-18

    1.通过Thread实现 public class TestThread extends Thread{ public TestThread(String name) { super(name); } ...