21 八月

自製 PostgreSQL 2-node HA

前言

現在的雲端很發達, 幾個按鍵就可以產出一台機器, 然後也可以配合廠商的服務來做 HA。不過問題來了, 如果今天就是一個小的自行架設的機房, 兩台電腦要自己搞 HA 那要怎麼辦呢? 自行上網研究了一陣子, 得到的答案就是用 heartbeat 之類的東西。在研究的過程中, 有想過 HAProxy 或是 DNS round robin 之類的 solution, 但這都無法解決一台當掉另外一台備援要起來變成 primary 的問題。於是在看了 How to setup HAProxy with failover? 這篇文章講到 Stack Overflow 就是用 heartbeat 來做 failover 的機制。

不過這整件事情都很困難, 原因是如果搜尋 heartbeat 找到的資料似乎都已經很舊了, Linux-HA 更指出我們應該要去 Cluster Labs 才對。然後在上面出現了更多工具與名詞, 實在是容易混淆。所以這篇文章就是一個簡單的 Tutorial 一步一步在 Ubuntu Server 14.04 LTS 上架設一個 2-node failover 的 PostgreSQL HA。

如果你想要有更多資源的話, Ubuntu 的環境底下, Cluster Labs 的文件要看 Pacemaker 1.1 for CMAN or Corosync 1.x: Clusters from Scratch。然而官方的文件有非常多的錯誤, 因此還是會踩到一大堆雷。Ubuntu 自己也有一些筆記, ClusterStack/Natty, 而 PostgreSQL 的則是 High Availability with PostgreSQL and Pacemaker 這篇文章。基本上就是使用到 corosync 與 pacemaker 這兩個套件做 HA / Failover, 用 DRBD 來做網路磁碟同步, 因此上網搜尋也可以找這幾個關鍵字。

下面的 Tutorial 其實就是根據 High Availability with PostgreSQL and Pacemaker 這篇為基礎的。

Read More

12 十月

antispam: DNSBL

這一陣子廣告信變多, 困擾同事。所以看來讓 postfix 吃一下 DNSBL 還是必要的。所以看了一下, 上了這 xbl.spamhaus.org, sbl.spamhaus.org 跟 bl.spamcop.net。在 postfix 的設定上面極為簡單

smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination,reject_rbl_client xbl.spamhaus.org,reject_rbl_client sbl.spamhaus.org,reject_rbl_client bl.spamcop.net

在 smtpd_recipient_restrictions 用 reject_rbl_client 這個 keyword 即可。

一開始還為了這個把 SPAM 都收集在某個 Maildir 的目錄底下, 用 python 把 last hop sender IP 給揪出來。後來想想, 直接上 DNSBL 好像比較快又簡單。