负载均衡配置
概述
Primeton AppServer支持使用Redis实现集群Session的复制。Primeton AppServer内部默认支持mod_jk,可以使用Apache httpd实现负载均衡,本章节将介绍在集群环境下如何使用Redis实现Session复制,配置Apache负载均衡。
集群Session复制
启用可用性服务
打开集群配置cluster-config

点击“可用性服务”

更改Web容器的持久化类型
选中“可用性服务”后面的复选框,在点击“Web容器可用性”Tab页。

勾选“可用性服务”后面的复选框,选择持久化类型redis。
设置会话超时时间
回到集群配置主要,选择Web容器

在“会话属性”Tab页上设置会话的超时时间,此时间同样也是session在redis中不使用的过期时间。

设置redis服务的系列属性
点击”存储属性”Tab页,添加属性。

支持属性如下:
| 属性名 | 属性说明 |
|---|---|
| redis.host | 单实例的redis环境时,redis的主机名,默认值:localhost |
| redis.port | 单实例的redis环境时,redis的访问端口,默认值:6379 |
| redis.password | redis的访问密码,默认值:空 |
| redis.database | redis的数据存储库,默认值:0 |
| redis.sentinelMaster | 集群环境中master的名称,默认值:空 |
| redis.sentinels | 集群环境中哨兵的地址集合,如"10.10.10.11:6379,10.10.10.12:6379,10.10.10.13:6379",默认值:空 |
| redis.sessionPersistPolicies | session持久化到redis的策略,支持多个策略同时生效,中间用“,”分隔 DEFAULT: 默认策略 SAVE_ON_CHANGE:任何属性改变时保存 ALWAYS_SAVE_AFTER_REQUEST:每次请求后保存 |
| redis.serializationStrategyClass | Session数据序列化对应的类,默认值:org.glassfish.web.ha.session.management.redis.JavaSerializer,采用jdk的序列化,用户可自行扩展 |
| redis.connectionPoolMaxTotal | redis连接池的最大连接数,默认值:8 |
| redis.connectionPoolMaxIdle | redis连接池的最大空闲数,默认值:8 |
| redis.connectionPoolMinIdle | redis连接池的最小空闲数,默认值:0 |
启用JK监听程序
打开集群配置主页

点击“网路监听程序”,分别为监听器启用“JK 监听程序”

点击“http-listener-1”链接,进入网络监听程序编辑页面,勾选“JK 监听程序”复选框,并保存。

点击“http-listener-2”链接,进入网络监听程序编辑页面,勾选“JK 监听程序”复选框,并保存。

搭建Apache环境
安装Apache
在Windows环境,首先需要确认是否已安装14.25.28508.3 Visual C++ Redistributable for Visual Studio 2015-2019,下载地址为: https://aka.ms/vs/16/release/VC_redist.x64.exe
如果已安装,下载Apache及JK模块。
下载Apache:
https://www.apachelounge.com/download/VS16/binaries/httpd-2.4.43-win64-VS16.zip
下载JK模块:
https://www.apachelounge.com/download/VS16/modules/mod_jk-1.2.46-win64-VS16.zip
解压缩httpd-2.4.43-win64-VS16.zip,将解压后的Apache24目录拷贝到C:根目录,将mod_jk-1.2.46-win64-VS16.zip解压出来的mod_jk.so拷贝到C:\Apache24\modules目录下。
Apache配置
- 在C:\Apache24\conf下新增工作机配置文件workers.proerties,内容为:
# Define 1 real worker using ajp13
worker.list=worker1,worker2,worker3,loadbalancer
# Set properties for worker1 (ajp13)
worker.worker1.type=ajp13
worker.worker1.host=192.168.1.195
worker.worker1.port=28080
worker.worker1.lbfactor=1
worker.worker1.socket_keepalive=1
worker.worker1.socket_timeout=300
#worker.worker1.cache_timeout=600
#worker.worker1.cachesize=128
# Set properties for worker2 (ajp13)
worker.worker2.type=ajp13
worker.worker2.host=192.168.1.192
worker.worker2.port=28080
worker.worker2.lbfactor=1
worker.worker2.socket_keepalive=1
worker.worker2.socket_timeout=300
#worker.worker2.cachesize=128
#worker.worker2.cache_timeout=600
# Set properties for worker3 (ajp13)
worker.worker3.type=ajp13
worker.worker3.host=192.168.1.193
worker.worker3.port=28080
worker.worker3.lbfactor=1
worker.worker3.socket_keepalive=1
worker.worker3.socket_timeout=300
#worker.worker3.cachesize=128
#worker.worker3.cache_timeout=600
worker.loadbalancer.type=lb
worker.loadbalancer.balance_workers=worker1,worker2,worker3
#worker.loadbalancer.sticky_session=1
- 在C:\Appache24\conf下新增配置文件mod_jk.conf,内容为
LoadModule jk_module modules/mod_jk.so
# Where to find workers.properties
JkWorkersFile conf/workers.properties
# Where to put jk logs
JkLogFile logs/mod_jk.log
# Set the jk log level [debug/error/info]
JkLogLevel error
# Select the log format
JkLogStampFormat "[%a %b %d %H:%M:%S %Y]"
# JkOptions indicate to send SSL KEY SIZE
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
# JkRequestLogFormat set the request format
JkRequestLogFormat "%w %V %T"
JkShmFile logs/mod_jk.shm
#JkMount /* worker1
JKMount /* loadbalancer
- 修改C:\Apache24\conf\httpd.conf文件,将ServerRoot值改为真实安装路径
ServerRoot "C:/Apache24"
将监听端口80改为9080
Listen 9080
ServerName前的注释去掉,将值改为localhost:9080
ServerName localhost:9080
在末尾添加一行
IncludeOptional conf/mod_jk.conf
- 重启httpd
C:\Apache24\bin> httpd.exe
1.4.3 检查负载配置
访问:http://10.16.16.216:9080/ ,若出现如下页面,则表示成功。
