Skip to content

集群部署

提前为系统指定蓝图,在各种技术和实施方法中进行权衡,精心设计,合理利用各种资源、最终确定新系统的详细部署方案,为部署人员提供部署参照。

组件清单

组件说明要求是否必须
服务器服务器硬件最低配置4核心16G内存(推荐8核32G内存),系统盘,数据盘,Minio专用磁盘
操作系统操作系统Centos/RedHat 7.9
nginx反向代理、负载均衡Nginx 1.10以上
redis数据缓存redis 5.0 以上
postgresql数据库postgresql 13.5以上
rabbitMQ消息队列rabbitMQ 3.9.16
onlyofficeOffice文档预览、编辑7.1 以上
minio共享文件存储2022-09-01以上
elastic-search全文检索,搜索引擎7.0以上
informat-account低代码账号服务
informat-biz低代码应用服务
pgpool4.3.8版本以上pgsql集群中间件

资源分配

  1. 3台服务器均部署全组件,通过nginx做负载均衡
  2. Minio集群,通过NGINX做负载均衡
  3. pg数据库服务申请弹性IP访问,开通防火墙9999
  4. Redis集群,开通防火墙6381,6382
  5. Es、rabbitmq、onlyoffice启用单节点服务,通过虚IP进行访问

注意

集群部署最少需要3个服务节点,3个节点均需要全组件安装,且每个服务节点需要独立磁盘作为minio对象存储服务的数据目录

服务器资源分配

机器配置部署备注
Node18C/32G/50G系统盘/500G数据盘/100G Minio数据盘全组件数据库主节点,示例IP:10.0.1.101
Node28C/32G/50G系统盘/500G数据盘/100G Minio数据盘全组件数据库从节点,示例IP:10.0.1.102
Node38C/32G/50G系统盘/500G数据盘/100G Minio数据盘全组件数据库从节点,示例IP:10.0.1.103
VIP虚拟IP,作为节点漂移使用。示例IP:10.0.1.100

对外服务端口

端口号说明
80织信服务端口,必须
9002文件预览服务端口,必须
19001minio控制台端口,非必须
15672rabbitmq控制台端口,非必须
9999数据库端口,非必须

部署架构

redis

部署三主三从交叉复制的Redis集群,保证Redis集群的高可用。 Redis集群

postgresql一主多从 + pgpool

pgpool作为代理位于应用程序和数据库之间。它负责连接池管理、数据库负载均衡和自动故障切换。pgpool会监控主数据库的状态,如果主数据库发生故障,它将选择一个健康的从数据库升级为新的主数据库。

postgresql

部署流程

参数变量说明

下文中所有bash命令包含以下变量的均替换为实际部署环境的内容

{node1}: 节点1 IP地址 {node2}: 节点2 IP地址 {node3}: 节点3 IP地址 {VIP}: 虚拟IP {device}: Minio磁盘盘符,如/dev/sdb

下面提供一个示例,演示具体如何替换:

节点1 IP地址: 10.0.1.101 节点2 IP地址: 10.0.1.102 节点3 IP地址: 10.0.1.103

bash
# 脚本示例
/cluster-tools/sshUserSetup.sh -user root -hosts "{node1} {node2} {node3}" -advanced
# 替换后实际的脚本
/cluster-tools/sshUserSetup.sh -user root -hosts "10.0.1.101 10.0.1.102 10.0.1.103" -advanced

安装器命令行安装

每个节点先按照单机部署的方式进行部署,使用安装器命令行安装的方式进行安装,详细内容参考安装器命令行安装

注意

请不要变动安装目录,密码等参数,有可能会影响后续脚本运行

上传集群脚本

上传cluster-tools.zip文件至所有服务器节点的根目录,并解压压缩包,对脚本赋权

bash
unzip cluster-tools.zip
cd cluster-tools
chmod +x ./*.sh
chmod +x ./**/*.sh

建立SSH互信

bash
# 为ROOT用户创建互信,输入各个服务器的ROOT账号密码。建立ssh key 时 passphrase不要输入密码,直接Enter即可
./sshUserSetup.sh -user root -hosts "{node1} {node2} {node3}" -advanced

redis集群配置

在所有节点运行redis集群初始化服务

bash
./redis-cluster-tools/init.sh

# 查看redis集群服务是否正常
systemctl status redis-cluster

在任意节点运行建立集群命令

bash
/usr/local/redis/bin/redis-cli --cluster create --cluster-replicas 1 {node1}:6381 {node1}:6382 {node2}:6381 {node2}:6382 {node3}:6381 {node3}:6382

redis集群服务验证

bash

# 设置redis key
/usr/local/redis/bin/redis-cli -c -h {node1} -p 6381
set test "hello"
exit

# 返回redis 存储的值,查看是否正常获取,或者一致
/usr/local/redis/bin/redis-cli -c -h {node2} -p 6381
get test
exit

minio集群配置

在所有服务器节点运行以下命令

bash
#查看磁盘情况
lsblk
#查看分区情况
fdisk -l
# minio集群需要一个单独的磁盘作为minio数据目录,初始化minio磁盘,运行以下命令
./minio-cluster/init.sh -d {device} -n {node1} -n {node2} -n {node3}

minio服务验证

登录任意节点控制台http://{node1}:190001 账号:admin 密码:admin123455202221001

初始化工作:创建存储桶 informat-next

服务验证:上传文件并登录其他节点查看是否正常同步

postgers集群

在所有节点执行,初始化服务

bash
./postgresql-tools/init.sh

在任意节点运行

bash
./postgresql-tools/install.sh -v {VIP} -n {node1} -n {node2} -n {node3}

# 查看集群节点状态
psql -d postgres -U pgpool -h 127.0.0.1 -p 9999 -c "show pool_nodes"

# 所有节点的status均为up,pg_status均为up,则代表服务正常

node_id |   hostname    | port | status | pg_status | lb_weight |  role   | pg_role | select_cnt | load_balance_node | replication_delay | replication_state | replication_sync_state |
last_status_change
---------+---------------+------+--------+-----------+-----------+---------+---------+------------+-------------------+-------------------+-------------------+------------------------+-
--------------------
 0       | 192.168.1.110 | 5432 | up     | up        | 0.333333  | primary | primary | 44393      | false             | 0                 |                   |                        |
2024-09-24 23:21:44
 1       | 192.168.1.111 | 5432 | up     | up        | 0.333333  | standby | standby | 66646      | true              | 0                 |                   |                        |
2024-09-24 23:21:44
 2       | 192.168.1.112 | 5432 | up     | up        | 0.333333  | standby | standby | 69299      | false             | 0                 |                   |                        |
2024-09-24 23:21:44
(3 行记录)

onlyoffice配置

在任意节点运行初始化命令

bash
./onlyoffice/install.sh -v {VIP} -n {node1} -n {node2} -n {node3}

# 查看服务是否正常
systemctl status supervisord
supervisorctl status

# 显示 ds:converter ds:docservice ds:metrics 状态为 RUNNING则代表服务已经启动
ds:converter                     RUNNING   pid 81455, uptime 0:54:25
ds:docservice                    RUNNING   pid 81454, uptime 0:54:25
ds:example                       STOPPED   Not started
ds:metrics                       RUNNING   pid 81453, uptime 0:54:25

nginx配置

在任意节点运行初始化命令

bash
./nginx/install.sh -v {VIP} -n {node1} -n {node2} -n {node3}

# 查看服务是否正常
systemctl status nginx

informat配置

在任意节点运行初始化命令

bash
./informat/install.sh -v {VIP} -n {node1} -n {node2} -n {node3}

# 查看Account服务是否正常
systemctl status informat-account
# 查看Biz服务是否正常
systemctl status informat-biz

访问系统

浏览器地址栏输入地址:http://{VIP}进行访问