Tengine主动式后端健康检查功能

开源的nginx自带的针对后端节点健康检查功能是比较简单的被动健康检查方式,通过默认自带的ngx_http_proxy_module模块和ngx_http_upstream_module模块中的相关指令来完成当后端节点。若出现故障时,当nginx将请求发给后端服务后,在满足配置的健康检查请求失败次数后,自动切换到健康节点来提供访问。这种被动的方式无法满足高质量访问要求的服务需求。因此,Taobao团队基于Tengine开发出主动后端服务健康检查模块ngx_http_upstream_check_module

阅读全文

Kafka集群搭建

它是一个分布式消息系统,由linkedin使用scala编写,用作LinkedIn的活动流(Activity Stream)和运营数据处理管道(Pipeline)的基础。具有高水平扩展和高吞吐量。它提供了类似于JMS的特性,但是在设计实现上完全不同,此外它并不是JMS规范的实现。kafka对消息保存时根据Topic进行归类,发送消息者成为Producer,消息接受者成为Consumer,此外kafka集群有多个kafka实例组成,每个实例(server)成为broker。

阅读全文

Consul清理脏数据

consul在使用或测试中过程中,可能会产生不少垃圾数据(不健康的服务,没有完成注销动作而遗留在consul内),手动清理比较麻烦,然后自己写了个python脚本来一键清理这些脏数据,分享给大家。

脚本:consul_purge.py

环境依赖:python2、3

阅读全文

Consul集群高可用测试

通过Consul集群的failover测试,我们可以了解到它的高可用工作机制。

consul节点

阅读全文

Consul-Template语法

consul-template解析以Go Template格式编写的文件,如果您不熟悉语法,请阅读Go的文档和示例。除Go提供的模板功能外,Consul Template还提供以下功能。

1. API函数

阅读全文

Consul集群搭建

Consul 是 HashiCorp 公司推出的开源工具,用于实现分布式系统的服务发现与配置。与其他分布式服务注册与发现的方案,Consul的方案更“一站式”,内置了服务注册与发现框 架、分布一致性协议实现、健康检查、Key/Value存储、多数据中心方案,不再需要依赖其他工具(比如ZooKeeper等)。使用起来也较 为简单。Consul使用Go语言编写,因此具有天然可移植性(支持Linux、windows和Mac OS X);安装包仅包含一个可执行文件,方便部署,与Docker等轻量级容器可无缝配合。

阅读全文

Redis cluster集群failover测试

Redis集群支持master节点故障自动failover到从节点,所以集群每个master节点最少保证有一个从节点可用。本次测试用了三个主机,每个节点上均有一个master和slave,详情如下:

redis节点

阅读全文

Redis集群搭建

Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、高性能的Key-Value数据库,并提供多种语言的API。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。

阅读全文

Nginx HTTPS的正反向代理测试

通常情况下,Nginx常用于代理(正向、反向)HTTP请求,最近碰到有项目需求Nginx反向代理HTTPS后端,因为想验证一下Nginx是否正反向均支持HTTPS代理。

测试环境:

  • CentOS7.3_x64
  • nginx-1.14.0

阅读全文

Nginx各类timeout配置详解

nginx访问出现504 Gateway Time-out,一般是由于程序执行时间过长导致响应超时,例如程序需要执行90秒,而nginx默认最大响应等待时间为30秒,这样就会出现超时。通常有以下几种情况导致:

  • 程序在处理大量数据,导致等待超时。
  • 程序中调用外部请求,而外部请求响应超时。

阅读全文