Appearance
集群部署
提前为系统指定蓝图,在各种技术和实施方法中进行权衡,精心设计,合理利用各种资源、最终确定新系统的详细部署方案,为部署人员提供部署参照。
组件清单
组件 | 说明 | 要求 | 是否必须 |
---|---|---|---|
服务器 | 服务器硬件 | 最低配置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 | 是 |
onlyoffice | Office文档预览、编辑 | 7.1 以上 | 是 |
minio | 共享文件存储 | 2022-09-01以上 | 是 |
elastic-search | 全文检索,搜索引擎 | 7.0以上 | 是 |
informat-account | 低代码账号服务 | 无 | 是 |
informat-biz | 低代码应用服务 | 无 | 是 |
pgpool | 4.3.8版本以上 | pgsql集群中间件 | 是 |
资源分配
- 3台服务器均部署全组件,通过nginx做负载均衡
- Minio集群,通过NGINX做负载均衡
- pg数据库服务申请弹性IP访问,开通防火墙9999
- Redis集群,开通防火墙6381,6382
- Es、rabbitmq、onlyoffice启用单节点服务,通过虚IP进行访问
注意
集群部署最少需要3个服务节点,3个节点均需要全组件安装,且每个服务节点需要独立磁盘作为minio对象存储服务的数据目录
服务器资源分配
机器 | 配置 | 部署 | 备注 |
---|---|---|---|
Node1 | 8C/32G/50G系统盘/500G数据盘/100G Minio数据盘 | 全组件 | 数据库主节点,示例IP:10.0.1.101 |
Node2 | 8C/32G/50G系统盘/500G数据盘/100G Minio数据盘 | 全组件 | 数据库从节点,示例IP:10.0.1.102 |
Node3 | 8C/32G/50G系统盘/500G数据盘/100G Minio数据盘 | 全组件 | 数据库从节点,示例IP:10.0.1.103 |
VIP | 虚拟IP,作为节点漂移使用。 | 示例IP:10.0.1.100 |
对外服务端口
端口号 | 说明 |
---|---|
80 | 织信服务端口,必须 |
9002 | 文件预览服务端口,必须 |
19001 | minio控制台端口,非必须 |
15672 | rabbitmq控制台端口,非必须 |
9999 | 数据库端口,非必须 |
部署架构
redis
部署三主三从交叉复制的Redis集群,保证Redis集群的高可用。
postgresql一主多从 + pgpool
pgpool作为代理位于应用程序和数据库之间。它负责连接池管理、数据库负载均衡和自动故障切换。pgpool会监控主数据库的状态,如果主数据库发生故障,它将选择一个健康的从数据库升级为新的主数据库。
部署流程
参数变量说明
下文中所有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}进行访问