# 致远协同管理软件
# 集群部署手册
北京致远互联软件股份有限公司
2020年12月
[前言]
本手册对协同管理系统的集群部署相关事宜进行说明。如对手册存在疑问,可与致远互联的客户服务人员联系。
# 系统集群配置
# 概要说明
协同服务支持集群部署,集群模式下使用Redis进行缓存管理,配置集群前需先安装Redis服务。可使用标准产品提供的redis服务(安装见"Redis服务"章节),也可自行安装redis服务。
通过应用配置器或S1,进行协同服务的集群配置。集群部署结构有以下注意事项:
集群结构支持多节点、水平集群,不支持垂直集群(多节点部署在同一服务器);
集群环境,只需在主服务放置加密;
集群支持MySQL、Oracle、SQLServer数据库;
集群支持TomCat、WebSphere、Weblogic中间件(WebSphere、Weblogic的集群部署请参考其独立文档);
集群支持Apache、Nginx、F5等软硬件提供web负载均衡服务;
集群部署结构下,各应用版本要求如下
# 网络拓扑
集群部署的网络拓扑示意图如下:
# 集群配置
集群配置主要有以下步骤:
应用集群配置:
主服务配置:主服务为集群环境中需放置加密、生成集群标识的服务。集群环境启动时,需先启动主服务才可启动从服务。
从服务配置:从服务为集群环境中启动不需加密狗、集群标识采用主服务集群标识的服务。集群环境启动时,从服务的加密及部分配置信息读取主服务对应信息。
- Web服务配置:
Web服务为集群环境中支持Web访问及承担负载均衡的服务。协同支持Apache、Nginx、F5(隶属F5 NetWorks公司的负载均衡设备)作为Web服务。依据实际情况,可以自由选择Web服务。关于web服务配置的注意事项,可参考web部署手册。
集群配置及启动时需注意事项:
主、从服务的操作系统时间要求相差不超过3秒。
主、从服务的IP地址必须在相同网段,即IP地址前3段需一致。
涉及目录的配置项,主、从服务该目录的物理存储位置必须一致。
包含以下目录(括号中为应用配置项名称):
公共资源目录(ctp.public.folder):影响portal、云联、cap等应用的使用
邮件保存目录(webmail.savePath):影响邮件应用的使用
Office转换文件目录(officeTarns.cache.folder):影响officetrans应用的使用
注:物理存储位置必须一致,值不一定相同。
- 主、从服务的BUG补丁包及月度修复包版本必须一致(以主服务为准)。即更新补丁时需将集群中所有节点一并更新。
# 公共资源目录配置
集群环境下,公共资源配置会影响portal、云联、cap等应用的使用,请务必引起重视!!!
公共资源目录配置主要有以下步骤:
运行SeeyonConfig,在"系统参数设置"页签,选择"名称"项中"ctp.public.folder"选项
- 双击"ctp.public.folder"选项,弹出框中设置公共资源目录。将"系统默认值"替换成"共享挂载目录"。
例如:主节点的Z:\data作为共享挂载目录,主从节点服务器"ctp.public.folder"选项都要替换成Z:\data。
# 应用集群配置
应用的集群配置在S1的协同配置,或协同服务的SeeyonConfig中进行。
# 主服务配置
主服务的配置,步骤如下:
运行SeeyonConfig,在"服务器设置"页签,选择"服务器设置"项中"集群/双机"选项;
勾选"集群/双机配置"项中"设置当前机器为主服务器",此时"集群/双机标识"项将自动生成集群标识(生成的标识需填写至集群其他从服务器节点);
在"节点配置"项中,填写集群用到的所有节点IP地址,选择"当前节点"对应至当前服务器IP;
- 配置Redis参数
Redis单机模式:
# 从服务配置
从服务的配置,步骤如下:
运行SeeyonConfig,在"服务器设置"页签,选择"服务器配置"项中"集群/双机"选项;
不勾选"集群/双机配置"项中"设置当前机器为主服务器",
在"集群/双机标识"项中填写主服务器生成的集群标识;
在"节点配置"项中,填写集群用到的所有节点IP地址,选择"当前节点"对应至当前服务器IP;
- 配置Redis参数
在"系统参数设置"页签,配置webmail.savePath、officeTarns.cache.folder信息(需与主服务器对应目录的物理存储位置一致);
进行SeeyonConfig其他配置;
集群其他从服务节点,可依次按照上述步骤进行配置。
- 注:SeeyonConfig的"节点配置"中需填写集群用到的所有节点IP。
# Apache集群配置修改
使用Apache作为负载均衡,配置完SeeyonConfig之后,还需手动修改如下目录文件内容:
(主、从服务器都必须修改)
- 修改ApacheJetspeed/conf/server.xml文件:取消截图注释,设置ip地址为集群节点实际ip,secret可自定义。并在Apache的conf/workers.properties中,设置server.xml中配置对应secret密码,例如:worker.SY103.secret=Seeyon8.0Tomcat8.5AJP1.3
<Connector port="8951" maxPostSize="-1" address="127.0.0.1" secretRequired="true" secret="Seeyon8.0Tomcat8.5AJP1.3"
maxThreads="4096" minSpareThreads="100"
enableLookups="false" redirectPort="8443" acceptCount="1024"
connectionTimeout="20000" protocol="AJP/1.3"/>
将上面代码中的address修改为服务器实际的ip地址,例如:192.168.0.103。secret可选择修改。如secret修改,那么Apache的conf/workers.properties文件内也必须修改成一致内容,如下图:
- 注释ApacheJetspeed\webapps\seeyon\WEB-INF\web.xml中spring-session内容(主、从服务器都必须修改)。手动将web.xml内如下内容注释掉,增加**<!-- XXX -->** 注释符号。
<!--
<filter>
<filter-name>spring-session</filter-name>
<filter-class>org.springframework.session.web.http.CTPDelegatingFilterProxy</filter-class>
<init-param>
<param-name>targetBeanName</param-name>
<param-value>springSessionRepositoryFilter</param-value>
</init-param>
</filter>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring.xml</param-value>
</context-param>
<filter-mapping>
<filter-name>spring-session</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
<dispatcher>INCLUDE</dispatcher>
</filter-mapping>
-->
将红色部分添加到相应位置后保存即可。
注意:修改完成后,停止现有主从节点协同服务,依次重启主从节点服务。
# Redis服务
# 概要说明
Redis服务用于协同集群部署模式时的缓存存放。可以采用标准产品提供的redis安装程序进行安装,亦可采用已有的redis服务,要求版本为5以上。
以下章节说明标准产品提供的redis安装程序的安装配置。标准产品提供的redis仅支持Linux系统。
# 安装配置
# 安装
在产品独立服务安装程序目录下,执行./SeeyonRedisInstall.sh运行安装程序;
开始安装,选择安装路径,如:/home/redis,依次点击下一步,完成安装;
# 配置
修改安装后目录的redis.conf,主要调整以下内容:
# 增加参数requirepass,设置redis的连接密码,密码为明文设置
requirepass 密码
# 调整redis的访问ip地址,将bind 127.0.0.1调整为实际ip
bind 实际ip
daemonize yes
# 调整redis的端口(视情况定是否调整),需同步调整协同中配置的redis端口
port 6379
#调整配置,关闭aof持久化
appendonly no
# Redis集群
# 环境准备
- 下载Redis部署包,如redis-6.0.13.tar.gz。https://redis.io/download (opens new window)
- 准备部署Redis集群的服务器,搭建Redis集群至少需要3台服务器,可以配置三主模式,或者三主三从模式;三主三从模式可选3台服务器或者6台服务器。
# 实例安装
- 安装依赖:
yum -y install cpp
yum -y install binutils
yum -y install glibc
yum -y install glibc-kernheaders
yum -y install glibc-common
yum -y install glibc-devel
yum -y install gcc
yum -y install make
升级gcc(如果安装6版本的redis,gcc版本一定要5.3以上)
yum -y install centos-release-scl
yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
scl enable devtoolset-9 bash
echo "source /opt/rh/devtoolset-9/enable" >> /etc/profile
- 上传redis安装包至/opt目录下并解压tar zxf redis-6.0.13.tar.gz
- 编译:
cd /opt/redis-6.0.13
make
- 安装:make install
- Redis默认安装到usr/local/bin目录下
- 创建redis集群目录/usr/local/redis-cluster
mkdir -p /usr/local/redis-cluster/redis6379 && cp /usr/local/bin/* /usr/local/redis-cluster/redis6379/
- 编辑redis配置文件,修改如下配置:
cp /opt/redis-6.0.13/redis.conf /usr/local/redis-cluster/redis6379/
vim /usr/local/redis-cluster/redis6379/redis.conf
bind 192.168.225.174 //监听的网卡地址,改为实际内网ip地址
port 6379 //服务监听端口
daemonize yes //以独立进程打开
#logfile //关闭redis日志
cluster-enabled yes //开启集群模式
cluster-config-file nodes-6379.conf //集群配置文件指定为nodes-6379.conf
cluster-node-timeout 15000 //集群超时时间设置
pidfile /var/run/redis_6379.pid //多个实例6380端口,改成redis_6380.pid
appendonly no //关闭AOF持久化
#save "" //开启RDB持久化
save 900 1
save 300 10
save 60 10000
requirepass Seeyon123456 //配置redis密码,根据需要修改
masterauth Seeyon123456 //主节点密码,各个实例密码要求全部一致
- 启动redis实例
nohup ./redis-server redis.conf >>/dev/null &
- 停止redis实例
ps -ef | grep redis
查出进程pid数字,执行kill -9 进程pid数字
# Redis集群配置
- 防火墙配置
集群配置前需要开启redis端口和redis集群总线端口(redis端口+10000)
举例,一个节点部署了两个redis实例,端口分别为6379、6380,则需要同步放行16379、16380端口:
firewall-cmd --add-port=6379/tcp --permanent
firewall-cmd --add-port=16379/tcp --permanent
firewall-cmd --add-port=6380/tcp --permanent
firewall-cmd --add-port=16380/tcp --permanent
firewall-cmd --reload
查看防火墙开放的端口
firewall-cmd --list-ports
查询6379端口是否开放
firewall-cmd --query-port=6379/tcp
防火墙配置中移除6379端口
firewall-cmd --permanent --remove-port=6379/tcp
- Redis三主集群配置
注意:三主集群无法实现高可用,只要有一个redis节点宕机,集群就无法使用
以下配置步骤举例,三主节点分别为:
10.2.5.121 服务器上6379端口redis
10.2.5.122 服务器上6379端口redis
10.2.5.124 服务器上6379端口redis
创建三主集群:
cd /usr/local/redis-cluster/redis6379
./redis-cli --cluster create 10.2.5.121:6379 10.2.5.122:6379 10.2.5.124:6379 -a Seeyon123456
红色标记了三主节点ip和端口,以及密码;
输入:yes
三主集群创建成功!
如果创建失败,删除每个redis节点的/usr/local/redis-cluster/nodes-6379.conf,重启redis服务,再重新创建。
- 查看集群状态
cd /usr/local/redis-cluster/redis6379
./redis-cli --cluster check 10.2.5.124:6379 -a Seeyon123456
- Redis三主三从集群配置
三主三从3节点场景下,1节点部署2个redis实例,端口不同;
以下配置步骤举例,三主三从6节点场景下,分别为
172.31.15.160服务器上6379端口redis
172.31.15.246服务器上6379端口redis
172.31.15.107服务器上6379端口redis
172.31.15.188服务器上6379端口redis
172.31.15.83服务器上6379端口redis
172.31.15.219服务器上6379端口redis
cd /usr/local/redis-cluster
./redis-cli --cluster create 172.31.15.160:6379 172.31.15.246:6379 172.31.15.107:6379 172.31.15.188:6379 172.31.15.83:6379 172.31.15.219:6379 --cluster-replicas 1 -a Seeyon123456
红色标记了6节点ip和端口,以及密码;
--cluster-replicas 1 表示为集群中的每个主节点随机指定一个从节点;
- 查看集群状态
cd /usr/local/redis-cluster
./redis-cli --cluster check 172.31.15.160:6379 -a Seeyon123456
如果创建失败,删除每个redis节点的/usr/local/redis-cluster/nodes-6379.conf文件,重启redis服务,再重新创建。
# Redis集群检查
- 进入redis节点
redis-cli -h 172.20.2.51 -p 6379 -a Seeyon123456
以上命令红色标记了节点ip、端口以及密码
- 查看集群相关信息
cluster info
- 查看节点相关信息
cluster nodes
# 协同服务Redis集群配置
- 协同服务集群各节点通过SeeyonConfig完成Redis集群的配置
在ApacheJetspeed\conf下启动SeeyonConfig.cmd或者SeeyonConfig.sh脚本,插件参数设置中,修改redis集群的配置信息,配置界面如下图:
配置包括:
redis.cluster.address,配置6组redis节点地址(三主三从)。
redis.enabled,启用redis集群模式,0为不启用,1为启用redis单机模式,2为启用redis集群模式。
redis.cluster.password,redis集群密码,所有节点需要使用相同密码,注意区分不要填写单节点redis配置密码redis.password。
# 常见问题
- make编译redis时报错:
gcc版本过低导致该错误。检查gcc版本:4.8.5
解决方法:升级gcc版本(gcc版本一定要5.3以上)
- 二、配置redis集群以后,协同服务启动报错
Redis没有关闭AOF持久化。
【解决方法】:修改配置文件redis.conf
appendonly no
#注释掉以下配置
#save 900 1
#save 300 10
#save 60 10000
#dbfilename dump.rdb
- 三、从节点无数据,或者主从切换后,新的从节点无数据
【解决方法】:redis.conf增加配置masterauth Seeyon123456
此配置为验证主节点密码。
四、创建集群卡在Waiting for the cluster to jion
此问题常出现在主机之间端口不通导致。主机之间互相telnet 6379端口和16379端口是否通。
解决方法:
检查主机防火墙是否关闭
主机如开启防火墙,检查防火墙是否配置redis端口和redis集群总线端口(redis端口+10000)放行