kdbom avatar

開箱即用的強大開源PostgreSQL發行版

🕙 by kdbom

一次性解決PostgreSQL使用中的各類問題 全面專業的PostgreSQL監控終極解決方案 簡單易用的PostgreSQL部署管控置備方案 一鍵拉起的PostgreSQL全能本地沙箱環境 基於Apache License 2 的開源免費軟體

Snipaste_2021-09-22_21-28-07

亮點特性

  • 開箱即用的軟體系統,一鍵拉起生產環境所需的功能套件,開源免費
  • 全面專業的監控系統,基於GrafanaPrometheuspg_exporter等開源元件。
  • 簡單易用的部署方案,基於Ansible的裸機部署,卻提供類似Kubernetes的使用體驗。
  • 高可用資料庫集群架構,基於Patroni實現,具有秒級故障自愈能力,久經生產環境考驗。 集成負載均衡,成員對外表現等價,提供類似分散式資料庫的體驗。
  • 基於DCS的服務發現與配置管理,維護管理自動化,智慧化,無需人工維護元數據。
  • 無需互聯網訪問與代理的離線安裝模式,快速、安全、可靠。
  • 代碼定義的基礎設施,可配置,可定製,可擴展。
  • 基於PostgreSQL13(支援14beta),打包PostGIS,Timescale,Citus等強力擴展。
  • 集成Echarts,Jupyterlab等工具,可作為數據分析與可視化的集成開發環境。
  • 架構方案經過長時間大規模的生產環境驗證(200餘節點,64C|400GB|3TB,18個月)

發行版

**發行版(Distribution)**指的是由內核及其一組軟體包組成的整體解決方案。 例如Linux是一個操作系統內核,而RedHat,Debian,SUSE則是基於此內核的操作系統發行版。

Pigsty將集群部署,擴容縮容,主從複製,故障切換,流量代理,連接池,服務發現,訪問控制,監控系統,告警系統,日誌採集等生產級成熟解決方案封裝為發行版,一次性解決在生產環境與各類場景下使用**世界上最先進的開源關係型資料庫 —— PostgreSQL**時會遇到的問題, 真正做到開箱即用。

image-20210922212928522

監控系統

監控系統提供了對系統狀態的度量,是運維管理工作的基石。

Pigsty帶有一個針對大規模資料庫集群管理而設計的專業級PostgreSQL監控系統。 包括約1200類指標,20+監控面板,上千個監控儀錶盤,覆蓋了從全域大盤到單個物件的詳細資訊。 與同類產品相比在指標的覆蓋率與監控面板豐富程度上一騎絕塵,為專業使用者提供無可替代的價值。

img

一個典型的Pigsty部署可以管理幾百套資料庫集群,採集上千類指標,管理百萬級時間序列,並將其精心組織為上千個監控儀錶盤,交織於幾十個監控面板中實時呈現。 從全域大盤概覽,到單個物件(表,查詢,索引,函數)的細節指標,如同即時的核磁共振/CT機一般,將整個資料庫剖析的清清楚楚,明明白白。

Pigsty监控系统由目前由三个紧密联系的应用共同组成:

  • 收集并呈现监控 指标(Metrics) 数据的 pgsql
  • 直接浏览数据库系统 目录(Catalog)pgcat
  • 实时查询搜索分析数据库 日志(log)pglog

Pigsty監控系統基於業內最佳實踐,採用Prometheus、Grafana作為監控基礎設施。 開源開放,定製便利,可復用,可移植,沒有廠商鎖定。 可與已有PostgreSQL資料庫實例集成,亦可用於其他資料庫或應用的監控。

部署方案

資料庫是管理數據的軟體,管控系統是管理資料庫的軟體。

Pigsty內置了一套以Ansible為核心的資料庫管控方案,並基於此封裝了命令行工具與圖形介面。 它集成了資料庫管理中的核心功能:包括資料庫集群的創建,銷毀,擴縮容;用戶、資料庫、服務的創建等。

Pigsty採納Infra as Code的設計哲學,使用類似 Kubernetes 的聲明式配置,通過大量可選的配置選項對資料庫與運行環境進行描述,並通過冪等的預置劇本自動創建所需的資料庫集群,提供私有雲般的使用體驗。

使用者只需要通過配置檔或圖形介面描述"自己想要什麼樣的資料庫",而無需關心Pigsty如何去創建或修改它。 Pigsty會根據使用者的配置檔清單,在幾分鐘內從裸機節點上創造出所需的資料庫集群。

例如,在三台機器上創建一主兩從的資料庫集群,只需要幾行配置與一行命令,即可創建出如下一節所介紹的高可用資料庫集群。pg-test``pgsql.yml -l pg-test

img

高可用集群

Pigsty 建立的資料庫集群是分散式、高可用資料庫集群。 只要集群中有任意實例存活,集群就可以對外提供完整的讀寫服務只讀服務

資料庫集群中的每個資料庫實例在使用上都是冪等的,任意實例都可以通過內建負載均衡元件提供完整的讀寫服務。 資料庫集群可以自動進行故障檢測與主從切換,普通故障能在幾秒到幾十秒內自愈,且期間只讀流量不受影響。

Pigsty的高可用架構久經生產環境考驗,Pigsty使用Patroni + Consul(為可選)進行故障檢測、Fencing、以及自動切換,通過HAProxy、VIP或DNS實現流量的自動切換,以極小的複雜度實現了完整的高可用方案,讓主從架構的資料庫用出了分散式資料庫的體驗。etcd

image-20210922213047690

Pigsty允許使用者通過配置靈活定義服務,並提供了多種可選的資料庫接入模式。 例如Pigsty沙箱預設使用DNS+二層VIP+Haproxy的接入層方案(如上圖所示):Haproxy冪等地部署在集群的每個實例上,任何一個或多個Haproxy實例都可以作為集群的負載均衡器,並通過健康檢查進行流量分發,對外遮罩集群成員的區別。 而同樣的功能亦可通過四層VIP實現,用戶可根據自身基礎設施情況靈活選擇。

沙箱環境

使用PostgreSQL不僅僅是企業,還有許許多多多個人使用者:用於軟體的開發、測試、實驗,演示;或者是數據的清洗,分析,可視化,存儲。 然而如何搭建環境往往成為使用者面前的第一道攔路虎。

儘管Pigsty是針對大規模生產環境PostgreSQL資料庫管理的解決方案,但它也可以完整運行於1核1GB的微型虛擬機中。 Pigsty可以在您的筆記本或PC機上一鍵拉起完整的生產級PostgreSQL沙箱,這是通過Vagrant調用Virtualbox自動創建虛擬機來實現的。

默認沙箱配置為2核4GB的單節點,帶有各類實用工具,可服務於各種用途。 此外還有四節點版本的完整版沙箱,可用於充分展現Pigsty高可用架構與監控系統的能力,或用於生產模擬環境搭建。

image-20210922213118991

數據分析與可視化

Pigsty帶有完善的數據分析工具集,如Jupyterlab,IPython,PostgreSQL,Grafana,Echarts。 用戶可以將Pigsty單機沙箱用作數據分析與可視化的集成開發環境:使用SQL與Python進行數據處理,並通過Grafana與Echarts快速製作互動式數據應用。

Pigsty自帶有兩個樣例:新冠疫情數據可視化covid,全球地表氣象站數據查詢isd

img

img

快速上手

拉起Pigsty最少只需要三条命令:下载配置安装,详见快速开始

image-20210922213155421

准备新机器一台:Linux x86_64 CentOS 7.8,配置免密码与登陆权限。sudo``ssh

Bash:
1
2
3
4
5
6
7
8
# 离线下载
# curl -SL https://github.com/Vonng/pigsty/releases/download/v1.0.1/pigsty.tgz -o ~/pigsty.tgz  
# curl -SL https://github.com/Vonng/pigsty/releases/download/v1.0.1/pkg.tgz    -o /tmp/pkg.tgz

# 常规安装
git clone https://github.com/Vonng/pigsty && cd pigsty
./configure
make install

如需執行本地沙箱,可執行以下命令(MacOS)

Bash:
1
2
3
4
make deps   # 安装homebrew,并通过homebrew安装vagrant与virtualbox(需重启)
make dns    # 向本机/etc/hosts写入静态域名 (需sudo输入密码)
make start  # 使用Vagrant拉起单个meta节点 (start4则为4个节点)
make demo   # 使用单节点Demo配置并安装    (demo4则为4节点demo)

接下來,您可以參考快速上手-簡介探索更多關於Pigsty的內容。

Demo

http://demo.pigsty.cc提供了公開的演示。 您可以在這裏瀏覽Pigsty 監控系統提供的功能。 Pigsty自帶有兩個有趣的數據應用:WHO新冠疫情數據大盤:covid,與全球地表氣象站歷史數據查詢:isd

Pigsty部署方案與其他功能則可以通過沙箱環境在本機體驗,教程【使用Postgres作為Grafana後端資料庫】將會以一個具體的例子介紹Pigsty提供的管控功能。

協定

Pigsty基於Apache 2.0協議開源,可以免費用於商業目的。

改裝與衍生需遵守Apache License 2.0的顯著聲明條款。

💘 相关文章

写一条评论

Based on Golang + fastHTTP + sdb | go1.16.4 Processed in 1ms