JeeSite 快速开发平台
官方网站
    • 平台简介
    • 架构特点
    • 技术选型
    • 功能介绍
    • 安装部署
    • 常见问题
    • 目录结构
    • 更新日志
    • Vue 文档
    • BPM 文档
    • Cloud 文档
V5 演示
Vue 演示
💖联系
  • 我要提意见、文档纠错
  • JeeSite 代码库, 请⭐Star关注
  • JeeSite Vue 代码库, 请⭐关注
  • Spring Cloud 微服务架构
  • JeeSite 手机端/移动端
  • AI + RAG + CMS 人工智能
  • Flowable 中国式工作流
  • OAauth2 统一认证服务器
  • 政务内外网环境中间件
  • 访问 ThinkGem 官方博客
  • 点击进入,下拉查看动态
官方网站
    • 平台简介
    • 架构特点
    • 技术选型
    • 功能介绍
    • 安装部署
    • 常见问题
    • 目录结构
    • 更新日志
    • Vue 文档
    • BPM 文档
    • Cloud 文档
V5 演示
Vue 演示
💖联系
  • 我要提意见、文档纠错
  • JeeSite 代码库, 请⭐Star关注
  • JeeSite Vue 代码库, 请⭐关注
  • Spring Cloud 微服务架构
  • JeeSite 手机端/移动端
  • AI + RAG + CMS 人工智能
  • Flowable 中国式工作流
  • OAauth2 统一认证服务器
  • 政务内外网环境中间件
  • 访问 ThinkGem 官方博客
  • 点击进入,下拉查看动态
  • 快速了解

  • 后端开发手册

  • Vue前端手册

  • 经典前端手册

  • 扩展功能专题

  • 云服务技术架构

    • SaaS架构、多租户
    • 负载均衡、集群、高可用
      • 概念
      • 会话共享、集群配置
      • 负载均衡、集群配置
      • Nginx 高可用
      • 动态 Redis 数据源
    • SpringCloud 分布式 微服务
    • 分布式事务Seata、AT模式
    • 分布式事务LCN、柔性事务
    • 读写分离、分库分表方案
    • Spring Boot 监控系统
    • SkyWalking 追踪系统
    • ELK 日志收集分析
  • 技术支持与服务

负载均衡、集群、会话共享、高可用解决方案

# 概念

1)负载均衡(load balance)

它是根据某种负载策略把请求分发到集群中的每一台服务器上,让整个服务器群来处理网站的请求。来增加服务器的吞吐量和处理能力,以及承载能力。解决高并发带来的系统性能问题。

2)集群(Cluster)

用 N 台服务器构成一个松耦合的多处理器系统(对网站访问者说,它们就是一个服务器),它们之间通过网络实现通信。让 N 台服务器之间相互协作,共同承载一个网站的请求压力。

3)会话共享 (Session Share)

在访问系统的过程中,用户登录系统后,不管访问系统的任何资源地址都不需要重复登录。也就是对会话数据进行集中管理,会话在集群中是共享的。

4)高可用(HA)

在集群服务器架构中,当主服务器故障时,备份服务器能够自动接管主服务器的工作,并及时切换过去,以实现对用户的不间断服务。

# 会话共享、集群配置

在 JeeSite 中配置非常方便,只需要在 application.yml 文件中配置 Redis 和 开启集群模式 即可,如下:

Redis 单机:

spring:
  
  # Redis 连接参数 (RedisProperties) 适应于 Spring Boot 3 版本
  data:
    redis:
      host: 127.0.0.1
      port: 6379
      ssl:
        enabled: false
      database: 0
      password: 1234
      timeout: 20000
      lettuce:
        pool:
          # 最大空闲连接数
          maxIdle: 3
          # 最大活动连接数
          maxActive: 20
    
  # Redis 连接参数 (RedisProperties) 适应于 Spring Boot 2 版本
  redis:
    host: 127.0.0.1
    port: 6379
    ssl: false
    database: 0
    password: 1234
    timeout: 20000
    lettuce:
      pool:
        # 最大空闲连接数
        maxIdle: 3
        # 最大活动连接数
        maxActive: 20

  # 缓存配置
  cache:
    # 缓存及会话共享(专业版) 必须开启 (重要)
    isClusterMode: true
    # 清理全部缓存按钮所清理的缓存列表
    clearNames: sysCache,corpCache,userCache,cmsCache
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40

Redis 集群:

spring:
    
  # Redis 连接参数 (RedisProperties) 适应于 Spring Boot 3 版本
  data:
    redis:
      cluster:
        nodes:
          - 192.168.56.101:7001
          - 192.168.56.102:7002
        # 获取失败,最大重定向次数
        maxRedirects: 3
      ssl: false
      database: 0
      password: 1234
      timeout: 20000
      lettuce:
        pool:
          # 最大空闲连接数
          maxIdle: 3
          # 最大活动连接数
          maxActive: 20
      
  # Redis 连接参数 (RedisProperties) 适应于 Spring Boot 2 版本
  redis:
    cluster:
      nodes:
        - 192.168.56.101:7001
        - 192.168.56.102:7002
      # 获取失败,最大重定向次数
      maxRedirects: 3
    ssl: false
    database: 0
    password: 1234
    timeout: 20000
    lettuce:
      pool:
        # 最大空闲连接数
        maxIdle: 3
        # 最大活动连接数
        maxActive: 20

  # 缓存配置
  cache:
    # 缓存及会话共享(专业版)(重要)
    isClusterMode: true
    # 清理全部缓存按钮所清理的缓存列表
    clearNames: sysCache,corpCache,userCache,cmsCache
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47

# 负载均衡、集群配置

Nginx 是一款轻量级的 Web 服务器、反向代理服务器及电子邮件代理服务器,其特点是占有内存少,并发能力强,事实上 Nginx 的并发能力确实在同类型的网页服务器中表现较好,它强大不多说了。举例如下:

http {
	
	# 可接受的最大数据包
	client_max_body_size 50M;

	# 允许带下划线的请求头
	underscores_in_headers on;

	# 负载均衡服务配置(max_fails最大失败尝试次数,fail_timeout失败后多长时间内不再尝试;weight权重)
	upstream jeesite_nodes {
		server 127.0.0.1:8980 max_fails=2 fail_timeout=20s weight=3;
		server 127.0.0.1:8981 max_fails=2 fail_timeout=20s weight=3;
	}
	
	# 反向代理服务配置
	server {
		listen       80;
		server_name  demo.jeesite.com;
		location / {
			rewrite ^(.*)$ /js permanent;
		}
		location /js {
			proxy_pass http://jeesite_nodes/js;
			proxy_set_header Host $host;
			#proxy_set_header Host $host:$server_port;
			proxy_set_header X-Real-IP $remote_addr;
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
			proxy_set_header X-Forwarded-Proto $scheme;
			proxy_set_header X-Forwarded-Port $server_port;
			proxy_redirect off;
			proxy_http_version 1.1;
			proxy_set_header Upgrade $http_upgrade;
			proxy_set_header Connection "upgrade";
		}
	}

}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37

upstream 对配置的上游服务器按照默认的轮询方式进行请求。如果上游服务器挂掉,能自己主动剔除,无需手动干预。这种方式简单快捷。但是如果上游服务器在配置不均衡的情况下,是解决不了的。所以 nginx 提供了其它配置项:

1)权重配置:

weight 和请求数量成正比,主要用于上游服务器配置不均衡的情况。下面的配置中,192.168.10.3 机器的请求量是 192.168.10.2 机器请求量的 2 倍。

upstream jeesite_nodes {
    server 192.168.10.2:8980 weight=5;
    server 192.168.10.3:8980 weight=10;
}
1
2
3
4

2)fair 配置:

根据页面大小、加载时间长短智能的进行负载均衡,上游服务器响应时间短的优先分配。

upstream jeesite_nodes {
    server 192.168.10.2:8980;
    server 192.168.10.3:8980;
    fair;
}
1
2
3
4
5

3)ip_hash 配置:

每一个请求按照请求的 ip 的 hash 结果分配。这样每一个请求固定落在一个上游服务器,能够解决 ip 会话在同一台服务器的问题。

upstream jeesite_nodes {
    ip_hash;
    server 192.168.10.2:8980;
    server 192.168.10.3:8980;
}
1
2
3
4
5

4)url_hash 配置:

按照访问的 url 的 hash 结果来分配请求,使每一个 url 定向到同一个上游服务器。注意:在 upstream 中加入 hash 语句。 server 语句中不能写入 weight 等其他的參数,hash_method 是使用的 hash 算法。

upstream jeesite_nodes {
    server 192.168.10.2:8980;
    server 192.168.10.3:8980;
    hash $request_uri;
    hash_method crc32;
}
1
2
3
4
5
6

5)下面再说下在 upstream 中常用的配置项:

  • down:表示当前的 server 不參与负载均衡。
  • weight:负载权重,值越大,负载的权重就越大,默认1。
  • max_fails:最大请求失败尝试的次数默认1。
  • fail_timeout:max_fails次失败后,暂停请求此台服务器的时间。
  • backup:其它全部非 backup 机器 down 或者忙的时候,请求 backup 机器。所以这台机器压力会最轻。
upstream jeesite_nodes {
    server 192.168.10.2:8980 max_fails=2 fail_timeout=20s weight=3;
    server 192.168.10.3:8980 max_fails=2 fail_timeout=20s weight=3;
    server 192.168.10.4:8980 down;
    server 192.168.10.5:8980 backup;
}
1
2
3
4
5
6

# Nginx 高可用

https://www.baidu.com/s?wd=Nginx负载均衡高可用 (opens new window)

# 动态 Redis 数据源

https://gitee.com/thinkgem/jeesite5/issues/I4XL1B (opens new window)

进入 JeeSite 源码仓库页面,点击右上角 ⭐ Star 加星关注。

← SaaS架构、多租户 SpringCloud 分布式 微服务→

联系我们:s.jeesite.com  |  微信号:jeesitex  |  邮箱:jeesite@163.com
© 2013-2025 济南卓源软件有限公司 版权所有 | Theme Vdoing

请关注 JeeSite 微信公众号,了解最新动态

  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式