主机信息

主机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(o2web服务器)
82 20020(o2应用服务器)
83 20030(o2中心服务器)

配置步骤

一、配置节点标识

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 ,刷新页面正常访问;

开源OA办公平台搭建教程:基于nginx的快速集群部署——端口分发的更多相关文章

  1. 开源OA办公平台搭建教程:O2OA+Arduino实现物联网应用(二)

    O2OA平台搭建 O2OA的开发环境非常简单,安装服务器后即可通过浏览器进行开发了和使用.具体可参考文档库中的其他文档,有比较详细的介绍,这里就不再赘述了. Arduino开发发环境搭建 安装Ardu ...

  2. 开源OA办公平台搭建教程:O2OA+Arduino实现物联网应用(一)

    O2OA平台是一个企业办公类系统的低代码开发平台,更够方便的开发和部署协同办公.流程管理等应用,但它能做的远不止这些,今天这个案例就为大家介绍一下,O2OA可以做的更多. 最近对养鱼产生了浓厚的兴趣, ...

  3. 开源OA办公平台搭建教程:O2OA表单中的事件

    1. 概述 我们设计表单的时候经常会有这样的需求:在表单或者组件加载前/加载后,能够执行一些脚本来改变表单或组件的样式和行为.或者用户在点击组件的时候能够执行脚本.表单的事件就是为这样的场景而设计. ...

  4. Ubuntu下基于Nginx实现Tomcat集群负载均衡

    版权声明:本文为博主原创文章,未经博主允许不得转载.   目录(?)[+]   Nginx是一款HTTP和反向代理服务器,有关它的介绍可以到网上搜一下,很多很多,不再累述.这里,我们记录一下Nginx ...

  5. 基于Codis的Redis集群部署

    Codis是基于代理的高性能Redis集群方案,使用Go语言进行开发,现在在在豌豆荚及其它公司内已经广泛使用,当然也包括我们公司. Codis与常见的Redis集群方案对比. 在搭建的时候,个人觉得R ...

  6. 基于minikube的kubernetes集群部署及Vitess最佳实践

    简介 minikube是一个可以很容易在本地运行Kubernetes集群的工具, minikube在电脑上的虚拟机内运行单节点Kubernetes集群,可以很方便的供Kubernetes日常开发使用: ...

  7. windows下nginx+tomcat分布式集群部署

    首先官网下载  http://nginx.org/en/download.html,我的本地环境为 实现的架构: 从图上可以看出,nginx作为负载均衡请求分发器,当请求A应用时候,分发到A集群,同理 ...

  8. 开源OA办公平台功能介绍:应用市场-固定资产管理(一)功能设计

    概述 应用市场-固定资产管理,是用来维护管理企业固定资产的一个功能.其整个功能包括对固定资产的台账信息.领用.调拨.借用.维修.盘点.报废等一整个生命周期的动态管理过程.力求客户安装就可以使用. 本应 ...

  9. 基于docker实现哨兵集群部署

    简单dockerfile文件,用于演示sentinel哨兵故障转移FROM centos:latest MAINTAINER BIXIAOYU RUN groupadd -r redis && ...

随机推荐

  1. hadoop知识点总结(三)YARN设计理念及基本架构

    YARN设计理念与基本架构 1,MRv1的局限性:扩展性差,可靠性差,资源利用率低,无法支持多种计算框架 2,YARN基本设计思想 1)基本框架对比 Hadoop1.0中,JobTracker由资源管 ...

  2. vim快捷键收藏版

    总述 附加一篇介绍文哈,关于vim快捷键的介绍.vim和vscode 到底谁更好用,大家争得不可开交,然后我就在vscode里面装了一个vim插件,完美得解决了这个问题,用完之后觉得真香,所以我就整理 ...

  3. 2019牛客暑期多校训练营(第九场)B Quadratic equation (平方剩余)

    \((x+y)\equiv b\pmod p\) \((x\times y)\equiv c\pmod p\) 由第一个式子可知:\(x+y=b~or~x+y=b+p\) 先任选一个代入到第二个式子里 ...

  4. Codeforces Round #673 (Div. 2) C. k-Amazing Numbers(思维)

    题目链接:https://codeforces.com/contest/1417/problem/C 题意 给出一个大小为 $n$ 的数组 $a$,计算当 $k$ 从 $1$ 到 $n$ 取值时在所有 ...

  5. 2014-2015 ACM-ICPC, NEERC, Southern Subregional Contest 题解(PART)(9/13)

    $$2014-2015\ ACM-ICPC,\ NEERC,\ Southern\ Subregional\ Contest$$ A Nasta Rabbara B Colored Blankets ...

  6. zoj2112 Dynamic Rankings (主席树 || 树套树)

    The Company Dynamic Rankings has developed a new kind of computer that is no longer satisfied with t ...

  7. 2020牛客暑期多校训练营(第一场)Easy Integration

    传送门:J. Easy Integration 题意:给你n,求这个积分,最后的结果分子是记为p,分母记为q. 求(p*q-1)mod 998244353. 题解:比赛完看到巨巨说这是贝塔函数,我一搜 ...

  8. Java 窗口 绘制图形 #3

    写在前面: 高数下学到第二章,突发奇想要写一个程序画二元函数图像 思路分了三层: ①抽象层: 因变量z,自变量x.y,坐标原点x0.y0.z0 ②投影实现层: 屏幕投影坐标px.py,x轴与屏幕水平方 ...

  9. Codeforces Round #681 (Div. 2, based on VK Cup 2019-2020 - Final) A. Kids Seating (规律)

    题意:给你一个正整数\(n\),在\([1,4n]\)中找出\(n\)个数,使得这\(n\)个数中的任意两个数不互质且不能两两整除. 题解:这题我是找的规律,从\(4n\)开始,往前取\(n\)个偶数 ...

  10. Educational Codeforces Round 91 (Rated for Div. 2) B. Universal Solution (贪心)

    题意:石头剪刀布,bot有一串字符,表示他要出什么,你需要事先确定你的出招方案,然后遍历bot的字符串,从\(i\)位置开始跑一个循环,每次跑都要记录你赢的次数贡献给\(sum\),现要求\(\fra ...