MathJax

MathJax-2

MathJax-3

Google Code Prettify

置頂入手筆記

EnterproseDB Quickstart — 快速入門筆記

由於考慮採用 EnterpriseDB 或是直接用 PostgreSQL 的人,通常需要一些入手的資料。這邊紀錄便提供相關快速上手的簡單筆記 ~ 這篇筆記以 資料庫安裝完畢後的快速使用 為目標,基本紀錄登入使用的範例:

2019年4月4日 星期四

以一個 VM 擋十個 LXC Container — 具有 SystemD 功能的軟體叢集演練環境設置筆記

之前有紀錄一個用 Docker 運作包含 SystemD 的 Container。但是用起來還是有點不順手。因為畢竟 Docker 已經針對 Image 作很多特點上的調整,若用來作單純的 OS 操作,其實並不夠方便。

後來發現 Docker 的前身,LXC,雖然功能不及 Docker 豐富,但是其特性恰巧更適合把 Container 當成 OS 來操作。尤其在演練需要設置叢集的軟體時,更值得用 LXC 節省測試環境的資源開銷。

[Update 2019/6/9LXD(LXC 強化版)的筆記在這:比這一系列更輕易設定~還可以設定多張虛擬網卡環境喔
[Update 2019/9/7] LXD 裡面確認可以運作 Docker Swarm 叢集了,筆記在這

CentOS 7.x 上面的 LXC 測試環境 (7) - 在 LXC Container 裡面執行 Docker CE Engine(Container in Container)

理想上,要演練 docker Swarm 或是 K8S 的功能,通常會需要多個 VM 來測試叢集,不過這樣自己的電腦都會卡卡的。。。有了 LXC,就會想嘗試替代多個 VM,來設置這樣的「多節點」環境,讓電腦更輕鬆的運作這樣的叢集~

但是。。目前的現狀(LXC 2 / LXD 3 以及 Docker 18.09),Docker CE Engine 雖然可以運作,但是  Docker Swarm 部份,會嘗試載入 Kernel Module,以提供正常的 Overlay 網路功能,目前這一部份在 LXC/LXD 裡面還是有些狀況。。。

不過,這邊把目前作的到的,在 LXC 裡面設置 Docker Engine 的筆記,一樣紀錄起來。至於 Docker Swarm,可能要看看以後有沒有機會改善了。。

[Update 2019/9/7] LXD 裡面確認可以運作 Docker Swarm 叢集了,筆記在這

CentOS 7.x 上面的 LXC 測試環境 (6) - 在 CentOS 7 Host 建立 CentOS 6 LXC Container

有時需要準備 CentOS 6 的環境,可以直接利用 LXC Container。
LXC 的進階專案 LXD 提供 Container Image Repository,可以直接抓需要的 Linux Distribution。
這份筆記紀錄在 LXC 產生 CentOS 6 Container 的方式。
Note] 由於 RHEL 6 會在 11/30/2020 EOL,不能確定到時是否 Repository 是否還會提供

CentOS 7.x 上面的 LXC 測試環境 (5) - 把 LXC Container 裡面的服務的 Port 轉發到 Host 的 Port

不是所有軟體都靠指令、Confing 互動就可以完成,有些產品需要把服務的 Port 映射到 Host 的 Port 上讓外部可以存取,才有辦法進行進一步的操作跟演練。例如,許多產品有提供 Web UI 的界面作管理操作,若放在 Container 裡面,就會需要把相關網頁服務弄出來,讓外面可以正常用瀏覽器開啟,進行操作。

這邊示範把某個 Apache HTTPd 服務的 Container 的 80 Port 導向 Host VM 的某個 Port(這邊一樣選 Host 的 80 Port),以便讓我們進行操作。

CentOS 7.x 上面的 LXC 測試環境 (4) - 將 Host 目錄同時掛載到多個 LXC Container 中

LXC 可以讓不同 Container 之間都可以共同存取,用來假裝 NFS 目錄,作一些情境演練。例如,PostgreSQL 的 HA 設置中,需要共用目錄存放 WAL 備份。
當然,直接讓某個 Container 設置 NFS 讓其他 Container 存取也是完全 OK 的~

CentOS 7.x 上面的 LXC 測試環境 (3) - 建立 LXC Container 環境使用的 Local YUM Repo

有些提供 RPM 的軟體產品,需要演練在客戶端離線安裝的狀況。
這份紀錄如何預先下載套件,並建立 Local YUM Repo 讓其他 Container 存取。
這邊會使用到 HTTPD 服務,上一份已經預先處理好了。
這份筆記內容
 - 延續上一篇筆記的環境,搭配 EDB 的軟體安裝檔作建立 YUM Repo 的示範。
 - 使用 YUM Download Only 功能,預先準備需要的相依 RPM
這邊的範例,也可以適用到其他東西上~
(Note:這篇在 LXC 上面並不顯然喔,需要小小 Workaround 才行~)

2019年4月3日 星期三

CentOS 7.x 上面的 LXC 測試環境 (2) - 透過一些簡易 Script 使用 Container

因為篇幅的關係,這篇緊接著前一篇筆記,繼續完成 LXC 的基本使用。
這部份會提供的 Script:

  1. 建立一個 CentOS 7 Container
  2. 啟用一組 Container、查看現有 Container
  3. 登入 Container
  4. 停用所有 Container

CentOS 7.x 上面的 LXC 測試環境 (1) - 建立測試環境

這份筆記要利用 Linux Container(LXC)功能,設置輕量的軟體產品叢集演練環境,並且完整支援 OS 的 INIT 控制指令(CentOS 7 的 SystemD)。相較於使用多個 VM,透過 LXC,記憶體用量與磁碟用量都可以相當比例的節省,可以在一台電腦上撐更多模擬的主機節點,適合用在教育訓練或體驗營中。唯獨 Container 初始化都是精簡的內容,有些指令可能需要手動安裝才行,這需要事前需要先演練一次,才能確認需要補上的 Package。

這邊使用的 Container Host 為 CentOS 7.x,主要的要求是 Linux Kernel 需要 3.x 以上(可以用 CentOS 6.x、但是需要搭配 libvirt),並且採用 SystemD 作為 INIT 系統的 OS(方便後續的演練相容性)。

不使用 Docker 的理由:Docker Container 主在求精鍊,並打包成 Image 透過載入的方式產生運行的軟體服務。Docker Container 也傾向以 “1 image, 1 service” 來處理,不傾向在裡面啟動多個服務。Docker Container 裡面簡化 INIT 的支援,因此把 Docker Container 當成 OS 作演練比較麻煩。LXC Container 單純以 chroot 手法,以實體 OS 目錄運作,且完整支援 SystemD INIT,更加貼近實際架構設置環境,比起 Docker 長的更像一個 VM,比較適合作演練用途。

下圖為設置後的環境範例

這份筆記的範圍:
  • 設置具有 LXC 的 VM 環境(Privileged Container)
  • 設置基本 Container 網路,使 (1) Container 之間互通 (2) Container 可以訪問外面
緊接著在下一篇,會提供幾個簡易的控制 Script(產生 Container、啟動、停止、進入 Console)。

這邊的 Container 使用的是 Privileged Container,使用 root 啟動、進入後也是 root 帳號,僅作為練習環境用。普通帳號用的 Unprivileged Container 不在這筆記的範圍。

2019年4月1日 星期一

Postgres 設定系統參數 (GUC) 的小小注意事項

PostgreSQL 的設定檔 $PGDATA/postgresql.conf 是一份落落長的文字檔,裡面放了大多數要設定的資料庫參數(稱作 GUC),大多狀況要進行設定的參數僅僅十多項而已,但編輯的時候,總是令人頭昏眼花。

不過,除了直接修改 $PGDATA/postgresql.conf 內容之外,其實還可以用 ALTER SYSTEM 這個 SQL 指令調整這些參數值。