# Linux部署集群经验分享

# 前言

本手册作为新人安装部署集群做个经验分享。

# 参考手册

安装维护手册-协同管理软件集群部署手册-《致远 协同管理软件 V9.0SP1 集群部署手册》(全章节)

安装维护手册-协同管理软件单机部署手册-《3.致远 协同管理软件 V9.0SP1 产品安装维护手册-Linux》(Nginx章节)

# 主要步骤

1、主节点安装部署OA,部署后以单机模式启动一次,确保部署正常

2、准备NFS共享目录,确保主从都能访问共享目录,随后将主节点的upload附件、resource资源拷贝到共享目录,同时主节点系统管理员-附件目录也绑定到共享目录地址

3、安装部署单机Redis,主节点切换为集群并启动一次确保部署正常,如有集群Redis需求则先确保单机正常再部署集群Redis

4、将主节点的服务和配置1比1拷贝到从节点相同路径,然后稍微修改一点从节点的配置即可完成从节点部署

5、启动从节点,并且单点访问确认从节点可用

6、部署编译配置Nginx,按照标准手册做好集群负载的配置,最后访问NG来确认是否能正常访问OA

# 主节点管理

# 主节点安装部署

使用SeeyonInstall选择对应的产品线脚本正常执行部署,部署位置:/data/Seeyon/A8

# 主节点放置加密狗

先获取Linux下的mac地址:

1730127733103.png

再将Linux的mac地址拷贝到Windows下,Windows下使用updatedog注册更新加密狗,注册更新时弹出的Mac地址框需要使用Linux的Mac地址。

最后将生成的a8v5.seeyonkey文件上传到Linux的OA安装程序目录:/data/Seeyon/A8/base/license目录里面。

# 主节点单机测试

先默认以单机模式启动运行,确保OA启动、使用正常。

# 主节点切为集群配置

服务器设置配置为“集群/双机”,HTTP端口按需调整(比如设置为8080),勾选“设为主服务”,配置主服务和从服务的IP:

1730127747756.png

# Redis管理

# 安装Redis

可以单独服务器部署,也可以在资源多的服务器部署,本次测试采用主节点部署Redis

Linux系统需要调整最大进程数和最大文件打开数,ulimit -a命令查看open files以及max user processes属性的值,超过65535可以不配置。未超过则vim /etc/security/limits.conf修改参数配置:

* soft nofile 65535
* hard nofile 65535
* soft nproc 65535
* hard nproc 65535

# 如果不生效,当前是root设置,则将*改成root即可生效
root soft nofile 65535
root hard nofile 65535
root soft nproc 65535
root hard nproc 65535

安装Redis

sudo apt update

sudo apt install redis-server

配置Redis参数 vim /etc/redis/redis.conf

# 需要外部访问哪个IP来找Redis
bind 127.0.0.1 192.168.188.133
# 端口号,默认6379
port 6379
# 以独立进程打开,默认yes
daemonize yes
# 关闭AOF持久化,默认no
appendonly no
# 设置Redis远程密码
requirepass Seeyon123456
# 关闭RDB持久化
save ""
# 所有save 数字 数字全部都注释
# save 900 1
# save 300 10
# save 60 10000

启动 Redis 并设置为开机自启动:

sudo systemctl start redis-server
sudo systemctl enable redis-server

检查 Redis 是否正常运行:

redis-cli -a Seeyon123456 ping

如果返回 PONG,说明 Redis 正常工作。

测试 Redis:

# 连接
redis-cli
# 录入密码
AUTH Seeyon123456
# 设置key value
set test "Hello, Redis!"
# 查询结果
get test

# 主节连接Redis

Redis配置通过SeeyonConfig可视化配置,尤其是密码,必须用SeeyonConfig配置,保存后会加密:

1730127774129.png

# NFS共享目录管理

要在一台服务器上设置NFS共享存储目录,并在另一台服务器上挂载该目录,可以按照以下步骤进行:

# 主节点部署NFS共享目录

1、主节点安装NFS服务器

sudo apt update
sudo apt install nfs-kernel-server

2、主节点创建共享目录

sudo mkdir -p /mnt/nfs_share

3、主节点设置权限

根据需要设置目录权限,例如root用户将拥有对目录的完全访问权限,而其他用户将拥有读取和执行权限。:

sudo chown root:root /mnt/nfs_share
sudo chmod 755 /mnt/nfs_share

4、主节点配置导出文件

编辑 /etc/exports 文件,添加以下行:

vim /etc/exports
/mnt/nfs_share *(rw,sync,no_subtree_check)

这行配置允许所有客户端读写访问。根据需要可以指定特定的IP地址或子网。

5、 主节点导出共享目录

sudo exportfs -a

6、 主节点启动NFS服务

sudo systemctl restart nfs-kernel-server

# 主节点配置共享目录

1730127794666.png

以上完成后,将主节点的配置都迁移到共享目录

mv resources/ /mnt/nfs_share/

# 数据库修改附件目录

将主节点的base/upload拷贝到共享存储目录下:

mv upload/ /mnt/nfs_share/

连数据,修改磁盘分区到共享目录:

UPDATE ctp_partition SET PATH = '/mnt/nfs_share/upload',SHARE_PATH = '/mnt/nfs_share/upload';

# 从节点管理

# 主节点同步到从节点

从节点先创建与主节点1比1相同的目录:mkdir -p /data/Seeyon

然后回到主节点,通过rsync命令将主节点的OA目录1比1同步给从节点

rsync -av --progress /data/Seeyon/A8  root@192.168.188.128:/data/Seeyon/

同步过来之后需要修改从节点的SeeyonConfig:取消“设为主服务”的选项,集群双机标识要保留跟主节点一样,设置当前节点:

HTTP端口调整为8080,避免当前机器安装了Nginx等别的服务把80给占了。

1730127816682.png

最后访问主节点,将注册表同步到从节点:

rsync -av --progress /root/.config/seeyoninstall_A8.info  root@192.168.188.128:/root/.config/
rsync -av --progress /root/.config/seeyoninstall_Officetrans.info  root@192.168.188.128:/root/.config/
rsync -av --progress /root/.config/seeyoninstall_S1.info  root@192.168.188.128:/root/.config/

# 从节点安装NFS客户端

1、 从节点安装NFS客户端

sudo apt update
sudo apt install nfs-common

2、 从节点创建挂载点

sudo mkdir -p /mnt/nfs_share

3、 从节点挂载NFS共享

假设NFS服务器的IP地址是 192.168.188.133

sudo mount 192.168.188.133:/mnt/nfs_share /mnt/nfs_share

4、从节点验证挂载

你可以使用以下命令查看挂载情况:

df -h

5、从节点验证挂载

从节点在客户端的 vim /etc/fstab 文件中添加以下行:

192.168.188.133:/mnt/nfs_share /mnt/nfs_share nfs defaults 0 0

这样配置后,NFS共享目录将在系统启动时自动挂载。

# 集群验证-先启动主再启动从

先启动主节点,再启动从节点。

分别用IP端口访问主和从,如果都可以,则表示成功。

# 安装配置Nginx

不能直接使用apt install nginx,集群OA依赖sticky模块,所以集群OA都是下载Nginx及sticky相关组件,手动编译:

安装Nginx并且装载sticky模块:

Nginx,参考下载链接(下载stable version,1.20.2或者以上版本):https://nginx.org/en/download.html

Nginx较高版本(如Nginx-1.26.2)编译会报错,需要参考在线手册调整代码后再编译https://open.seeyoncloud.com/v5doc/142/1190/1958.html

nginx-sticky-module,参考下载链接:https://bitbucket.org/nginx-goodies/nginx-sticky-module-ng/downloads/

pcre,参考下载链接:https://sourceforge.net/projects/pcre/files/pcre/

openssl,参考下载链接:https://www.openssl.org/source/

zlib,参考下载链接:https://zlib.net/

我最终下载的相关版本如下图所示:

1730127831973.png

apt install -y gcc g++

所有的安装程序位于/home/soft下,nginx的安装目录位于/home/nginx下,依次执行以下命令进行nginx的安装:

# 切换目录至/home/soft
cd /home/soft
# 以实际下载的文件格式选择tar或zip解压
# 解压tar压缩包
tar -zxvf nginx-1.20.2.tar.gz
tar -zxvf pcre-8.40.tar.gz
tar -zxvf zlib-1.2.11.tar.gz
tar -zxvf openssl-1.1.0g.tar.gz
# 解压zip压缩包
unzip nginx-goodies-nginx-sticky-module-ng-08a395c66e42.zip
# 修改解压后文件夹名,便于后续安装
mv nginx-1.20.2 nginx
mv pcre-8.40 pcre
mv nginx-goodies-nginx-sticky-module-ng-08a395c66e42 nginx-sticky-module
mv zlib-1.2.11 zlib
mv openssl-1.1.0g openssl
# 赋权文件夹
chmod -R 777 nginx
chmod -R 777 openssl
chmod -R 777 zlib
chmod -R 777 nginx-stick-module
chmod -R 777 pcre
# 进行nginx的configure
cd nginx
# 注意以下configure命令为一行
./configure --prefix=/home/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_realip_module --with-http_sub_module --with-http_flv_module --with-http_mp4_module --with-http_auth_request_module --with-http_random_index_module  --with-http_gzip_static_module --with-pcre=/home/soft/pcre --add-module=/home/soft/nginx-sticky-module --with-openssl=/home/soft/openssl --with-zlib=/home/soft/zlib

# 注:Nginx较高版本(如Nginx-1.26.2)编译会报错,需要参考在线手册调整代码后再编译https://open.seeyoncloud.com/v5doc/142/1190/1958.html

# 编译、安装
make
make install

Nginx的配置路径在:/home/nginx/conf/nginx.conf,备份默认的nginx.conf未nginx.conf.bak,然后新建一个空的nginx.conf,将以下配置放置进去,只需要调整upstream seeyon_v5_cluster下面的server信息,其余配置可以完全相同:

worker_processes auto; 
worker_rlimit_nofile 20960; 
error_log  logs/error.log  crit;
events {
    worker_connections  4096;
	multi_accept on; 
	accept_mutex on;
	accept_mutex_delay 500ms; 
}
http {
        server_tokens off;
        sendfile on;
        tcp_nopush on; 
        tcp_nodelay on;
        access_log off;
        include       mime.types;
        default_type  application/octet-stream;
        keepalive_timeout  300;
        client_max_body_size 10240M;
		
        gzip on;		
        gzip_min_length 1k;		
        gzip_buffers 4 16k;		
        gzip_comp_level 3;		
        gzip_types text/xml text/plain text/css text/javascript application/x-javascript application/javascript application/xml;		
        gzip_disable "MSIE [1-6]\.";
		
        upstream seeyon_v5_cluster{
                sticky;
                server 192.168.188.133:8080 max_fails=300 fail_timeout=30s;
                server 192.168.188.128:8080 max_fails=300 fail_timeout=30s;
        }
		
		server {			
			listen       80;
			server_name  localhost;			
			charset utf-8;
			
			location / {				
				proxy_pass http://seeyon_v5_cluster;				
				proxy_set_header Host $http_host;				
				proxy_set_header X-Real-IP $remote_addr;
				proxy_set_header REMOTE-HOST $remote_addr;				
				proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                # proxy_set_header X-Forwarded-Proto $scheme;				
				proxy_redirect     off;                
				proxy_connect_timeout 300;
				proxy_read_timeout 300;
				proxy_send_timeout 300;
			}
			error_page   500 502 503 504  /50x.html;
			location = /50x.html {
				root   html;
			}
		}
}

以上完成后,通过启停维护Nginx即可使用:

# 切换命令行到nginx启动脚本目录
cd /home/nginx/sbin
# 启动
./nginx
# 重启
./nginx -s reload
# 停止
./nginx -s stop
# 指定配置文件重启,一般用于nginx异常停止后的启动
./nginx -c /home/nginx/conf/nginx.conf

# 最终验证

最终访问Nginx的IP和端口(默认80),测试NG是否将负载自动分发给对应节点。

创建人:het
修改人:het