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个数成正比。
实验步骤
搭建基于
kubernetes的openresty性能测试协助目标并修改其CPU资源限制为100m毫核,详细搭建步骤请参考 链接yamlcontainers: - 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"搭建并配置
jmeter分布式压测集群,详细搭建和配置步骤请参考 链接,注意:需要配置openresty服务为无头服务添加clusterIP: NoneyamlapiVersion: 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实例”一致。