Skip to content

openresty横向扩展方案

横向扩展方案

  • 专业的负载均衡器+多个openresty实例

    可以在openresty前面部署一个专业的负载均衡器(如HAProxy、LVS等),该负载均衡器负责将请求分发到多个openresty实例上。

  • CDN+多个openresty源站地址

    CDN回源策略配置:CDN服务商允许用户设置多个源站IP地址作为回源地址。这些源站IP可以添加到CDN的DNS设置中,每个源站IP可以具有不同的域名或CNAME记录。用户可以根据需要,以换行符等格式分割多个源站的IP,并配置CDN以轮询或其他策略来从这些源站中获取资源。

  • DNS轮询技术+多个openresty实例

    在传统的DNS解析中,一个域名通常对应一个IP地址。但通过DNS轮询技术,可以实现一个域名对应多个IP地址。DNS服务器在接收到对该域名的解析请求时,会按照一定的顺序(如轮询方式)返回这些IP地址。客户端(如浏览器)在访问该域名时,会依次尝试这些IP地址,从而实现请求的分散和负载的均衡。

DNS轮询技术+多个openresty实例

实验说明

此实验基于kubernetes使用无头服务实现DNS轮询多个openresty实例效果。

实验配置

  • k8s master虚拟机centOS8-stream,4核(无限制CPU)+8G内存
  • 3台k8s worker虚拟机centOS8-stream,2核(最高4400MHz CPU频率)+4G内存
  • 1台k8s worker虚拟机centOS8-stream(专门用于运行openresty辅助性能测试目标,注意:k8s中每个openresty pod CPU被限制为100m毫核),8核(无限制CPU)+8G内存

实验结果

  • 1个openresty pod并且CPU被限制为100m毫核时,QPS约为1500次/s
  • 3个openresty pod并且CPU分别被限制为100m毫核时,请求被均衡分发到两个openresty pod中,QPS约为4800次/s

实验结论

  • 成功模拟横向扩展openresty会提升QPS,并且QPS提升和增加的openresty pod个数成正比。

实验步骤

  1. 搭建基于kubernetesopenresty性能测试协助目标并修改其CPU资源限制为100m毫核,详细搭建步骤请参考 链接

    yaml
    containers:
       - name: demo-perf-assistant-target-openresty-dev
         image: registry.cn-hangzhou.aliyuncs.com/future-public/demo-perf-assistant-target-openresty-dev
         imagePullPolicy: IfNotPresent
         resources:
          limits:
           cpu: 100m
         env:
         - name: "TZ"
           value: "Asia/Shanghai"
  2. 搭建并配置jmeter分布式压测集群,详细搭建和配置步骤请参考 链接,注意:需要配置openresty服务为无头服务添加clusterIP: None

    yaml
    apiVersion: v1
    kind: Service
    metadata:
     name: openresty
    spec:
     clusterIP: None
     type: ClusterIP
     selector:
      app: openresty
     ports:
      - name: http
        port: 80
        targetPort: 80
      - name: prometheus
        port: 9145
        targetPort: 9145

专业的负载均衡器+多个openresty实例

实验说明

此实验基于kubernetes使用非无头的ClusterIP服务实现专业的负载均衡器代理多个openresty实例效果。

实验配置

同上。

实验结果

同上。

实验结论

同上。

实验步骤

同上。注意:不需要配置openresty服务为无头服务。

CDN+多个openresty源站地址

注意:没有环境做实验,但是可以预测实验结果和“专业的负载均衡器+多个openresty实例”一致。