zoukankan      html  css  js  c++  java
  • Mesos源码分析(3): Mesos Master的启动之二

    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. }

     

  • 相关阅读:
    npm tip: go to the package's home page
    centos7在Evolution中配置163邮箱,被阻止收件解决方法
    emacs-显示行号以及跳转到指定行
    2020年学习目标之一——emacs
    学习前端的时候,突然想起了Sharepoint母版页里的占位符,算知识的融会不?
    问题记录--jekyll serve 启动的时候如何指定80端口
    为什么总是无法访问VMware内的web服务?
    python开发目录合并小工具 PathMerge
    python计算文件的md5值
    python+selenium 简单尝试
  • 原文地址:https://www.cnblogs.com/popsuper1982/p/5700147.html
Copyright © 2011-2022 走看看