1.文档介绍
1.1系统负载均衡目的
- 提高系统的高可用性、支持高并发。
- 支持灰度发布、不停服务发布。
1.2文档范围
本文档包含以下几个部分:
- 负载均衡设计思想
- 负载均衡部署方案
- 灰度发布方案
2.负载均衡设计思想
2.1 应用负载均衡设计思想
(1)系统增加前置机,所有请求都通过前置机的nginx的反向代理处理来转发。
(2)提取nginx的负载均衡的配置项为单独文件upstream.conf,nginx主配置文件引用负载均衡的配置文件。
(3)配置upstream.conf的负载均衡的模块,利用nginx的负载均衡策略完成应用的负载均衡。
(4)利用nginx的reload命令可以动态配置负载均衡。
2.2微服务的负载均衡设计思想
(1)dubbo已支持负载均衡
3.负载均衡部署方案
3.1负载均衡部署图
3.2负载均衡共享文件部署
(1)多个服务器上传文件在各自服务器,要保证负载均衡访问任何一台服务器的文件是可用的,用共享盘挂载到各自服务器,上传文件统一放到共享盘。
(2)阿里云共享盘可用nas共享。
4. 灰度发布方案
4.1 灰度发布的设计思想
(1)利用dubbo-admin,禁用待发布的一组微服务
(2)前置机增加nginx的负载均衡配置文件upstream1.conf, 配置文件里配置不转发待发布的服务器的应用。利用nginx的reload命令加载upstream1.conf。
(3)上述步骤之后,新请求不会转发到待发布的服务器上的应用和微服务。等
之前的落在待发布的应用和微服务的请求结束后,停止待发布的服务器的应用。
(4)修改待发布的应用和微服务的baseconfig.properties的dubbo.consumer.group、dubbo.provider.group为现在的dubbo组加1
(5)启动待发布的应用和微服务。
(6)利用dubbo-admin,启动发布好的微服务。
(7)前置机增加nginx的负载均衡配置文件upstream2.conf,配置文件配置转发到待发布的服务器的应用。利用nginx的reload命令加载upstream2.conf。
(8)待测试没问题后,停止下组待发布的微服务和应用,发布成功后,利用nginx的reload命令加载upstream.conf,组成负载均衡。