Pigsty開箱即用的 PostgreSQL 發(fā)行版
Pigsty 是開箱即用的開源 PostgreSQL 發(fā)行版。帶有全面專業(yè)的監(jiān)控系統(tǒng),穩(wěn)定可靠的部署方案;提供簡單省心的用戶界面,與靈活開放的擴展機制。
Pigsty 可以用于大規(guī)模生產(chǎn)數(shù)據(jù)庫的監(jiān)控部署與管理;也可以在本地1核1GB的虛擬機中運行,用于學(xué)習(xí),開發(fā),測試與數(shù)據(jù)分析等場景。
亮點特性
- 全面專業(yè)的監(jiān)控系統(tǒng),基于Grafana & Prometheus &
pg_exporter - 穩(wěn)定可靠的部署方案,基于Ansible的物理機/虛擬機部署。
- 簡單省心的安裝方式與用戶界面,開箱即用的沙箱環(huán)境,降低使用門檻。
- 高可用數(shù)據(jù)庫集群架構(gòu),基于Patroni實現(xiàn),具有秒級故障自愈能力。
- 基于DCS的服務(wù)發(fā)現(xiàn)與配置管理,維護(hù)管理自動化,智能化。
- 無需互聯(lián)網(wǎng)訪問與代理的離線安裝模式,快速且可靠。
- 代碼定義的基礎(chǔ)設(shè)施,可配置,可定制。
- 基于PostgreSQL 13 (14beta現(xiàn)已支持!)與Patroni 2.0,享受最新特性。
- 長時間的大規(guī)模生產(chǎn)環(huán)境驗證(200+ node x 64C|400GB|3TB)
功能介紹
監(jiān)控系統(tǒng)
Pigsty帶有一個針對大規(guī)模數(shù)據(jù)庫集群管理而設(shè)計的專業(yè)級PostgreSQL監(jiān)控系統(tǒng)。包括約1200類指標(biāo),20+監(jiān)控面板,上千個監(jiān)控儀表盤,覆蓋了從全局大盤到單個查詢的詳細(xì)信息。面向?qū)I(yè)用戶,提供不可替代的價值點。
Pigsty監(jiān)控系統(tǒng)基于業(yè)內(nèi)最佳實踐,采用Prometheus、Grafana作為監(jiān)控基礎(chǔ)設(shè)施。開源開放,定制便利,可復(fù)用,可移植,沒有廠商鎖定。可與各類已有數(shù)據(jù)庫實例集成。
部署方案
數(shù)據(jù)庫是管理數(shù)據(jù)的軟件,管控系統(tǒng)是管理數(shù)據(jù)庫的軟件。
Pigsty內(nèi)置了一套以Ansible為核心的數(shù)據(jù)庫管控方案。并基于此封裝了命令行工具與圖形界面。它集成了數(shù)據(jù)庫管理中的核心功能:包括數(shù)據(jù)庫集群的創(chuàng)建,銷毀,擴縮容;用戶、數(shù)據(jù)庫、服務(wù)的創(chuàng)建等。Pigsty采納“Infra as Code”的設(shè)計哲學(xué)使用了聲明式配置,通過大量可選的配置選項對數(shù)據(jù)庫與運行環(huán)境進(jìn)行描述與定制,并通過冪等的預(yù)置劇本自動創(chuàng)建所需的數(shù)據(jù)庫集群,提供近似私有云般的使用體驗。
Pigsty吸納了Kubernetes架構(gòu)設(shè)計中的精髓,采用聲明式的配置方式與冪等的操作劇本。用戶只需要描述“自己想要什么樣的數(shù)據(jù)庫”,而無需關(guān)心Pigsty如何去創(chuàng)建它,修改它。Pigsty會根據(jù)用戶的配置文件清單,在幾分鐘內(nèi)從裸機節(jié)點上創(chuàng)造出所需的數(shù)據(jù)庫集群。
Configuration Entries:
| No | Category | Function |
|---|---|---|
| 1 | connect | Connection parameters and proxy setting |
| 2 | repo | local yum and offline installation |
| 3 | node | common setup for all nodes |
| 4 | meta | infrastructure on meta nodes |
| 5 | dcs | dcs service (consul/etcd) |
| 6 | pg-install | install postgres, extensions, users, directories, scripts, utils |
| 7 | pg-provision | bootstrap postgres cluster and identity assignment |
| 8 | pg-template | customize postgres cluster template |
| 9 | monitor | install monitoring components |
| 10 | service | expose database service |
高可用
Pigsty創(chuàng)建的數(shù)據(jù)庫集群是分布式、高可用的數(shù)據(jù)庫集群。Pigsty創(chuàng)建的數(shù)據(jù)庫基于DCS、Patroni、Haproxy實現(xiàn)了高可用。數(shù)據(jù)庫集群中的每個數(shù)據(jù)庫實例在使用上都是冪等的,任意實例都可以通過內(nèi)建負(fù)載均衡組件提供完整的讀寫服務(wù),提供分布式數(shù)據(jù)庫的使用體驗。數(shù)據(jù)庫集群可以自動進(jìn)行故障檢測與主從切換,普通故障能在幾秒到幾十秒內(nèi)自愈,且期間只讀流量不受影響。故障時。集群中只要有任意實例存活,就可以對外提供完整的服務(wù)。
Pigsty的架構(gòu)方案經(jīng)過審慎的設(shè)計與評估,著眼于以最小復(fù)雜度實現(xiàn)所需功能。該方案經(jīng)過長時間,大規(guī)模的生產(chǎn)環(huán)境驗證,已經(jīng)被多個行業(yè)內(nèi)的組織所使用。
用戶界面
Pigsty旨在降低PostgreSQL的使用門檻,因此在易用性上做了大量工作。
Pigsty的部署分為三步:下載源碼,配置環(huán)境,執(zhí)行安裝,均可通過一行命令完成。遵循經(jīng)典的軟件安裝模式,并提供了配置向?qū)АD枰獪?zhǔn)備的只是一臺CentOS7.8機器及其root權(quán)限。管理新節(jié)點時,Pigsty基于Ansible通過ssh發(fā)起管理,無需安裝Agent,即使是新手也可以輕松完成部署。
在管理與使用上,Pigsty提供了不同層次的用戶界面,以滿足不同用戶的需求。新手用戶可以使用一鍵拉起的本地沙箱與圖形用戶界面,而開發(fā)者則可以選擇使用pigsty-cli命令行工具與配置文件的方式進(jìn)行管理。經(jīng)驗豐富的DBA、運維與架構(gòu)師則可以直接通過Ansible原語對執(zhí)行的任務(wù)進(jìn)行精細(xì)控制。
服務(wù)發(fā)現(xiàn)
Pigsty提供了可選的服務(wù)發(fā)現(xiàn)機制,基于DCS(Consul/Etcd)實現(xiàn)。監(jiān)控系統(tǒng)將自動從服務(wù)注冊中心發(fā)現(xiàn)所有的監(jiān)控對象,而Patroni則使用DCS作為集中的配置存儲。Consul提供DNS可用作客戶端服務(wù)發(fā)現(xiàn)機制,而UI可以讓您對環(huán)境中的服務(wù)一覽無余。
沙箱環(huán)境
Pigsty既可以在生產(chǎn)環(huán)境中管理成百上千個高規(guī)格的生產(chǎn)節(jié)點,也可以獨立運行于本地1核1GB虛擬機中,作為開箱即用的數(shù)據(jù)庫實例使用。在本地計算機上使用時,Pigsty提供基于Vagrant與Virtualbox的沙箱。可以一鍵拉起與生產(chǎn)環(huán)境一致的數(shù)據(jù)庫環(huán)境,用于學(xué)習(xí),開發(fā),測試數(shù)據(jù)分析,數(shù)據(jù)可視化等場景。
離線安裝
Pigsty支持離線安裝,對于沒有互聯(lián)網(wǎng)訪問的環(huán)境尤為方便。Pigsty的離線安裝包中帶有監(jiān)控系統(tǒng),數(shù)據(jù)庫以及所有相關(guān)的依賴。您可以通過向?qū)ё詣酉螺d,或從Github Release頁面或CDN手工下載離線安裝包。
數(shù)據(jù)分析
Pigsty提供了一種名為“Datalet”的擴展機制,允許用戶和開發(fā)者對Pigsty進(jìn)行進(jìn)一步的定制,將其用到意想不到的地方,例如數(shù)據(jù)分析與可視化。Pigsty集成了Echarts,以及常用地圖底圖等,可以方便地實現(xiàn)高級可視化需求。比起Julia,Matlab,R這樣的傳統(tǒng)科學(xué)計算語言/繪圖庫而言,PG + Grafana + Echarts的組合允許您以極低的成本制作出可分享,可交付,標(biāo)準(zhǔn)化的數(shù)據(jù)應(yīng)用或可視化作品。
所有Pigsty高級專題監(jiān)控面板都會以Datalet的方式發(fā)布。Pigsty也自帶了一些的Datalet案例:Redis監(jiān)控系統(tǒng),新冠疫情數(shù)據(jù)分析,七普人口數(shù)據(jù)分析,PG日志挖掘等。
