文章归档

zookeeper原理和实现

zookeeper比较重要的几篇论文:

  1. ZooKeeper’s atomic broadcast protocol: Theory and practice
  2. Zab: High-performance broadcast for primary-backup systems
  3. ZooKeeper: Wait-free coordination for Internet-scale systems
  4. 官方资料:http://zookeeper.apache.org/doc/trunk/

»» 继续阅读全文

Net::FTP与net_cls端口隔离

最近发现一个问题,部署脚本在下载部署包的时候总是报如下错误:

Can't call method "sockport" on an undefined value at /usr/lib/perl5/5.8.5/Net/FTP.pm line 837.

这个部署脚本是用perl语言写的,通过ftp的方式来下载数据包。经过调试后发现,原来是开启了net_cls子系统并设置端口隔离造成的。因为Net::FTP模块总是默认以主动模式来接受数据,什么是主动模式呢?

FTP有两种使用模式:主动和被动。主动模式要求客户端和服务器端同时打开并且监听一个端口以创建连接。在这种情况下,客户端由于安装了防火墙会产生一些问题。所以,创立了被动模式。被动模式只要求服务器端产生一个监听相应端口的进程,这样就可以绕过客户端安装了防火墙的问题。

Net::FTP在接收数据的时候会使用bind(0)的方式监听一个临时端口,让后把这个端口告诉服务器,服务器会与这个端口创建一个新的连接传输数据。问题在于,这个容器内设置了net_cls.bind_port_range,而端口0并不在这个范围之内,所以导致Net::FTP异常。

大规模分布式系统的设计和部署实践

论文  http://mvdirona.com/jrh/talksAndPapers/JamesRH_Lisa.pdf

这篇论文主要从面向运维友好的角度,思考了大规模分布式系统的设计和部署相关的一些原则和最佳实践。

总体设计原则

We have long believed that 80% of operations issues originate in design and development, so this section on overall service design is the largest and most important.

When systems fail, there is a natural tendency to look first to operations since that is where the problem actually took place. Most operations issues, however, either have their genesis in design and development or are best solved there.

对服务整体设计影响最大的一些运维友好的基本原则如下:

  1. Keep things simple and robust
  2. Design for failure

一些更具体的设计运维友好的服务的最佳实践如下:

    »» 继续阅读全文

freezer在内核2.6.32和3.10的区别

今天看了一下内核3.10的代码,对比之前看过的2.6.32的代码,cgroup里freezer子系统的行为差别还是很大的,主要有2个:

  1. freezer处于冻结状态下进程是否仍然可以attach进来,2.6是不行的,但3.10允许
  2. freeze单个cgroup变成freeze掉cgroup以及它的所有后裔

在2.6内核里,当一个进程尝试加入某个freezer控制组时,内核会检查当前freezer cgroup的状态,如果状态为FROZEN或者FREEZING等,则不允许进程加入。但是在3.10里,这个限制去掉了,不管当前freezer cgroup的状态如何,都允许进程加入。

在接口的实现上,2.6内核只提供了can_attach()函数,3.10只提供了freezer_attach() 函数,正常流程上来说,进程在attach某个cgroup的时候,内核会先调用当前cgroup上所有子系统的can_attach()检查一下,当且仅当所有的子系统can_attach()成功时才允许进程加入当前cgroup,然后内核调用freezer子系统的freezer_attach()接口完成attach工作。

»» 继续阅读全文

Borg: google 集群操作系统

论文地址:http://research.google.com/pubs/pub43438.html

1. Introduction

google服务器集群的管理系统,类似于百度的Matrix,阿里的fuxi,腾讯的台风平台等等,还有开源的mesos

Borg provides three main benefits: it

  1. hides the details of resource management and failure handling so its users can focus on application development instead;
  2. operates with very high reliability and availability, and supports applications that do the same; and
  3. lets us run workloads across tens of thousands of machines effectively.

»» 继续阅读全文