Blog Archives

Serf初体验

随着互联网的发展,尤其是最近几年的移动互联网,能接入网络的设备越来越多,访问量也越来越大,这也就需要越来越多的服务器,所以说现在IT公司的运维也发生了很大的变化。随之而来的是各种运维相关的理念、工具层出不穷。即使不做运维,你也总该听说过DevOps、Puppet、Chef这些东西吧。不过这里我们来介绍一个叫做Serf的东西。 Serf是什么呢,按照官方定义: Serf is a service discovery and orchestration tool that is decentralized, highly available, and fault tolerant. 即它是一个服务发现,编配(应用集群管理等)工具,它去中心化,高可用并且能故障恢复(容忍)。 Serf使用Gossip协议,采用Go语言编写。 说起Serf,还要再顺便提一下Vagrant这个虚拟机管理用工具,因为这两个工具同出自一家公司:HashiCorp,这家公司还有一个产品交Packer(Packer是一个从配置文件为各种平台创建OS镜像的工具)。 Serf主要是为了解决下面几个问题: ・成员关系(Membership) 可以感知集群中各服务器的状态变化。 ・故障检测和恢复 定期进行Serf agent活性检测,并尝试恢复。 ・事件广播 Serf能在集群中广播各种事件(包括系统定义,用户自定义),你可以通过事件来做各种操作,比如部署,同步配置文件等。 下面我们就来按照它的入门文档简单体验一下吧。 1. 安装 这里不多说了,我的测试环境为HOST:Mac,通过Vagrant(VirtualBox)装了一台Ubuntu(GUEST)。 两个OS里都需要安装Serf软件,去这里下载即可,解压后就是一个可执行文件,直接放到PATH里即可。 注意:按照官方文档,即使是在同一台机器上,也可以启动若干个Serf的代理。不过我这里还是用了两个OS。 2. 配置 需要配置一下HOST和GUEST上的IP地址就行了。 比如HOST:10.10.10.1 GUEST:10.10.10.2

Posted in go, Tech Tagged with: , , , , , ,

【翻译】DockerUI:Go编写的Web版Docker管理工具

原作者:cpw(http://cpw.hatenadiary.jp/about ) 原文:http://cpw.hatenadiary.jp/entry/2013/08/29/225457 翻译:刘斌(http://liubin.org) Docker的架构非常优秀,很简单的就可以创建可执行的容器。但是目前的很多操作都是基于CUI的,我在想要不要用Node.js做一个GUI的工具出来呢? Node.js非常有意思,想用它来做点东西。我在调查Docker的时候,发现了DockerUI(https://github.com/crosbymichael/dockerui)这个软件,这不正是我想做的么?本来还想通过做个小东西来学学Node.js呢。。。。先把Node.js放一边,试试DockerUI吧。 安装 DockerUI主页里有安装说明,最简单的方法是直接使用官方制作好的Docker镜像。 $ sudo docker pull crosbymichael/dockerui 由于DockerUI使用了Docker的Remote API,所以也需要做这方面的设置。像下面那样修改/etc/init/dockerd.conf文件,在启动docker守护进程的时候加上-H参数和-api -enable-cors参数。 description “Docker daemon” start on filesystem or runlevel [2345] stop on runlevel [!2345] respawn exec /usr/local/bin/docker -d -H=”unix://var/run/docker.sock” -H=”tcp://172.16.35.134:4243″ -api-enable-cors 修改配置文件后需要重启一下dockerd服务。 $ sudo stop dockerd $

Posted in Docker, go, Tech Tagged with: ,

【翻译】基于Docker的Rails集群+Ruby负载均衡代理

原作者:Muriel Salvan 原文地址:http://x-aeon.com/wp/2014/02/06/rails-cluster-with-ruby-load-balancer-using-docker/ 翻译:liubin (http://liubin.org/) 最近我发现了 Docker 这个东西。 并且我在 2014年2月的rivierarb的meet up 上做了一次演讲,资料可以在slideshare上下载(文档下载地址 https://speakerdeck.com/murielsalvan/ruby-and-docker-on-rails slideshare:http://www.slideshare.net/MurielSalvan/ruby-and-docker-on-rails,需翻墙)。 我打算做一个比较酷的使用Docker的例子:一个Rails集群,以及集群前面的一个Ruby负载均衡服务。我曾想过使用若干不同的机器(每台机器都有自己的IP地址和端口)来运行同样的Rails服务,然后在外部配置一台负载均衡的代理服务器,在各Railf服务之间进行请求分配。 不过使用Docker的话,在一台机器上就可以模拟集群环境了。 这里我们将演示一下如何来创建这个集群环境。 你可以从我的Github项目上下载所有这次测试的源代码。 创建Docker镜像 首先我将创建两个Docker镜像,1个用来运行Rails服务,1个运行Ruby代理服务。 1. 首先我制作了一个可信Docker构建(Trusted Docker build),构建脚本也在我的Github上( Github project docker-ruby )。使用这个构建脚本创建的镜像为 murielsalvan/ruby ,它基于Ubuntu Precise,并且安装了Ruby 2.1.0p0。 docker pull murielsalvan/ruby 2. 接着我基于murielsalvan/ruby来创建一个Docker容器,用来执行一个bash shell,然后在里面安装Rails并创建一个Rails应用程序。这个应用程序只有一页,它将打印出它所在服务器的主机名和IP地址(集群里的每台Rails服务都有不同的主机名和IP地址)。你可以从这里查看这个测试程序的源代码。这步的最后,我将把这个容器提交,生成一个新的镜像,并命名为murielsalvan/server,这个镜像执行的时候,会启动Rails服务,并监听3000端口号(容器内的端口号)。 docker run -t -i murielsalvan/ruby bash docker commit

Posted in go, Rails, Ruby, Tech, Web Tagged with: , ,

在Mac OS X下使用Docker 0.8安装Ruby环境

前不久(2014年2月4日)Docker 0.8发布了,对OS X的支持也更好了。由于Docker基于LXC技术,所以非Linux内核的系统很难使用Docker,如果想用的话,必须要装虚拟机软件来模拟运行Linux。不过OS X怎么说也是基于BSD的,跟Linux即使算不上兄弟,也算近亲吧。下面我们就按照官方文档来试着在Mac 下用一下Docker吧。 (实际上还是用到了虚拟机:-() 在本文里我们将完成两部分工作:  在最新版的Mac OS X下安装Docker 0.8  创建一个安装了Ruby 2.1的镜像,并且发布到官网仓库(index服务) 本文将不会涉及到docker各命令的具体说明。 1. 安装VirtualBox 这是前提条件,请到 https://www.virtualbox.org/wiki/Downloads 下载并安装VirtualBox,这里就不多说了。 2. 安装 boot2docker 一个非常精简的Linux发布版本。 $ curl https://raw.github.com/steeve/boot2docker/master/boot2docker > boot2docker $ chmod +x boot2docker $ sudo cp boot2docker /usr/local/bin 或者随便放到哪里。如果不加到PATH里,运行的时候要记得写全路径。 $ which

Posted in go, Tech Tagged with: , , , , , , ,

go语言中的cookie处理

本例子主要是演示go语言中关于cookie处理的几个函数,也可以在这里下载 有几点需要注意的,先提前列出来: 往客户端写入cookie,需要往respose里写,而不是request,这个很容易混淆,因为request有AddCookie方法,这个看起来就很吸引人使用。而往response的方法是http包里的函数SetCookie 。实际上,request的AddCookie是把http当做客户端的时候使用的。 写cookie需要在往response里写入body前进行。特别要注意这个时机问题。 删除cookie通过设置cookie的MaxAge为负数来实现。 全部代码如下(请从这里取得最新代码) 测试的话请运行此程序然后在浏览器确认。

Posted in go, Tech

无觅相关文章插件,快速提升流量