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. memset函数的实现&printf函数几种输出格式的输出结果

    #include<stdio.h> #include<stdlib.h> void *memmset(void *dest, int ch, int count){ void ...

  2. wxpy使用

    一 简介 wxpy基于itchat,使用了 Web 微信的通讯协议,,通过大量接口优化提升了模块的易用性,并进行丰富的功能扩展.实现了微信登录.收发消息.搜索好友.数据统计等功能. 总而言之,可用来实 ...

  3. git 工作总计

    # git 工作总计 1 首先先克隆了git地址 master 分子 (这个做一次) 以后循环做的 2:git checkout -b dev 创建了临时开发的dev 分子 3:修改dev 分子的数据 ...

  4. nginx 常用命令

    -?,-h         : this help  -v            : show version and exit  -V            : show version and c ...

  5. kafka单机搭建,并测试api

    所用环境: kafka_2.-.gz centos 6.9 nat动态ip 准备工作: ().将防火墙关闭 service iptables stop 临时关闭 chkconfig iptables ...

  6. BeautifulSoup4库

    BeautifulSoup4库 和lxml一样,Beautiful Soup也是一个HTML/XML的解析器,主要的功能也是如何解析和提取 HTML/XML数据.lxml只会局部遍历,而Beautif ...

  7. Cesium 中由 Logarithmic Depth Buffer 引起的模型显示不完整的问题

    当 Cesium 单个模型过长时,会遇到某些视角模型显示不完整的问题,如下图所示: 经过在官方论坛上询问,该问题由 viewer.scene.logarithmicDepthBuffer 开启造成,关 ...

  8. C++ this指针

    成员函数不能定义 this 形参,而是由编译器隐含地定义.成员函数的函数体可以显式使用 this 指针,但不是必须这么做.如果对类成员的引用没有限定,编译器会将这种引用处理成通过 this 指针的引用 ...

  9. Emsemble

    RM # -*- coding: utf-8 -*- """ RandomForestClassifier 예 """ import pan ...

  10. ubuntu16.04之mongodb自动备份

    cron服务是Linux的内置服务,但它不会开机自动启动.可以用以下命令启动和停止服务: service cron start service cron stop service cron resta ...