Mesos原理与代码分析(3): Mesos Master的启动之二

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

?

对应的代码如下:


// Initialize firewall rules.

if (flags.firewall_rules.isSome()) {

vector<Owned<FirewallRule>> rules;

?

const Firewall firewall = flags.firewall_rules.get();

?

if (firewall.has_disabled_endpoints()) {

hashset<string> paths;

?

foreach (const string& path, firewall.disabled_endpoints().paths()) {

paths.insert(path);

}

?

rules.emplace_back(new DisabledEndpointsFirewallRule(paths));

}

?

process::firewall::install(move(rules));

}

?

对应的命令行参数如下:

?

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

?

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

?

?

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

?

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

?

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

?


synchronized (firewall_mutex) {

// Don‘t use a const reference, since it cannot be guaranteed

// that the rules don‘t keep an internal state.

foreach (Owned<firewall::FirewallRule>& rule, firewallRules) {

Option<Response> rejection = rule->apply(socket, *request);

if (rejection.isSome()) {

VLOG(1) << "Returning ‘"<< rejection.get().status << "‘ for ‘"

<< request->url.path << "‘ (firewall rule forbids request)";

?

// TODO(arojas): Get rid of the duplicated code to return an

// error.

?

// Get the HttpProxy pid for this socket.

PID<HttpProxy> proxy = socket_manager->proxy(socket);

?

// Enqueue the response with the HttpProxy so that it respects

// the order of requests to account for HTTP/1.1 pipelining.

dispatch(

proxy,

&HttpProxy::enqueue,

rejection.get(),

*request);

?

// Cleanup request.

delete request;

return;

}

}

}

?

时间: 2024-08-11 12:44:01

Mesos原理与代码分析(3): Mesos Master的启动之二的相关文章

Mesos原理与代码分析(2): Mesos Master的启动之一

Mesos Master的启动参数如下: /usr/sbin/mesos-master --zk=zk://127.0.0.1:2181/mesos --port=5050 --log_dir=/var/log/mesos --hostname=192.168.56.101 --hostname_lookup=false --ip=192.168.56.101 --quorum=1 --registry=replicated_log --work_dir=/var/lib/mesos/maste

Mesos原理与代码分析(4) Mesos Master的启动之三

3. ModuleManager::load(flags.modules.get())如果有参数--modules或者--modules_dir=dirpath,则会将路径中的so文件load进来 ? 代码中加载模块的代码如下 ? 对应的命令行参数如下: ? ? 都可以写什么Module呢? ? 首先是Allocator ? 默认是内置的Hierarchical Dominant Resource Fairness allocator ? 要写一个自己的Allocator: 通过--module

Mesos原理与代码分析(5): Mesos Master的启动之四

? 5. Create an instance of allocator. ? 代码如下 ? Mesos源码中默认的Allocator,即HierarchicalDRFAllocator的位置在$MESOS_HOME/src/master/allocator/mesos/hierarchical.hpp,而DRF中对每个Framework排序的Sorter位于$MESOS_HOME/src/master/allocator/sorter/drf/sorter.cpp,可以查看其源码了解它的工作原

免费的Lucene 原理与代码分析完整版下载

Lucene是一个基于Java的高效的全文检索库.那么什么是全文检索,为什么需要全文检索?目前人们生活中出现的数据总的来说分为两类:结构化数据和非结构化数据.很容易理解,结构化数据是有固定格式和结构的或者有限长度的数据,比如数据库,元数据等.非结构化数据则是不定长或者没有固定格式的数据,如图片,邮件,文档等.还有一种较少的分类为半结构化数据,如XML,HTML等,在一定程度上我们可以将其按照结构化数据来处理,也可以抽取纯文本按照非结构化数据来处理.非结构化数据又称为全文数据.,对其搜索主要有两种

mesos支持gpu代码分析以及capos支持gpu实现

这篇文章涉及mesos如何在原生的mesoscontainerizer和docker containerizer上支持gpu的,以及如果自己实现一个mesos之上的framework capos支持gpu调度的实现原理,(capos是hulu内部的资源调度平台 refer to https://www.cnblogs.com/yanghuahui/p/9304302.html). mesos slave在启动的时候需要初始化containerizer的resource,包含cpu/mem/gpu

WordPress HOOK机制原理及代码分析

WordPress强大的插件机制让我们可以自由扩展功能.网上对插件的使用以及开发方法都有大量资料可以查询. 今天我们就分析一下四个主要函数的代码,包括: add_action.do_action.add_filter.apply_action. 一.add_action和add_filter 为什么把这两个函数放在一起讲呢?其实我们看看add_action函数的定义(图一)就可以知道,其实跟add_filter是同一个函数,执行的是相同的操作.只是把action和filter区分开,让开发者能更

Openvswitch原理与代码分析(6):用户态流表flow table的操作

当内核无法查找到流表项的时候,则会通过upcall来调用用户态ovs-vswtichd中的flow table. 会调用ofproto-dpif-upcall.c中的udpif_upcall_handler函数. static void * udpif_upcall_handler(void *arg) { ????struct handler *handler = arg; ????struct udpif *udpif = handler->udpif; ? ????while (!latc

Openvswitch原理与代码分析(1):总体架构

一.Opevswitch总体架构 Openvswitch的架构网上有如下的图表示: 每个模块都有不同的功能 ovs-vswitchd 为主要模块,实现交换机的守护进程daemon 在Openvswitch所在的服务器进行ps aux可以看到以下的进程 root 1008 0.1 0.8 242948 31712 ? S<Ll Aug06 32:17 ovs-vswitchd unix:/var/run/openvswitch/db.sock -vconsole:emer -vsyslog:err

Lucene原理与代码分析解读笔记

Lucene是一个基于Java的高效的全文检索库. 那么什么是全文检索,为什么需要全文检索? 目前人们生活中出现的数据总的来说分为两类:结构化数据和非结构化数据.很容易理解,结构化数据是有固定格式和结构的或者有限长度的数据,比如数据库,元数据等.非结构化数据则是不定长或者没有固定格式的数据,如图片,邮件,文档等.还有一种较少的分类为半结构化数据,如XML,HTML等,在一定程度上我们可以将其按照结构化数据来处理,也可以抽取纯文本按照非结构化数据来处理. 非结构化数据又称为全文数据.,对其搜索主要