Nginx負載均衡之TCP端口高可用(二)

    在前面我們實現了基本的HTTP反向代理,從互聯網過來的請求已經可以分發到後端多臺網站服務器上,但不是所有的業務都是網絡類型的,此篇文章我們主要討論的是TCP 端口的負載均衡做法,昨天也有小夥伴提到了,在HTTP反向代理中,我們並沒有討論會話保持健康檢查,我們將會在這篇文章結束後,專門寫一篇關於會話保持和檢查檢查的文章,來分析他們的做法。

    我們正式開始此篇的重點,我們要實現的是用戶通過Nginx來訪問一個或多個端口,這種場景還是蠻多的,例如OpenStack的控制節點等無狀態的服務就需要一個統一的訪問入口,例如對外的API接口、MySQL服務器等,但凡是需要對外提供一個高可用端口的場景,都用的上。

TCP 負載均衡

目標: 通過Nginx來實現後端兩臺服務器的負載均衡,且以輪詢的方式將請求分發到不同的服務器上,此處我們就以SSH的22號端口來演示。

 

角色機器名IP地址
NginxHost1192.168.30.130
TCP 端口服務器Host2192.168.30.131
TCP 端口服務器Host3

192.168.30.132

備用TCP 端口服務器Host4192.168.30.133


新建一個port.conf的配置文件,我們將用這些文件來實現此實驗目標,但是我們要注意位置,配置文件不要新建到conf.d目錄中,因爲如下圖所示,這個位置是包含在HTTP這個塊中的,我們需要新建一個,例如port.conf.d的目錄,並在nginx主配置文件中,包括此目錄 

查看不能放在conf.d的原因

31.png

包含port.conf.d目錄

vim /etc/nginx/nginx.conf

在此文件中的最後一行,添加如下所示的內容

include /etc/nginx/port.conf.d/*.conf;

32.png

新建配置文件

mkdir /etc/nginx/port.conf.d

vim /etc/nginx/port.conf.d/port.conf

33.png

將以下內容複製粘貼到配置文件中

stream {

    upstream sshport {

        server 192.168.30.131:22 weight=10;

        server 192.168.30.132:22 weight=10;

        server 192.168.30.133:22 backup;

    }

    server {

        listen 2000;

        proxy_pass sshport;

    }

}

配置文件效果如下

34.png

開啓nginx服務器的TCP 2000端口防火牆

firewall-cmd --add-port=2000/tcp

firewall-cmd --add-port=2000/tcp --permanent

如果你的服務器開啓了selinux,可能會啓動失敗,由於selinux不在討論範圍內,你可以使用以下命令臨時關閉selinux

setenforce 0

重啓Nginx服務

systemctl restart nginx.service

查看偵聽

netstat -tunlp | grep 2000

35.png

高可用驗證

在ssh時,指定端口爲2000,我們可以看到,輸入密碼後,直接登錄了host2,也就是說代理成功

36.png

我們來測試一下,如果host2關機會怎麼樣,你可以在host2上執行以下命令關機

systemctl poweroff

再次登錄的時候報錯SSH,這是因爲host2已經關機,嘗試鏈接host3,發現指紋不對,可以執行rm -rf /root/.ssh/known_hosts刪除

37.png

此時我們可以看到,host2關機後,再次連接,就會有host3爲你提供服務

38.png

      結合上一篇和本篇文章,我們已經可以簡單完成HTTP類型的網站和TCP 端口的高可用配置,下一篇我們重點來講一下在常規的負載均衡背後的技術,會話保持、健康檢查、場景的負載均衡策略都會在下一篇講到。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章