关键词:系统架构,O2OA,端口转发,Nginx,集群部署,端口分发

O2OA平台使用分布式架构设计,提供灵活的扩展方案用于对服务器的负载能力进行扩展,保障系统的高可用性。本篇主要介绍如何基于nginx端口分发的方式快速集群部署。


主机信息

主机1:172.16.98.8(linux)
主机2:172.16.98.9(linux)

集群需求

172.16.98.8:WEB服务器,应用服务器,文件存储服务器,中心服务器
172.16.98.9:WEB服务器,应用服务器,文件存储服务器,中心服务器

数据库

mysql数据库

nginx访问域名及端口

域名:qmx.o2oa.net(可以用ip,如果域名没有解析需要配置hosts)
端口:80(o2web服务器)、82(o2应用服务器,可以为其他没有冲突的端口)、83(o2中心服务器,可以为其他没有冲突的端口)
分发规则:

nginx端口 o2端口服务
80 8080(o2oa Web服务器)
82 20020(o2oa应用服务器)
83 20030(o2oa中心服务器)

配置步骤

一、配置节点标识

1、在主机172.16.98.8的o2server/local目录中修改或者新增文件node.cfg,修改内容为主机的域名或者IP;
主机172.16.98.8的节点标识文件配置

172.16.98.8


2、在主机172.16.98.9的o2server/local目录中修改或者新增文件node.cfg,修改内容为主机的域名或者IP;
主机172.16.98.9的节点标识文件配置

172.16.98.9

**

二、准备配置文件

1、从172.16.98.8主机的o2server/configSample目录中copy文件node_127.0.0.1.json到o2server/config目录,命名为node_172.16.98.8.json,再拷贝一份命名为node_172.16.98.9.json;

2、修改node_172.16.98.8.json文件如下(红色部分需关注):

{
 "enable": true,
 "isPrimaryCenter": true,
 "center": {
   "enable": true,
   "order": 1.0,                  ######
   "sslEnable": false,
   "redeploy": true,
   "port": 20030.0,
   "httpProtocol": "",
   "proxyHost": "qmx.o2oa.net",        ######
   "proxyPort": 83.0,                            ######
   "scanInterval": 0.0,
   "configApiEnable": true,
   "statEnable": true,
   "statExclusions": "*.js,*.gif,*.jpg,*.png,*.css,*.ico",
   "maxFormContent": 20.0
 },
 "application": {
   "enable": true,
   "port": 20020.0,
   "sslEnable": false,
   "proxyHost": "qmx.o2oa.net",                ######
   "proxyPort": 82.0,                                    ######
   "redeploy": true,
   "scanInterval": 0.0,
   "includes": [],
   "excludes": [],
   "weights": [],
   "scheduleWeights": [],
   "statEnable": true,
   "statExclusions": "*.js,*.gif,*.jpg,*.png,*.css,*.ico",
   "maxFormContent": 20.0
 },
 "web": {
   "enable": true,
   "port": 8080.0,
   "sslEnable": false,
   "proxyHost": "",
   "weight": 100.0,
   "dirAllowed": false,
   "statEnable": false,
   "statExclusions": "*.gif,*.jpg,*.png,*.ico",
   "cacheControlMaxAge": 0.0
 },
 "data": {
   "enable": false,                   ######
   "tcpPort": 20050.0,
   "webPort": 20051.0,
   "includes": [],
   "excludes": [],
   "jmxEnable": false,
   "cacheSize": 512.0,
   "logLevel": "WARN",
   "maxTotal": 50.0,
   "maxIdle": 0.0,
   "statEnable": true,
   "statFilter": "mergeStat",
   "slowSqlMillis": 2000.0
 },
 "storage": {
   "enable": true,
   "port": 20040.0,
   "sslEnable": false,
   "name": "251",                         ######
   "accounts": [],
   "prefix": "",
   "deepPath": false
 },
 ...
}


3、修改node_172.16.98.9.json文件如下(红色部分需关注):

{
 "enable": true,
 "isPrimaryCenter": true,
 "center": {
   "enable": true,
   "order": 2.0,                      ######
   "sslEnable": false,
   "redeploy": true,
   "port": 20030.0,
   "httpProtocol": "",
   "proxyHost": "qmx.o2oa.net",                ######
   "proxyPort": 83.0,                                    ######
   "scanInterval": 0.0,
   "configApiEnable": true,
   "statEnable": true,
   "statExclusions": "*.js,*.gif,*.jpg,*.png,*.css,*.ico",
   "maxFormContent": 20.0
 },
 "application": {
   "enable": true,
   "port": 20020.0,
   "sslEnable": false,
   "proxyHost": "qmx.o2oa.net",                ######
   "proxyPort": 82.0,                                    ######
   "redeploy": true,
   "scanInterval": 0.0,
   "includes": [],
   "excludes": [],
   "weights": [],
   "scheduleWeights": [],
   "statEnable": true,
   "statExclusions": "*.js,*.gif,*.jpg,*.png,*.css,*.ico",
   "maxFormContent": 20.0
 },
 "web": {
   "enable": true,
   "port": 8080.0,
   "sslEnable": false,
   "proxyHost": "",
   "weight": 100.0,
   "dirAllowed": false,
   "statEnable": false,
   "statExclusions": "*.gif,*.jpg,*.png,*.ico",
   "cacheControlMaxAge": 0.0
 },
 "data": {
   "enable": false,                  ######
   "tcpPort": 20050.0,
   "webPort": 20051.0,
   "includes": [],
   "excludes": [],
   "jmxEnable": false,
   "cacheSize": 512.0,
   "logLevel": "WARN",
   "maxTotal": 50.0,
   "maxIdle": 0.0,
   "statEnable": true,
   "statFilter": "mergeStat",
   "slowSqlMillis": 2000.0
 },
 "storage": {
   "enable": true,
   "port": 20040.0,
   "sslEnable": false,
   "name": "252",                ######
   "accounts": [],
   "prefix": "",
   "deepPath": false
 },
 ...
}


4、从172.16.98.8主机的o2server/configSample目录中copy文件externalDataSources_mysql.json到o2server/config目录,命名为externalDataSources.json,然后修改配置文件中数据库相应的配置信息;

5、从172.16.98.8上复制修改好的node_172.16.98.8.json、node_172.16.98.9.json和externalDataSources.json文件到172.16.98.9的o2server/config目录。

三、启动服务器

1、进入o2server目录,执行./start_linux.sh,当显示出o2命令信息时输入start启动服务,观察center服务、app服务器、web服务启动是否正常;

2、当两台服务器都启动正常后进入nginx服务器,telnet这两台服务器3个服务的端口,确保nginx到o2服务器网络正常;

四、配置nginx

进入nginx的nginx.conf文件,修改配置(参考如下),然后重启nginx。

http {
   include       mime.types;
   default_type  application/octet-stream;
   charset  utf-8;
   #access_log  logs/access.log  main;
   client_max_body_size 100m; # 数据包大小限制
   sendfile        on;
   tcp_nopush     on;
   keepalive_timeout  65;
   #gzip  on;
   upstream webServer {                # Server: 分发名
       server 172.16.98.8:8080;        # 分发地址1
       server 172.16.98.9:8080;        # 分发地址2
   }
   upstream appServer {
       ip_hash;
       server 172.16.98.8:20020;
       server 172.16.98.9:20020;
   }
   upstream centerServer {
       server 172.16.98.8:20030;
       server 172.16.98.9:20030;
   }
   server {
       listen       80;
       server_name  localhost;
       location / {
           root   html;
           index  index.html;
           proxy_pass http://webServer;
           proxy_set_header Host $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;
       }
   }
   server {
       listen       82;
       server_name  localhost;
       location / {
           proxy_pass http://appServer;
           proxy_set_header Host $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;
       }
   }
   server {
       listen       83;
       server_name  localhost;
       location / {
           proxy_pass http://centerServer;
           proxy_set_header Host $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;
       }
   }
}

五、测试验证

1、浏览器访问地址:http://qmx.o2oa.net/ 使用 xadmin/o2登录;
2、进入98.8主机的o2server目录,键入./stop_linux.sh ,刷新页面正常访问;
3、进入98.9主机的o2server目录,键入./stop_linux.sh ,刷新页面出现502 Bad Gateway;
4、进入98.8主机的o2server目录,键入./start_linux.sh进入命令行后键入start ,刷新页面正常访问;

推荐文章:

组织人员同步-自定义同步接口代码
2021-03-03
O2OA允许用户自定义接口和代码逻辑来完成系统与第三方业务系统的数据同步,人员和组织的同步。本文主要介绍如何在O2OA中开发接口与外部系统进行组织和人员的同步,
平台维护-流转中工作数据的查询、操作和管理
2021-02-26
O2OA提供平台数据维护应用,用于对平台应用类数据的维护操作,用户可以在应用市场选择安装平台维护应用。本篇主要简单介绍流转中工作数据的查询、操作和管理功能。
系统配置-数据库驱动JAR包更改
2021-02-25
O2OA信息化系统开发平台默认自带Mysql8或者其他数据库某固定版本的jdbc驱动包,当用户使用的数据库系统版本与O2OA默认驱动不兼容时可能会导到某些数据库
RPM打包-将O2OA打成RPM安装包
2021-03-15
在国产可信环境一般不允许对服务器进行文件上传解压安装,这时,我们需要把O2OA打包成符合要求的RPM安装包,通过可信操作系统进行服务器安装。本文主要介绍如何将O
服务管理-前后端脚本的差异
2021-03-01
O2OA提供的服务管理中心可以让用户使用Javascript语言自由编写脚本的处理逻辑来实现与第三方的数据交互,数据同步以及系统内的数据处理等工作。本文主要介绍
业务开发-组织架构-群组信息及管理操作
2021-02-26
O2OA提供群组来让业务中对人员的选择更为方便快捷。系统支持把类似的一群人或者一些组织设置为同一个群组,在业务使用中,可以指定某个群组为处理者,或者从某个群组里
服务集成-通过接口从第三方应用系统启动流程
2021-03-02
O2OA允许用户自行修改源码或者增加源码来扩展系统服务,也可以包装功能更强的业务服务。本文主要介绍如何在Java代码中通过接口从第三方应用系统启动O2OA中的业
快速入门-服务器总体介绍汇总
2021-02-07
一、服务器目录介绍二、服务器组成结构三、服务器所占端口四、微服务API五、服务内置对象(方便二次开发、实现2小时一个流程目标)六、架构图
常见问题-IOS移动办公无法收到验证码
2021-02-07
iphone7withIOS10.2.1无法收到服务器绑定的验证码。一、错误描述错误!underlying(ErrorDomain=NSURLErrorDoma
流程设计-流程表单的创建与设计
2021-02-26
本文主要介绍如何在O2OA中进行审批流程表单或者工作流表单设计,O2OA主要采用拖拽可视化开发的方式完成流程表单的设计和配置,不需要过多的代码编写,业务人员可以

results matching ""

    No results matching ""