关键词: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-05-14
O2OA云笔记提供了一个给员工记录工作笔记,在线协同编辑文档,白板演示的工具,该功能可以将记录下来的文档信息件实时同步到云端,用户随时在多个设备上进行查看、编辑
数据中心-查询配置中日期格式jpql sql匹配写法
2021-02-07
在jpql中,对日期格式有特殊的写法,格式如下:Date-{d'yyyy-mm-dd'}-forexample:{d'2019-12-31'}Time-{t'h
服务API-服务端OpenAPI接口查询方法
2021-03-02
O2OA使用前后端分离的模式进行系统设计,并且也开放了全部的后端API供开发者使用,开发者可以根据各类API组织出符合实际业务需求的新服务或者新业务。本文主要介
信息栏目-表单的创建和设置
2021-03-01
O2OA提供的信息管理功能可以帮助用户快速地配置信息发布栏目,如通知公告,公司动态,规章制度等。用户可以高效地完成信息栏目和配置。本文主要介绍如何在O2OA中完
数据中心-自定义数据表
2021-03-01
O2OA提供的数据管理中心,可以让用户通过配置的形式完成对数据的汇总,统计和数据分组展现,查询和搜索数据形成列表数据展现。也支持用户配置独立的数据表来适应特殊的
系统配置-配置服务器连接O2云
2022-01-25
O2OA拥有云端应用市场以及配套的移动办公APP,支持IOS和安卓端。用户可在连接O2云之后,使用APP使用移动办公。移动办公APP开放源代码,不会产生任何费用
功能部署-为平台增加全文检索功能
2021-02-25
O2OA平台对流程和信息数据提供全文检索功能,可以对流程和信息的表单信息以及附件的文件内容进行分析和索引,提供全文检索能力。本篇主要介绍如何将在O2OA中安装部
平台维护-在线部署自定义应用的WAR包和JAR包
2021-02-26
在使用O2OA实现项目的过程中,特殊需求在平台现有功能无法直接提供的情况下,可以通过平台提供的自定义war|jar包,实现平台功能的扩展,满足各种不同的需求功能
数据中心-简介
2021-11-22
流程设计-Excel数据导入数据网格(仅支持IE)
2021-05-17
O2OA提供数据网格组件来简体表单中的可编辑表格或者数据展现表格的设计,如费用报销,差旅报销等业务都可能使用到数据网格。本文主要介绍如何将Excel中的数据导入

results matching ""

    No results matching ""