分类目录归档:系统/应用

这里主要是与系统有关的、与软件使用有关的内容。

[翻译]为Kubernetes创建自定义Pod水平扩展器

原文链接:Building your own horizontal pod autoscaler for Kubernetes

当前版本(1.3)的Kubernetes为在生产环境中平滑运行容器化应用提供了大量开箱即用的特性。不过一些特性依然不够完善,比如Pod水平扩展器(Horizontal pod autoscaler, HPA)。现在你只能根据CPU和内存使用水平进行扩容调度,自定义指标的调度目前仅在Alpha版本中支持。

我们其中一个应用是一个Websocket服务器,用来处理来自客户端的长连接。然而性能测试显示我们的应用最大可以承载大约25000个Websocket活跃连接,更多的连接数会导致服务器不稳定甚至崩溃,然而这时通常不会引起CPU负载的升高和内存开销的增长。所以让Kubernetes根据Websocket连接数进行扩展调度的需求应运而生。本文介绍了我们创建自定义水平扩展器(HPA)的一些实践。

继续阅读

HTTP/2升级小记

最近H5被插广告愈演愈烈,于是打算给H5增加HTTPS支持。既然都支持了HTTPS,那么HTTP/2也就顺便来支持一下好了,反正SSL证书已经不是问题了。

我们是全容器环境,包括前端机在内,全部跑在容器里,更新前端nginx容器配置即可。Nginx从1.9.5版本开始支持HTTP/2的,查了一下满足条件。从HTTPS到HTTP/2,只需要:

即可。

但是会有一些问题。协议协商包括NPN和ALPN两种,NPN是SPDY时代的产物,HTTP/2定稿时已经被ALPN取代。我们的目标是支持HTTP/2,因此务必支持ALPN。 继续阅读

[翻译]如何在Docker中使用Open vSwitch创建跨主机的容器网络

翻译自原文:http://openvswitch.org/support/dist-docs/INSTALL.Docker.md.txt

本文介绍了如何使用Open vSwitch为Docker 1.9.0及以后版本提供网络支持。操作前请先确认你已经按照[INSTALL.md] 编译,或者通过包管理器安装了Open vSwitch。关于如何安装Docker,请参考www.docker.com上提供的介绍。

Docker从1.9.0版本之后提供了跨主机的网络支持。通过将Docker和Open vSwitch整合,则可以利用Open vSwitch virtual network (OVN)进行互联互通。
继续阅读

Docker技术入门

关注Docker这项技术差不多一年多了,最近关于Docker的使用案例越来越多,于是就想动手实验下这项技术。自己整理了一个入门手册,分享给大家。

Docker是什么

Docker是一种容器技术,它可以将应用和环境等进行打包,形成一个独立的,类似于iOS的APP形式的“应用”,这个应用可以直接被分发到任意一个支持Docker的环境中,通过简单的命令即可启动运行。Docker是一种最流行的容器化实现方案。和虚拟化技术类似,它极大的方便了应用服务的部署;又与虚拟化技术不同,它以一种更轻量的方式实现了应用服务的打包。使用Docker可以让每个应用彼此相互隔离,在同一台机器上同时运行多个应用,不过他们彼此之间共享同一个操作系统。Docker的优势在于,它可以在更细的粒度上进行资源的管理,也比虚拟化技术更加节约资源。

 vm-vs-docker-architecture虚拟化和Docker架构对比,来自Docker官网

继续阅读

Mac OS X安装PHP扩展支持

最近升级到了Mac OS X 10.10 Yosemite版本,系统的PHP环境也跟着升级了,从原来的5.4升级到了5.5.14。开发系统中的一些PHP扩展库全都木有了,需要重新安装。现在记录一下这个,以备查询。

安装PHP扩展要求你的Mac系统已经安装了Xcode环境和命令行开发工具,如果还没安装,请先使用Shell安装。

为了扩展管理方便,首先来安装pecl扩展管理器。

继续阅读

Ubuntu Linux 服务器搭建OpenVPN服务器

话说,最近在学校做毕设,寝室的ChinaNet被学校水产了,说是要登记才能使用。自己试验的时候发现,登录成功后,几十秒内还可访问网页,之后网页就上不去了,显示连接被重置(是不是像某墙?),但是QQ神马的依然可以正常使用,而且已经建立的TCP长连接不会被中断。于是考虑服务器端针对TCP的三次握手进行了攻击,导致无法正常访问网页。之前记得VPN常用的拨号方式主要有PPTP、L2TP和OpenVPN,后两种方式支持底层使用UDP方式通讯。在Linux上,开源社区的OpenVPN自然是不二的选择。

配置OpenVPN的步骤,大致包括两部分,首先是服务器端的OpenVPN服务,其次是客户端的OpenVPN软件。首先我们在Ubuntu 10.04 TLS上配置OpenVPN服务器端。

继续阅读

开源的下载工具wxDownload Fast中文汉化包

在公司电脑上是不可以安装未授权的商业软件的,之前一直用下载吧提供的IDM,应该不可以使用的,于是求助于开源社区。最先尝试了Linux下早有名气的MutiGet,但是Windows版本功能简直就是坑爹!在开源中国发现了wxDownload Fast下载工具,兼容Windows/Linux/Mac OSX平台,试了下下载速度和“抢带宽”的能力,和IDM不相上下。不错,就选择它了!

界面很简单,功能比较全面,但可惜只有英文版。自己利用闲暇,就顺手给它汉化了下。其实这个很容易做,开源社区的软件通常使用gettext库实现本地化,只需要创建合适的翻译库即可。

好了,废话不多说了,有图有真相,翻译率在95%左右。

继续阅读

Hadoop安装部署笔记

最近一直在看Hadoop分布式计算框架,也打算在这个基础之上做一些简单的应用研究。在研读了一些Hadoop相关的论文之后,发现做理论研究的一般都很少提及Hadoop的安装与搭建。作为一个实践派的骨灰级粉丝,我决定从搭建Hadoop环境开始认识这个仅仅0.2的版本号就能被推上神坛的分布式计算框架。

查阅了一些资料,发现Hadoop似乎只支持在Linux上部署生产环境,如果在Windows下部署开发调试环境,也需要Cygwin的支持。首先,搭建Linux环境。我选用的Linux发行版是Ubuntu Server 10.4 LTS版本。虽然11.10已经释出,但是基于稳定性的考虑,还是使用LTS(Long Time Support)版本。

Hadoop允许用户使用三种不同的部署方式:

  • 单机部署
  • 伪分布式部署
  • 分布式部署

为了全面体验Hadoop的特性,了解在生产环境下部署Hadoop可能遇到的问题,我悍然选择第三种部署方式。这种部署方式至少需要两台电脑,即一个NameNode和一个DataNode。我选用了一个Name节点和两个Data节点的部署方式。首先启动VMWare,建立一个虚拟机,安装Ubuntu Server 11.04。像大多数部署Ubuntu环境一样,选择最基本环境,外加OpenSSH,大约20分钟左右,即可安装成功。
继续阅读

Linux下定时切割Nginx访问日志并打包压缩的Shell脚本

之前写过这篇文章,但是由于上次的数据丢失故障这篇日志没有了。于是我又重新写了这个脚本,再次贴出来,给大家。

继续阅读