在阿里云内搭建高可用的Kubernetes集群

本文完整地记录下了在阿里云内网构建一个高可用Kubernetes集群的过程。

硬件资源

类型 名称 备注
ECS master-001 ip: 192.168.100.1
ECS master-002 ip: 192.168.100.2
ECS master-003 ip: 192.168.100.3
ECS worker-001 ip: 192.168.100.4
SLB internal-slb ip: 192.168.200.1 内网SLB,内网流量入口
SLB public-slb ip: 100.100.100.100 公网SLB,外网流量入口
ECS haproxy-001 ip: 192.168.110.1 HAProxy集群,不部署kubernetes节点(下文详细说明)
ECS haproxy-002 ip: 192.168.110.2

Read More

分布式系统基础知识

CAP定理

布鲁尔定理,它指出对于一个分布式计算系统来说,不可能同时满足一下三点:

  • 一致性(Consistency): 所有节点访问同一份最新的数据副本
  • 可用性(Availability):每次请求都能获取到非错的响应-但是不保证获取的数据为最新数据
  • 分区容错性(Partition tolerance):系统如果不能在时限内达成数据一致性,就意味着发生了分区的情况,必须就当前操作在C和A之间做出选择

Read More

Ultron使用手册

1. 开发背景

在一次与其他压测工具比较的过程中,我无意发现之前使用的Locust有致命的性能问题:对于极快的GET接口,其产生的压力比AB、JMeter等少了几个量级,再加上我本身不满因Locust使用Python开发只能利用单核而导致经常需要多实例部署的情况,我决定利用Golang原生的高并发能力来重写一个压测工具。

我希望它满足以下特性:

  1. 单实力高并发能力
  2. 支持分布式部署
  3. 支持接入多种协议
  4. 脚本层面借鉴Locust的方式,高度的定制化能力

Read More

Python接口测试实战02 - 接口测试的本质

在上一篇简单的介绍了接口测试里用到的工具、类库后,本篇正式开始讲用Python进行接口测试实战。

1. 从一个登录接口了解接口调用的方法

现在假设有一个登录接口POST /api/login,该接口有两个入参usernamepassword,分别表示帐号的用户名以及密码,那该如何调用该接口呢?

以下该登录接口都以一个临时的url:http://requestbin.qahub.net/z3m6v8z3来替代

1.1 curl做接口调用:

先用curl来做一个简单的例子:

Read More