使用Nginx TCP/UDP應用於Postfix SMTP Server負載平衡實作

已往使用Nginx多用在架設Web Server或是Reverse Proxy, Nginx也有TCP/UDP負載平衡功能, 這裡將實作兩台Postfix SMTP Mail Server的負載平衡, 因只負責發信, 故無法用在POP3/IMAP等收信上, 我就不多做Postfix的介紹與安裝。

這裡準備了三台機器, Debian Linux 9.5為作業系統, 並在兩台機器上設定好Postfix SMTP發信功能
Server 1: Nginx的負載平衡器, IP: 192.168.1.1
Server 2: Postfix Mail Server一號機, IP: 192.168.1.2
Server 3: Postfix Mail Server二號機, IP: 192.168.1.3

首先在Server 1安裝Nginx, 這裡採用原始碼安裝方法
apt-get install build-essential libpcre3-dev libzip-dev

安裝編譯需要的工具

下載Nginx與進行編譯
wget http://nginx.org/download/nginx-1.15.7.tar.gz
tar zxvf nginx-1.15.7.tar.gz
cd nginx-1.15.7
./configure --with-stream
make
make install

預設將會安裝在/usr/local/nginx目錄下

編輯Nginx設定檔
nano /usr/local/nginx/conf/nginx.conf


清除舊有內容, 貼上新的設定
stream {
upstream mail_server {
server 192.168.1.2:25;
server 192.168.1.3:25;
}

server {
listen 192.168.1.1:25;
proxy_pass mail_server;
}
}

Nginx將服務於192.168.1.1機器上的Port 25(SMTP), 並將實際發信交由後端的192.168.1.2與192.168.1.3這兩台Postfix Mail Server, "mail_server"為此後端機器群組名稱

將Nginx設定開機時啟動服務
nano /lib/systemd/system/nginx.service

貼入Unit檔案內容
[Unit]
Description=The NGINX HTTP and reverse proxy server
After=syslog.target network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target

接著啟動服務
systemctl enable nginx
systemctl start nginx

這樣Nginx就會隨著機器啟動自己開始服務, 運作兩台Postfix Mail Server的負載平衡

關於Nginx TCP/UDP負載平衡, 可以參考Nginx官網更多的應用: TCP and UDP Load Balancing
文章分享
評分
評分
複製連結

今日熱門文章 網友點擊推薦!