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

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端口服务

808080(o2oa Web服务器)
8220020(o2oa应用服务器
8320030(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.jsono2server/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-02-19
本篇主要简单描述从官网下载服务器,进行部署,启动的过程,并且描述在部署过程中常见的问题与报错以及云服务器安全策略配置和O2OA服务器端口修改的方式。使用华为云+
移动办公-移动端应用权限配置
2021-02-25
O2OA平台拥有配套的原生开发的安卓和IOS移动APP,开发者在拥有公网IP或者域名的服务器上可以轻松体验移动办公环境,并且不会产生任何费用。本篇主要介绍如何配
流程设计-拆分流程样例
2021-03-01
在复杂的流程设计中通常需要使用到拆分功能,比如公文管理流程中的各部门办理。本文主要介绍如何在O2OA平台中设计流程时使用流程拆分功能。
在宝塔面板中安装O2OA(For Linux)
2021-08-16
@O2OA@宝塔面板@平台部署@Java开源平台@流程引擎@工作流管理@流程审批平台@OA系统宝塔面板是一款非常不错的运维管理面板,让系统运维更加方便简单。O2
藕粉社区问答系列2
2021-09-22
[流程开发]自定义页面怎么取流程表单的值问题内容:就是首页的这个自定义页面我想把这个第二张图表单里面的select_1的字段值在自定义首页这里展示但是怎么取值才
门户开发-页面部件设计
2022-01-17
O2OA提供的门户管理平台可以让用户自由地为企业定制符合企业特色的门户系统,门户页面。可以让页面展现的内容真正满足企业自身的需求。本文主要介绍如何在O2OA中创
业务开发-组织架构-系统内置角色信息介绍
2021-03-22
O2OA提供数十种内置角色来控制系统的管理权限,用户可以适当组合相应的角色来实现功能的权限控制。本文主要介绍如何在O2OA中的各类角色权限信息。
常见问题-如何通过脚本调用系统内服务
2021-02-07
varapplications=this.applications;varserviceRoot="x_query_assemble_surface";vart
开发知识-JQuery篇:如何在O2OA中使用Jquery
2021-02-07
O2OA平台默认使用的JavaScript框架是mootools,有些用户对mootools框架不是很熟悉,造成使用上一些学习成本。平台也提供其他js库的引用,
老版本Custom应用后端源码编译
2021-03-15
O2OA允许用户对服务进行扩展,可以修改原来的代码,但是我们更推荐用户增加新的war包,jar包,根据O2OA的源码结构新增服务和应用来进行业务的扩展。本文主要

results matching ""

    No results matching ""