博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Mesos源码分析(3): Mesos Master的启动之二
阅读量:5234 次
发布时间:2019-06-14

本文共 1565 字,大约阅读时间需要 5 分钟。

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

 

转载于:https://www.cnblogs.com/popsuper1982/p/5700147.html

你可能感兴趣的文章
c# mouseenter mousemove区别?
查看>>
IDEA 打开多个项目
查看>>
Java——数据结构(链表)
查看>>
数据库列名使用了关键字怎么办?
查看>>
Linux Shell 通配符、元字符、转义符使用实例介绍
查看>>
Log4j配置详解
查看>>
ACE中对于不同类型数据的最大值最小值管理ACE_Numeric_Limits
查看>>
Json 解析的三个分析网站
查看>>
Q文件无刷新上传插件下载及介绍
查看>>
C语言中的转义字符
查看>>
windows2008 r2 时间同步命令
查看>>
学习笔记之01-C语言概述
查看>>
codeforces 31C Schedule 解题报告
查看>>
Centos7 手动编译 RabbitMQ ,并安装php amqp
查看>>
Can't locate Params/Validate.pm in @INC (@INC contains: /usr/local/lib64/perl5 /
查看>>
航空连接器、端子
查看>>
web-场景说明
查看>>
Django模板
查看>>
Python--面向对象进阶
查看>>
信号振铃是怎么产生的------转自于余博士
查看>>