Pigsty 1.4 正式釋出

2022-04-01 09:00:56

Pigsty v1.4 現已正式。全新的模組化架構:四大內建模組 INFRA,NODES,PGSQL,REDIS 可以獨立使用並自由組合;新增時序資料倉儲 MatrixDB 部署與監控支援;新建設了全球 CDN 加速下載;此外,Pigsty 完成種子輪融資,產品定位與戰略進行重大升級,作者表示其也將全職出來投入到此專案中。

模組化架構

公告指出,Pigsty v1.4 中最給力的特性是對底層架構的重大重構,儘管聽上去比較枯燥,但這一點確實很重要。

在 1.4 中,整個系統解耦成 4 個獨立的模組,可以獨立維護,自由排列組合使用。INFRA是Pigsty的基礎設施部分,包括監控/告警/視覺化/紀錄檔/DNS/NTP等公共元件。NODES是主機節點管理模組,PGSQL是PostgreSQL資料庫部署管控模組,REDIS是Redis資料庫部署管控模組。

全新的 Pigsty v1.4 監控首頁

如果你想將Pigsty當作單機的開箱即用的PostgreSQL發行版來使用,那麼在一臺機器上依次安裝 INFRA, NODES, PGSQL 三個模組,就會有一個立即可用的,自我監控管理的資料庫範例。

如果你想要一個生產環境的大規模主機監控系統,那麼在一臺機器上安裝INFRA模組,在所有被監控的機器節點上安裝NODES模組即可。所有的主機節點會設定有軟體源,軟體包,DNS,NTP,節點監控,紀錄檔收集,DCS Agent這些生產環境所需的元件。納入Pigsty管理的主機會帶有詳細的監控資訊,並可以用於進一步部署各式各樣的資料庫模組。

如果你想部署管理大量的PostgreSQL叢集,很簡單,在這些納入Pigsty管理的節點上再加裝 PGSQL模組即可。您可以一鍵部署各種各樣的PGSQL叢集:單範例,一主N從的高可用叢集,同步叢集,法定人數提交的同步叢集,帶有離線ETL角色的叢集,異地容災的備叢集,延遲複製叢集,Citus分散式叢集,TimescaleDB叢集,MatrixDB資料倉儲叢集。

如果你想部署並監控管理很多Redis叢集,也很簡單。只要在Pigsty託管的節點上加裝REDIS模組即可。而且後續新增新型別的資料庫也更加容易了:KAFKA, MINIO, MYSQL,…… 這些模組都可以用一種類似的方式加入到Pigsty中。一個成功的開源專案離不開開發者的貢獻,而簡潔優雅的架構,可以極大降低貢獻的門檻。

Pigsty 1.4 在模組化上進行了大量的工作。無論是設定項,名稱空間,劇本,標籤,監控面板,全部按照這四個模組進行分類統籌。例如,下面是按照模組劃分的劇本與設定項:

模組化後的劇本與設定引數

全新資料庫支援

PostgreSQL是一個相當全能、相當完美的資料庫核心了,但正所謂:紅花還需綠葉配,一個好漢三個幫。當組織與資料成長到一定規模後,使用專有資料元件的需求也會隨之出現。最典型的兩類是:以Redis為代表的快取,以及以Greenplum為代表的資料倉儲。

Redis可以進一步強化業務系統的OLTP處理能力,分擔資料庫壓力,模型簡單易用,受到廣受開發者的喜愛。而Greenplum則可以顯著強化業務系統的OLAP能力,採用與PostgreSQL一致的語言、驅動與介面,將資料分析的量級從幾十TB提升到PB乃至ZB的級別。

Redis與Greenplum在兩個方向上擴充套件了PostgreSQL的能力邊界,這兩者都是PostgreSQL的拍檔,經常在一起組合使用。因此,Pigsty在v1.4中提供了對Redis與Greenplum的初步支援。

Redis Overview 面版

不過,Pigsty支援的並不是原生的Greenplum,而是它的一個分支:MatrixDB。Greenplum的正式版本目前仍然是6.x,基於PostgreSQL 9.6核心,有些太老了。而MatrixDB則基於Greenplum 7和PostgreSQL 12核心,還有額外的時序功能支援。因此Pigsty目前使用MatrixDB作為Greenplum的替代實現。

Pigsty v1.4 最得意的一點在於,並沒有一個專門的 MATRIXDB 模組,MatrixDB的部署完全複用了 PGSQL 模組。您可以用熟悉的設定引數來設定 MatrixDB。在 Pigsty 看來,一套MatrixDB資料倉儲在邏輯上就是N對標準的一主一從PGSQL叢集:一個標準的Master叢集(Master & Standby),以及很多組散佈在多個節點上的Segment叢集(Primary & Mirror)。所有PGSQL的面板都可以直接用在MatrixDB上。

PGSQL MatrixDB 面版

專用的Dashboard:PGSQL Matrix用於展示一套MatrixDB的核心監控指標,其他監控面板均複用已有的PGSQL面板。

定義上面的4節點MatrixDB只需要這些設定

監控系統演進

監控系統一直以來在Pigsty中扮演著核心角色。在1.4中,Pigsty的監控系統也有著很顯著的改進。

主機監控

Pigsty v1.4 引入了一個全新的功能:節點監控,這也是模組化改造的一個直接成果。這並不是說以前Pigsty沒有關於機器節點的監控指標,而是在以前,機器的監控指標是1:1與PostgreSQL範例繫結的。對於一個PostgreSQL資料庫發行版來說,這樣的設計是沒有問題的。但隨著Pigsty的發展,這樣的設計就開始顯得不合時宜了。

NODES Overview面板,提供所有節點的導航

使用者可能有各種各樣的使用方式與部署策略,例如,在一個節點上部署多個資料庫範例,甚至部署多種不同型別的資料庫。在這種情況下,合適的做法是把節點的管理與監控單獨抽離出來,不與具體的資料庫型別繫結。

這樣做有兩個顯著的好處:一是如果使用者不需要資料庫監控與管理,只需要節點的監控與管理,那麼會比以前簡單很多;第二是一個節點上可以部署多個甚至多種資料庫,並複用同樣的節點監控指標資料。任何時候,你只要點選IP地址,就可以跳轉到具體的NODES Instance,檢視該節點的詳情。

曾經的PGSQL Node 現在變為 NODES Instance

節點監控提供了全域性概覽,叢集,以及單個節點三種不同的層次。節點的叢集可以設定為預設與PostgreSQL資料庫叢集保持一致,也可以有獨立的身份設定。方便您從不同的角度來透視叢集資源。

 

新增的Nodes Cluster 面板,關注一組節點的聚合指標與叢集內的水平對比

雖然Pigsty的定位是開箱即用的PostgreSQL發行版,但其中也包含著主機監控的最佳實踐。有些使用者根本不care資料庫,只是拿Pigsty做主機監控…。

紀錄檔收集

在Pigsty 1.4中,Loki與Promtail紀錄檔收集元件升級為整個系統的預設元件。Loki是Grafana出品的紀錄檔收集方案,採用與Prometheus類似的標籤體系,與PromQL類似的LogQL。是一個輕量化,優雅簡潔的紀錄檔收集、處理、分析解決方案。經過了一年時間的測試與打磨,現在Loki已經成為了Pigsty的預設組成部分。會實時收集各式各樣的紀錄檔:節點的syslog, dmesg, cron紀錄檔,資料庫postgres/pgbouncer/patroni的紀錄檔,以及Redis紀錄檔。

INFRA板塊的 LOGS Instance監控面板,可以實時瀏覽搜尋所有紀錄檔。

ELK對於SRE的紀錄檔需求過重,其實大家想要的就是一個高效快速的大規模並行GREP,Loki在這件事上乾的很出色。

此外,除了節點紀錄檔,你也可以從新的INFRA Overview面板,查閱基礎設施產生的實時紀錄檔資料。 

INFRA板塊的Overview面板,可以看到基礎設施的各項紀錄檔

PGSQL監控

Pigsty v1.4 提供了對新資料庫種類的監控支援,但對於經典的PostgreSQL監控也沒有落下。在1.4中,大量PGSQL的監控面板進行了調整與重置,最具有代表性的就是PGSQL Cluster面板。

全新的 PGSQL Cluster 監控面板首屏

PGSQL Cluster是Pigsty資料庫監控中最核心的監控面板之一,承上啟下,用於呈現一個自治資料庫叢集的關鍵狀態。新的設計隱藏了不必要的資訊,聚焦於叢集資源。您可以從首屏快速點選叢集內的資源物件,前往細分的監控面板:包括節點,範例,負載均衡器,服務,資料庫,服務元件。

除了叢集資源物件,PGSQL Cluster的首屏只呈現最關鍵的監控指標,報警事件,叢集/範例壓力水位。其他細節都隱藏在下面的專題欄中。

成員詳情表在預設隱藏的第二欄中

第二個顯著改進是新增的 PGSQL Databases 面板。在過去,資料庫內監控只關注單個範例內的單個物件。但對於表、索引這樣的業務物件,我們更關注的是它們在整個叢集內的整體指標。PGSQL Databases面板為此而生。您可以查詢某一個資料庫在整個叢集內的表現,水平對比叢集間不同範例的差異:

 

PGSQL Databases面板:agg(metrics{datname=*}) by (ins)

更重要的是,你可以看到每一張表,每一類查詢在叢集範圍內的彙總檢視。例如,你可以查閱一張表或一類查詢在叢集主庫與從庫範例上的QPS,或者確認某一個索引在叢集不同範例上的使用情況,從而對業務與應用進行有針對性的優化。 

庫內物件在叢集層面的彙總展示:Tables & Queries,點選下鑽。

帶顏色的TreeMap可以快速反映出兩個維度的屬性:對於表而言,大小代表表佔用的空間,顏色代表表被存取的頻次。對於查詢而言,大小代表在此查詢上耗費的總時長,顏色代表該類查詢的平均響應時間。

應用面版

除了INFRANODESPGSQLREDIS四個核心模組外,Pigsty Grafana的首頁還有一個板塊:APP。這是留給使用者自己的應用的。任何帶有APPOverview標籤的監控面版會被列入Pigsty的面版導航中。Pigsty自帶了一個開箱即用的小應用 PGLOG,用來分析PG自身的CSV紀錄檔,您可以快速從紀錄檔中定位異常,並快速定位跳轉到具體連線的詳情頁。

PGLOG Overview,使用快捷方式快速將紀錄檔灌入應用表中分析。

此外,Pigsty還建立一個專用的程式碼倉庫:Vonng/pigsty-app ,用於盛放Pigsty樣例應用:https://github.com/Vonng/pigsty-app 。目前的應用包括: 

  • ISD:NOAA全球地表氣象站歷史天氣資料查詢
  • COVID:WHO新冠疫情資料查詢
  • DBENG:DB-Engine 資料庫流行度趨勢與預測
  • APPLOG:Apple應用隱私紀錄檔視覺化
  • WORKTIME:國內大公司上下班時間查詢

後續將不斷新增更多資料應用的樣例。

 

DBEng Trend: 使用權威網站DBEngine流行度趨勢資料,預測PostgreSQL什麼時候會成為世界上最流行的關係型資料庫。

 

安裝體驗優化/CDN

此前Pigsty使用Github作為釋出平臺,中國大陸存取起來還是比較吃力的。經常需要從百度網路硬碟映象下載,再手工拷貝到伺服器上去。使用者的體驗就是我們的追求,所以我們又啟用了全球CDN加速域名 http://download.pigsty.cc ,朗朗上口,非常好記。例如最新的軟體原始碼包與離線軟體包的下載地址分別為:

 

  • http://download.pigsty.cc/v1.4.0/pigsty.tgz (2MB)
  • http://download.pigsty.cc/v1.4.0/pkg.tgz(940MB)

Pigsty的軟體包進行了一次重新梳理與瘦身,從原本的1.3GB壓縮至v1.4的940MB。需要安裝Greenplum與MatrixDB的使用者,單獨下載另一個離線軟體包 matrix.tgz (338MB)即可。

一鍵安裝是Pigsty的光榮傳統。儘管如此,下載一直以來都是最最不讓人省心的地方。因此在Pigsty v1.4中提供了專用的下載指令碼 download,可用於自動下載並解壓可選的軟體包 pkg.tgz, matrix.tgz, app.tgz。這個指令碼會自動檢測您的網路環境是不是在牆內,如果在牆外使用預設的Github Releaes,在牆內則使用騰訊雲CDN下載。

當然,download 本身也是 pigsty原始碼包的一部分,因此官方還提供了一條類似homebrew 的一鍵安裝命令,用來一鍵下載最新的 pigsty 原始碼包。於是,現在安裝Pigsty的流程如下所示了:

bash -c "$(curl -fsSL http://download.pigsty.cc/get)" # 下載
./download pkg matrix app   # 下載並解壓可選的擴充套件軟體包(可選步驟)
cd ~/pigsty && ./configure  # 設定
make install                # 安裝

典型使用者案例

探探是Pigsty最大的使用者案例,也始終是第一個吃螃蟹的人。2022年3月份,探探下線了最後一套遺留的舊PostgreSQL資料庫 pg.meta.tt,生產環境所有資料庫均已遷移至Pigsty,一百套叢集全部由Pigsty v1.3.1所託管(監控系統版本為1.4)。所有叢集的高可用自動切換也已經啟用,歷時近兩年的資料庫飛昇專案正式宣告完工。

探主生產環境的Pigsty部署:240範例13400核的PostgreSQL OLTP叢集。

在探探,Pigsty經過了長時間,大規模,高強度,慘無人道的實際生產環境測試。在兩年的時間裡不斷打磨完善,最終演變為今天的樣子。在近日的混沌工程演練中,運維隨機挑選資料庫機器進行多次宕機演練,Pigsty在無人值守的情況下可以自動進行高可用主從/流量切換。從庫宕機無業務影響,主庫宕機對業務寫入影響不超過在1分鐘。

 

一次典型從庫宕機現場,讀流量迅速由主庫承擔,業務只有極個別現場查詢中斷報錯,而後立即恢復。

 

一次典型主庫宕機現場。主庫宕機30s後,從庫被提升新主庫,影響30s業務寫入請求後自愈。

潛在合作伙伴

公告指出,一個籬笆三個樁,一個好漢三個幫。想要做大事,首先要確定的一點就是,誰是我們的敵人,誰是我們的朋友。Pigsty定位了兩個潛在的合作伙伴Sealos,Bytebase,準備進行進一步接觸。

Sealos是一個很有趣的開源專案,可以把整個執行中的K8s叢集打成映象,然後一鍵部署到其他地方,Pigsty和Sealos很互補:很多SaaS都是DB + App的方式。有了一個開箱即用的資料庫,就差一個開箱即用的應用生態了,把SaaS軟體丟進K8s裡整體打成映象,交付什麼Gitlab,Jira,Confluence,Odoo,Habour,金蝶啥的就很簡單了,拉起來填個資料庫連線串全部搞定。

另一個比較關注的專案是ByteBase,這是一個做資料庫Schema Migration的工具。用Go開發清清爽爽無依賴,使用PostgreSQL作為後端資料庫,又可以用來做PostgreSQL的模式變更管理。那確實是極好的,Pigsty可以用來做ByteBase的Backend Database,ByteBase也可以作為Pigsty的Migrator,預計在下個版本中會新增一個對ByteBase基本的整合與支援。

產品定位轉換

Pigsty,是Postgres in Graph STYle的縮寫,即圖形化PostgreSQL的意思,在最初,它是一個針對PostgreSQL開發的專業監控系統。後來,隨著各種各樣功能的引入(宣告式定義,一鍵部署,高可用PG,自動流量切換,資料分析與視覺化元件),Pigsty在1.0的時候,定位調整為「開箱即用的PostgreSQL資料庫發行版」。而現在,Pigsty v1.3提供了Redis部署監控的支援,1.4又引入了時序資料倉儲MatrixDB監控部署支援。單一的 PG發行版 定位已經限制了Pigsty的想象力與可能性。

開箱即用的發行版

RedHat for Linux

  • Pigsty打包最新PostgreSQL核心(14),整合強力的地理空間外掛PostGIS3.2,時序資料庫外掛TimescaleDB2.6,分散式擴充套件外掛Citus10,以及上百功能擴充套件,全部一鍵安裝,開箱即用。
  • Pigsty整合了完整的大規模資料庫監控管控解決方案:Grafana,Prometheus,Loki,Ansible,CMDB。亦可作為生產級應用執行時直接使用,監控管理其他資料庫與應用。
  • Pigsty整合了資料分析生態的常用工具:Jupyter,Echarts,Grafana,PostgREST,Postgres。可以低程式碼的方式,開發互動性資料應用與資料視覺化作品。快速產出作品原型,並以標準的方式分享,演示與交付。

多快好省的開發者工具:

HashiCorp for Database!

  • Pigsty採用Infra as Data的設計理念,使用者描述自己想要什麼樣的資料庫叢集,而Pigsty自動為您建立!Just like Kubernetes!
  • Pigsty提供靈活豐富的部署支援,本地沙箱,雲端,多雲部署。無論是高規格物理機還是1核1G虛機均可執行,保持生產、預發、開發、測試環境高度一致。
  • Pigsty可以極大簡化資料庫部署實施維護工作,極大降低PostgreSQL資料庫運維與使用的門檻,量產DBA,有效降低軟硬體人力成本。使用雲廠商伺服器的牛,耕雲資料庫的田,也能減少50%以上的TCO,自建機房更是能節省80%的成本費用。

Pigsty為DBA留下了兩個安全出口:PITR備份與等保安全加固。

自動駕駛SRE解決方案:

Alternative for RDS!

  • 終極可觀測性:監控是有效管理的基石。沒有完善的監控,SRE無從談起。Pigsty帶有終極的可觀測性,以BI的思路設計監控系統,從最頂層的全域性洞察到最細節的每一個物件,都可以獲取實時洞察,為決策提供資料支撐,做到「心中有數」。
  • 高可用資料庫叢集:Pigsty整合了久經考驗的生產級高可用資料庫架構方案:主從異地容災,硬體故障自愈,高可用自動切換,自帶連線池與負載均衡器,提供分散式資料庫般的體驗。冷備份與延時從庫可有效應對各類軟體故障與人為故障,確保系統穩定執行。極大簡化運維工作。
  • Pigsty還可以作為完整的SRE解決方案:主機監控,應用部署,並將逐步新增其他資料庫的部署與監控:Redis/Greenplum/Kafka/Minio,或支援其他SaaS服務,製作POC,交付Demo等。

未來路線規劃

作者表示,從長期來看,他希望在 Pigsty 中再新增 Minio,Kafka 支援,讓整個產品形成一個以PostgreSQL為核心的整體解決方案,覆蓋中小型企業完整生命週期的資料儲存需求,打造一個開源的、私有的雲資料庫管控整體解決方案。關係型資料庫PostgreSQL作為核心,快取Redis強化TP能力,數倉Greenplum/MatrixDB強化大規模資料分析能力,物件儲存Minio用於備份管理以及儲存影象音視訊等資料,訊息佇列Kafka提供資料匯流排的能力。通過完備的ETL/CDC支援將這些資料元件融為一體,實現turning the database inside-out!

從短期來看,Pigsty將盡可能充分利用元節點上的CMDB。CMDB模式應當儘快適配多模資料庫,命令列工具也應當及時更新,提供類似於雲CLI工具的使用體驗。多雲部署與雲廠商適配也應當儘快弄起來。監控面板也有大量的改善空間,包括Catalog資料探勘與呈現,紀錄檔分析與提煉。從可觀測性的角度講,Blackbox黑盒探測與Mtail/Promtail紀錄檔衍生指標還有不小的創新空間。資料庫模式演化,可以考慮使用開源的解決方案Bytebase。PostgREST的能力也有待進一步發掘。冷備份/PITR是Pigsty留給DBA們的一個安全出口,但也應當準備一個Best Pracetice指南。

詳情可。

展開閱讀全文