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

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

此配置适合o2集群部署或者外网访问o2server服务(如移动端h5方式访问o2)
此配置需要o2server V5.2及以上版本

主机信息

主机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服务器、o2应用服务器、o2中心服务器)
分发规则(下面的上下文(如:/dev/web)不是固定的,可以根据自身需要需改):

nginx80端口匹配的上下文 o2端口服务
/dev/web/ 8080(o2oa web服务器)
/dev/app/ 20020(o2oa 应用服务器)
/dev/center/ 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

**

二、配置node文件

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": 20030.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": 20020,
   "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": 20030.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": 20020.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、分别从172.16.98.8和172.16.98.9主机的o2server/configSample目录中copy文件portal.json到o2server/config目录。
2、修改portal.json(修改urlMapping的内容,其他保持不变)

{
  "indexPage": {
    "enable": false,
    "portal": "",
    "page": ""
  },
  "loginPage": {
    "enable": false,
    "portal": "",
    "page": ""
  },
  "urlMapping": {
    "qmx.o2oa.net:20020": "qmx.o2oa.net/dev/app",
    "qmx.o2oa.net:20030": "qmx.o2oa.net/dev/center"
  },
  "###indexPage": "定制首页面设置.###",
  "###loginPage": "定制登录页面设置.###"
}

四、启动服务器

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

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

五、配置nginx

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 {
       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;
       proxy_http_version 1.1;
        proxy_read_timeout 300s;
        proxy_set_header Upgrade $http_upgrade;  # 支持websocket连接
        proxy_set_header Connection "upgrade";    # 支持websocket连接
        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;
       location /dev/web/ {
           root   html;
           index  index.html;
           proxy_pass http://webServer/;
       }
       location /dev/app/ {
           proxy_pass http://appServer/;
       }
       location /dev/center/ {
           proxy_pass http://centerServer/;
       }
   }
}

六、测试验证

1、浏览器访问地址:http://qmx.o2oa.net/dev/web 使用 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-07
一、安装程序  1、在安装前要创建一个帐号,不能用root帐号安装。  2、安装执行./setup.sh -iconsole    3、接受“此许可协议条款”,
政务项目环境使用说明
2021-02-18
O2OA演示环境,政府单位,政务OA项目环境演示。O2OA并不是一款传统意义上的OA系统,它是一款以流程管理为核心的全开源全免费的信息化开发平台,完整的代码可以
平台维护-流转中工作数据的查询、操作和管理
2021-02-26
O2OA提供平台数据维护应用,用于对平台应用类数据的维护操作,用户可以在应用市场选择安装平台维护应用。本篇主要简单介绍流转中工作数据的查询、操作和管理功能。
系统集成-腾讯企业邮集成配置
2021-02-25
O2OA平台并不包含企业邮箱解决方案,我们建议将专业的商业邮箱集成到O2OA中,作为更优的企业邮箱解决方案。本篇主要介绍如何在O2OA中如何集成腾讯企业邮。
源码编译-IOS客户端打包处理
2021-03-15
O2OA是真正全代码开源的应用开发平台,开发者可以直接使用从github或者gitee上clone的源码编译成IOS客户端,代码可以修改,安全可靠,无限制。本文
系统配置-开机自动启动O2Server
2021-02-19
O2OA开发平台允许将平台启动设置为跟随操作系统自动启动,这样避免服务器重启后,还需要手工启动O2Server的操作。本篇介绍如何在windows和Linux两
企业微信办公首页说明
2021-02-19
O2OA平台可以以第自建应用的方式集成到企业微信,同步企业微信的企业通讯录作为本地组织人员架构,并且可以将待办等通知直接推送到企业微信进行消息提醒。
连接O2云体验APP移动手机办公
2021-02-25
O2OA拥有配套的移动办公APP,支持IOS和安卓端,用户可在连接O2云之后,使用APP使用移动办公。移动办公APP开放源代码,不会产生任何费用。本篇主要简单讲
论坛管理
2021-02-19
O2OA平台论坛管理为企业提供了一个员工公开交流的场所,经过配置后,论坛可以拥有丰富的栏目、版块,可以进行版块的权限设置,可见性,发贴回复权限设置。
系统安全-用户登录IP限制
2021-02-25
为增加系统和用户的安全性增加用户登录IP限制功能,此功能仅对PC端,移动端不限制(移动端需要满足外网登录需求),此功业务场景适用于内网系统。本篇主要介绍如何将在

results matching ""

    No results matching ""