企業級部署方案

📅 釋出:2024-06-10 🔄 更新:2024-12-15 📖 閱讀約45分鐘 👤 算數技術運維團隊

一、概述

很多企業在選低代碼平臺的時候,第一個問題就是"能不能私有化部署"。這不難理解——核心業務資料放在別人伺服器上,總覺得心裡不踏實。算數低代碼平臺支援完全私有化部署,所有資料都在企業自己的伺服器上執行,我們只提供軟體和運維支援。

這份文件面向的是企業IT團隊和運維工程師,把私有化部署從頭到尾的方案講清楚:從架構規劃到容器化部署,從資料庫選型到高可用配置,從監控告警到資料備份恢復。按著這份文件走,一個有經驗的運維團隊大概2-3天就能把平臺跑起來。

根據IDC的調研,2024年有超過70%的中大型企業在採購企業級軟體時要求支援私有化部署(資料來源:IDC《中國企業數字化轉型支出指南, 2024》)。信通院的資料也顯示,金融、政務、製造業這三個行業對私有化部署的需求最為強烈(資料來源:中國信通院《雲端計算白皮書(2024)》)

二、私有化部署架構

私有化部署的整體架構分三層:接入層、應用層、資料層。這種分層設計的好處是每一層可以獨立擴充套件,哪層壓力大就加哪層的資源,不用整個叢集一起擴。

2.1 部署架構總覽

層級 元件 數量(最小叢集) 數量(推薦叢集) CPU/記憶體(單節點) 職責
接入層 Nginx負載均衡 2 2 4C/8G SSL終結、請求分發、靜態資源
Keepalived VIP 2 2 1C/1G 浮動IP、Nginx高可用
應用層 API閘道器服務 2 4 4C/8G 路由、認證、限流
應用管理服務 2 2 4C/8G 應用CRUD、釋出
表單引擎服務 2 4 4C/8G 表單渲染、資料CRUD
工作流服務 2 2 4C/8G 流程引擎、審批流轉
AI能力服務 2 4 8C/16G 大模型對接、NL2SQL
檔案服務 2 2 4C/8G 檔案上傳下載、MinIO
資料層 MySQL主從 2(1主1從) 3(1主2從) 8C/32G 業務資料儲存
Redis叢集 3 6(3主3從) 4C/16G 快取、會話、限流
RabbitMQ 2 3 4C/8G 非同步訊息佇列
MinIO 1 4(分散式) 4C/8G+2TB 物件儲存
運維層 Prometheus+Grafana 1 1 4C/8G 監控、告警
ELK日誌棧 1 3 8C/16G 日誌收集、檢索

最小叢集需要約15臺伺服器(虛擬機器即可),推薦叢集約25臺。如果使用者量不大(500人以下),最小叢集完全夠用。日活使用者超過2000的話,建議直接上推薦叢集配置。

2.2 網路規劃

私有化部署的網路建議分三個VLAN:

三、容器化部署方案

所有服務都容器化了,用Docker打包、用Kubernetes編排。這樣做的好處太多了——環境一致性、快速擴縮容、滾動更新、故障自愈,都是容器化帶來的好處。Gartner的報告顯示,到2025年超過85%的企業將在生產環境執行容器化應用(資料來源:Gartner《容器管理市場指南, 2024》)

3.1 Docker映象規範

每個微服務打包成一個獨立的Docker映象,基於Alpine Linux基礎映象構建,映象大小控制在200MB以內。多階段構建——編譯階段用JDK 17,執行階段用JRE 17,把映象體積壓到最小。

# Dockerfile示例(應用管理服務)
FROM eclipse-temurin:17-jdk-alpine AS builder
WORKDIR /build
COPY . .
RUN ./gradlew :app-service:bootJar --no-daemon

FROM eclipse-temurin:17-jre-alpine
WORKDIR /app
COPY --from=builder /build/app-service/build/libs/*.jar app.jar
EXPOSE 8080
HEALTHCHECK --interval=30s --timeout=5s --retries=3 \
    CMD wget -qO- http://localhost:8080/actuator/health || exit 1
ENTRYPOINT ["java", "-XX:+UseG1GC", "-XX:MaxRAMPercentage=75", "-jar", "app.jar"]

3.2 Kubernetes部署配置

在K8s中,每個微服務部署為一個Deployment,前面掛一個ClusterIP Service。關鍵配置引數:

配置項 推薦值 說明
replicas2(最小)/ 4(推薦)每個服務至少2個副本保證高可用
requests.cpu1000m保證分配1核CPU
requests.memory2Gi保證分配2G記憶體
limits.cpu4000m最大可用4核CPU
limits.memory6Gi最大可用6G記憶體
maxSurge1滾動更新時最多多出1個Pod
maxUnavailable0滾動更新時不允許減少Pod
readinessProbe/actuator/health/readiness就緒檢查端點
livenessProbe/actuator/health/liveness存活檢查端點
startupProbe/actuator/health啟動檢查(給足啟動時間)
HPA targetCPU70%CPU使用率超70%自動擴容

3.3 配置管理

配置用K8s ConfigMap和Secret管理。非敏感配置(如資料庫連線池大小、執行緒池配置)放ConfigMap,敏感資訊(如資料庫密碼、API金鑰)放Secret。ConfigMap和Secret透過環境變數或Volume掛載到容器中,改配置不需要重新打包映象。

四、資料庫選型

資料庫是整個平臺的核心,選型必須慎重。我們支援MySQL和PostgreSQL兩種資料庫,各有優劣,選哪個取決於你的具體場景。

4.1 MySQL vs PostgreSQL對比

對比維度 MySQL 8.0 PostgreSQL 16 推薦場景
讀寫效能OLTP場景優秀複雜查詢更優高併發簡單查詢→MySQL
JSON支援JSON型別(基本)JSONB(強型別+索引)大量JSON資料→PG
全文檢索基本支援內建強大全文檢索需全文檢索→PG
擴充套件性外掛生態中等外掛生態豐富(PostGIS等)需GIS/向量檢索→PG
運維難度低(成熟度高)中等(需更多調優)運維能力有限→MySQL
社群支援非常活躍活躍都OK
高可用方案MHA/OrchestratorPatroni/RepmgrMySQL方案更成熟
授權協議GPL(免費)PostgreSQL License(免費)都OK

我們的建議是:90%的企業選MySQL就夠了,運維簡單、生態成熟、文件豐富。如果你的業務有大量複雜SQL查詢、JSON資料處理或全文檢索需求,再考慮PostgreSQL。不確定的話,先上MySQL,後續可以平滑遷移。

4.2 資料庫配置引數

以下是MySQL 8.0在32G記憶體伺服器上的關鍵配置引數:

引數 推薦值 說明
innodb_buffer_pool_size16G(記憶體的50%)InnoDB緩衝池,最關鍵引數
innodb_log_file_size2Gredo log檔案大小
innodb_flush_log_at_trx_commit1每次事務提交都刷盤(最安全)
sync_binlog1每次事務都同步binlog(最安全)
max_connections500最大連線數
innodb_read_io_threads8讀IO執行緒數
innodb_write_io_threads8寫IO執行緒數
slow_query_logON開啟慢查詢日誌
long_query_time1超過1秒記錄為慢查詢
binlog_formatROW行級binlog(用於主從複製)

五、高可用配置

高可用是企業級部署的硬要求。我們的高可用方案從接入層到資料層全覆蓋,任何單點故障都不會導致服務中斷。

5.1 接入層高可用

兩臺Nginx透過Keepalived實現主備高可用。Keepalived用VRRP協議維護一個虛擬IP(VIP),正常情況下VIP在主Nginx上。主Nginx掛了,備Nginx在3秒內接管VIP,使用者幾乎無感知。Nginx配置了健康檢查,後端服務不可用時自動從負載均衡池中摘除。

5.2 應用層高可用

每個微服務至少2個副本,透過K8s的Service實現負載均衡。K8s會自動檢測Pod健康狀態,不健康的Pod會被重啟(livenessProbe)或從負載均衡中摘除(readinessProbe)。配合HPA(水平Pod自動擴縮容),CPU使用率超過70%自動增加Pod數量,流量降下來後自動縮容。

5.3 資料層高可用

MySQL採用一主多從架構,主庫負責寫操作,從庫負責讀操作。主庫故障時透過MHA(MySQL Master High Availability)自動選舉新主庫,切換時間控制在30秒以內。Redis採用哨兵(Sentinel)模式或叢集模式,自動故障轉移。RabbitMQ採用映象佇列模式,訊息在多個節點間同步複製。

元件 高可用方案 故障切換時間 資料一致性
NginxKeepalived主備< 3秒-
MySQLMHA一主多從< 30秒強一致(半同步複製)
RedisSentinel/Cluster< 10秒最終一致
RabbitMQ映象佇列< 5秒強一致
MinIO分散式糾刪碼自動強一致

六、監控告警體系

部署完不等於完事,你得能看到系統在跑什麼狀態。我們的監控方案是Prometheus + Grafana + AlertManager三件套,在眾多企業級監控方案中算是比較成熟的選擇。

6.1 監控維度

監控層級 監控指標 採集方式 告警閾值
主機層 CPU使用率、記憶體使用率、磁碟使用率、網路IO node_exporter CPU>80%、磁碟>85%、記憶體>90%
容器層 Pod狀態、容器CPU/記憶體、重啟次數 cAdvisor + kube-state-metrics Pod重啟>3次/5分鐘、Pending>5分鐘
應用層 QPS、響應時間、錯誤率、JVM GC Micrometer + Prometheus P99>2秒、錯誤率>1%、GC暫停>500ms
資料庫層 連線數、慢查詢、主從延遲、表鎖 mysqld_exporter 連線數>80%、從庫延遲>10秒
中介軟體層 Redis命中率、MQ堆積、連線數 redis_exporter + rabbitmq_exporter MQ堆積>1000條、Redis記憶體>80%
業務層 表單提交成功率、流程審批耗時 自定義業務指標 提交失敗率>0.5%

6.2 告警渠道

告警透過AlertManager分發到不同渠道:

告警做了防抖處理——同一個指標在5分鐘內只告警一次,避免告警風暴。同時配置了告警收斂規則,關聯告警合併通知,比如"資料庫連線異常"和"應用服務資料庫連線超時"會合併成一條通知。

七、資料備份與恢復

資料是企業的命根子,備份策略必須做到位。我們的備份方案是"3-2-1原則"——3份資料副本、2種儲存介質、1份異地儲存。

7.1 備份策略

備份型別 頻率 保留時長 備份方式 儲存位置 預估大小
全量備份 每日(凌晨2:00) 30天 mysqldump --single-transaction 本地NAS + 異地物件儲存 DB大小的1-1.5倍
增量備份 每小時 7天 binlog實時同步 本地NAS 約全量的5-10%
Redis快照 每6小時 7天 RDB + AOF 本地磁碟 約記憶體大小的1-2倍
MinIO資料 實時 - 分散式糾刪碼(自動冗餘) 多節點分佈儲存 -
配置檔案 變更即備份 90天 Git版本管理 Git倉庫 + 異地 極小

7.2 恢復流程

資料恢復分兩種場景:

場景一:整個資料庫恢復(比如誤刪庫、伺服器故障)

  1. 從最近的全量備份恢復基礎資料
  2. 重放全量備份後的binlog,恢復到故障前的時間點
  3. 驗證資料完整性(行數校驗、關鍵欄位抽樣)
  4. 切換應用連線到恢復後的資料庫
  5. 預期RTO(恢復時間目標):2-4小時,取決於資料量

場景二:單表/單條資料恢復(比如誤刪某條記錄)

  1. 在臨時例項上恢復全量備份
  2. 重放binlog到誤操作前的時間點
  3. 從臨時例項中匯出需要恢復的資料
  4. 在主庫上執行資料恢復SQL
  5. 預期RTO:30-60分鐘

7.3 恢復演練

備份不演練等於沒備份。我們要求客戶每季度執行一次恢復演練——在隔離環境中模擬從備份恢復完整系統,驗證備份資料的可用性和恢復流程的可操作性。演練結果記錄在案,包括恢復時間、資料完整性校驗結果、發現的問題和改進措施。

八、安全加固

私有化部署的安全加固也不能放鬆。以下是關鍵安全措施清單:

九、效能調優建議

部署完成後,根據實際使用情況做效能調優是持續的工作。幾個關鍵調優方向:

  1. JVM調優:用G1GC替代CMS,設定-XX:MaxGCPauseMillis=200控制GC停頓時間。堆記憶體建議設為容器記憶體限制的75%。
  2. 連線池調優:HikariCP的maximumPoolSize建議設為CPU核心數×2+有效IO數。不是越大越好,連線太多反而會拖慢資料庫。
  3. 快取策略:熱點資料放Redis,設定合理的TTL。注意快取穿透和雪崩問題——空值快取+隨機過期時間。
  4. SQL最佳化:定期分析慢查詢日誌,用EXPLAIN檢查執行計劃。大表查詢該加索引加索引,該分頁分頁。
  5. 前端最佳化:靜態資源CDN加速,首屏按需載入,大表單分步渲染。
資料來源說明:本方案引用的行業資料來自 Gartner《容器管理市場指南, 2024》、IDC《中國企業數字化轉型支出指南, 2024》以及中國信通院《雲端計算白皮書(2024)》。技術方案部分基於算數科技在多個企業級客戶生產環境的實際部署經驗總結。

十、部署檢查清單

最後附上一份部署檢查清單,上線前逐項確認:

檢查項 檢查內容 透過標準
網路連通性各節點間網路互通ping延遲<1ms,無丟包
SSL證書域名證書已配置HTTPS訪問正常
資料庫主從主從複製狀態從庫延遲<1秒
Redis叢集叢集狀態正常所有節點online
服務健康所有微服務啟動正常health檢查全部UP
監控告警Prometheus採集正常所有target up
日誌收集ELK日誌正常入庫可檢索到最新日誌
備份策略備份任務已配置手動觸發備份成功
安全加固防火牆規則已配置埠掃描僅開放必要埠
壓測驗證併發壓測透過P99<2秒,錯誤率<0.1%

部署過程中遇到任何問題,隨時聯絡我們的技術支援團隊:郵箱 cooper@micount.cn,電話 18016313342。我們也提供駐場部署服務,由經驗豐富的工程師到現場協助完成部署和調優。

更多技術細節可以參考低代碼平臺技術架構白皮書瞭解平臺架構,或者看API整合開發指南瞭解介面規範。

← API整合指南 返回文件中心 →