奇妙的 Linux 世界

种一棵树最好的时间是十年前,其次是现在。

如何有效学习一门外语

在这个技术高速发展的时代,新技术日新月异、层出不穷。而这些新技术基本上都是外国人开发的,并且提供的文档通常只有英文的。如果想在第一时间掌握到最新的资讯或是解决遇到的问题,满屏的英文认识的单词没几个,这个时候会不会有种书到用时方恨少的感觉。 今天给你推荐一款学习外语的神器「Rosetta Stone」,这个软件是我从一篇「告诉你外语学习的真实方法及误区分析」文章中得知的。此文是一篇对外语学习非......

MySQL 正式发布高可用架构 MySQL InnoDB Cluster

MySQL的高可用架构无论是社区还是官方,一直在技术上进行探索,这么多年提出了多种解决方案,比如MMM、 MHA、NDB Cluster、Galera Cluster、InnoDB Cluster、PhxSQL、MySQL Fabric。 最近Oracle的MySQL团队发布了InnoDB Cluster的GA(General Availability)版本。 MySQL InnoDB Cl......

Apache Mesos 入门

Apache Mesos诞生于UC Berkeley的一个研究项目,现已成为Apache Incubator中的项目。Apache Mesos把自己定位成一个数据中心操作系统,它能管理上万台的从机。Framework相当于这个操作系统的应用程序,每当应用程序需要执行,Framework就会在Mesos中选择一台有合适资源(cpu、内存等)的从机来运行。 Apache Mesos使用ZooKe......

通过 MacVLAN 实现 Docker 跨宿主机互联

Docker以前的版本不支持直接配置宿主机所在网段ip并跟其直接互通的功能,当然也可以借助一些第三方工具,如pipework把这些琐碎的过程封装起来。Docker从1.12开始支持了overlay和macvlan网络,macvlan已经可以直接支持了使用宿主机所在网段资源。 Macvlan工作原理 Macvlan是Linux内核支持的网络接口。要求的Linux内部版本是v3.9–3.19和......

使用 Weave 实现 Docker 多宿主机互联

Weave是由weaveworks公司开发的解决Docker跨主机网络的解决方案,它能够创建一个虚拟网络,用于连接部署在多台主机上的Docker容器,这样容器就像被接入了同一个网络交换机,那些使用网络的应用程序不必去配置端口映射和链接等信息。 外部设备能够访问Weave网络上的应用程序容器所提供的服务,同时已有的内部系统也能够暴露到应用程序容器上。Weave能够穿透防火墙并运行在部分连接的网......

Docker 跨主机通信解决方案探讨

Docker容器技术正在被企业应用在越来越多的领域中,比如快速部署环境、简化基础设施的配置流程等等。 当你开始在真实的生产环境使用Docker容器去部署应用系统时,你可能需要用到多个容器部署一套复杂的多层应用系统,其中每个容器部署一个特定的应用系统。 此时可能就会遇到如下问题:有多台宿主机,我们事先不知道会在哪台宿主机上创建容器,如何保证在这些宿主机上创建的容器们可以互相联通? 关于SDN......

Flannel 原理简析及安装

flannel是CoreOS提供用于解决Dokcer集群跨主机通讯的覆盖网络工具。它的主要思路是:预先留出一个网段,每个主机使用其中一部分,然后每个容器被分配不同的ip;让所有的容器认为大家在同一个直连的网络,底层通过UDP/VxLAN等进行报文的封装和转发。 flannel项目地址:https://github.com/coreos/flannel flannel架构介绍 flannel默......

基于 DNS 动态发现方式部署 Etcd 集群

使用discovery的方式来搭建etcd集群方式有两种:etcd discovery和DNS discovery。在 「基于已有集群动态发现方式部署etcd集群」一文中讲解了etcd discovery这种方式,今天我们就来讲讲DNS discovery这种方式的实现。 etcd在基于DNS做服务发现时,实际上是利用DNS的SRV记录不断轮训查询实现的。DNS SRV是DNS数据库中支持的......

使用 Nginx 实现灰度发布

灰度发布是指在黑与白之间,能够平滑过渡的一种发布方式。AB test就是一种灰度发布方式,让一部分用户继续用A,一部分用户开始用B,如果用户对B没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到B上面来。 灰度发布可以保证整体系统的稳定,在初始灰度的时候就可以发现、调整问题,以保证其影响度。 灰度发布常见一般有三种方式: Nginx+LUA方式 根据Cookie实现灰度发布 根据来路I......

基于已有集群动态发现方式部署 Etcd 集群

etcd提供了多种部署集群的方式,在「通过静态发现方式部署etcd集群」 一文中我们介绍了如何通过静态发现方式部署集群。 不过很多时候,你只知道你要搭建一个多大(包含多少节点)的集群,但是并不能事先知道这几个节点的ip,从而无法使用--initial-cluster参数。 这个时候,你就需要使用discovery的方式来搭建etcd集群。discovery方式有两种:etcd discove......