O2OA(翱途)開發平臺[下稱O2OA開發平臺或者O2OA]使用分佈式架構設計,提供靈活的擴展方案用於對服務器的負載能力進行擴展,保障系統的高可用性。本篇主要介紹如何基於nginx上下文分發的方式快速集羣部署。
O2OA平臺應用結構
O2OA服務器默認啓動5個服務,分別爲:
-
Application 應用服務器,默認端口:80
-
Center 中心服務器,默認端口:80
-
Web web資源服務器,默認端口:80
-
Data 數據庫服務器,默認端口20050(默認情況下同時提供一個Web GUI管理界面,默認端口 20051)
-
Storage 默認文件存儲服務器,默認端口20040
其中 Data和Storage在生產環境中建議使用商用產級品。
Application,Center和Web三個服務器同時對外提供http服務,在集羣和網絡轉發環境中需要對這些服務端口進轉發。
O2OA集羣配置方案
此配置適合O2OA集羣部署或者外網訪問o2server服務(如移動端h5方式訪問o2)
此配置需要O2OA V7.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)不是固定的,可以根據自身需要需改,但第一層/dev在3個上下文中必須是一致的。在此我們暫時定義上下文爲/o2oa):
nginx80端口匹配的上下文 |
o2端口服務 |
/o2oa |
8080(web服務器、應用服務器、中心服務器) |
配置步驟
配置節點標識
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,
"center": {
"enable": true,
"order": 1.0, ######
"sslEnable": false,
"redeploy": true,
"port": 8080.0, ######
"httpProtocol": "",
"proxyHost": "",
"proxyPort": 8080.0
},
"application": {
"enable": true,
"port": 8080.0, ######
"sslEnable": false,
"proxyHost": "",
"proxyPort": 8080.0,
"includes": [],
"excludes": []
},
"web": {
"enable": true,
"port": 8080.0, ######
"sslEnable": false,
"proxyHost": ""
},
"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,
"center": {
"enable": true,
"order": 2.0, ######
"sslEnable": false,
"redeploy": true,
"port": 8080.0, ######
"httpProtocol": "",
"proxyHost": "",
"proxyPort": 8080.0
},
"application": {
"enable": true,
"port": 8080.0, ######
"sslEnable": false,
"proxyHost": "",
"proxyPort": 8080.0,
"includes": [],
"excludes": []
},
"web": {
"enable": true,
"port": 8080.0, ######
"sslEnable": false,
"proxyHost": ""
},
"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/": "qmx.o2oa.net/o2oa/"
},
"###indexPage": "定製首頁面設置.###",
"###loginPage": "定製登錄頁面設置.###"
}
啓動服務器
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 o2Server { # Server: 分發名
server 172.16.98.8:8080; # 分發地址1
server 172.16.98.9:8080; # 分發地址2
}
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 /o2oa/ {
root html;
index index.html;
proxy_pass http://o2Server/;
}
}
}
測試驗證
1、瀏覽器訪問地址:http://qmx.o2oa.net/ 使用 xadmin/o2登錄;
2、進入172.16.98.8主機的o2server目錄,鍵入./stop_linux.sh ,刷新頁面正常訪問(服務被轉發到172.16.98.9);
3、進入172.16.98.9主機的o2server目錄,鍵入./stop_linux.sh ,刷新頁面出現502 Bad Gateway(兩臺服務器均停止服務,無內容可被請求);
4、進入172.16.98.8主機的o2server目錄,鍵入./start_linux.sh進入命令行後鍵入start ,刷新頁面正常訪問(172.16.98.8服務器啓動完成,向外提供服務能力);
以上是使用Nginx以上下文轉發機制的形式實現O2OA集羣的介紹,希望對您有幫助。