# 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地址:
再将Linux的mac地址拷贝到Windows下,Windows下使用updatedog注册更新加密狗,注册更新时弹出的Mac地址框需要使用Linux的Mac地址。
最后将生成的a8v5.seeyonkey文件上传到Linux的OA安装程序目录:/data/Seeyon/A8/base/license目录里面。
# 主节点单机测试
先默认以单机模式启动运行,确保OA启动、使用正常。
# 主节点切为集群配置
服务器设置配置为“集群/双机”,HTTP端口按需调整(比如设置为8080),勾选“设为主服务”,配置主服务和从服务的IP:
# 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配置,保存后会加密:
# 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
# 主节点配置共享目录
以上完成后,将主节点的配置都迁移到共享目录
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给占了。
最后访问主节点,将注册表同步到从节点:
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/
我最终下载的相关版本如下图所示:
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是否将负载自动分发给对应节点。