# 致远协同管理软件

# 集群部署手册

北京致远互联软件股份有限公司

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文件内也必须修改成一致内容,如下图:

C:\Users\ADMINI~1\AppData\Local\Temp\WeChatFiles\bbc2d238ce9d58356a1ee0bcf1a46bf.png

  • 注释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集群至少需要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。

# 常见问题

  1. 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端口是否通。

解决方法:

  1. 检查主机防火墙是否关闭

  2. 主机如开启防火墙,检查防火墙是否配置redis端口和redis集群总线端口(redis端口+10000)放行

创建人:zhangshuang