
在者之前運(yùn)用 upstream 實(shí)現(xiàn)的都是7層調(diào)度,如何運(yùn)用nginx實(shí)現(xiàn)4層調(diào)度呢?
知識(shí)點(diǎn)回顧:網(wǎng)絡(luò)七層協(xié)議
OSI是一個(gè)開放性的通信系統(tǒng)互連參考模型,是一個(gè)非常好的協(xié)議規(guī)范;
OSI統(tǒng)一規(guī)范了網(wǎng)絡(luò)的通信,如果沒有這個(gè)協(xié)議,就沒有當(dāng)今的便利的互聯(lián)網(wǎng)世界。
OSI模型有7層結(jié)構(gòu),從上到下分別是:
7、應(yīng)用層:與其它計(jì)算機(jī)進(jìn)行通訊的一個(gè)服務(wù),它是對(duì)應(yīng)應(yīng)用程序的通信服務(wù)。比如:HTTP 、 FTP 、NFS 、 NGINX 、QQ等軟件的通信;
6、表示層:著一層主要的功能是定義數(shù)據(jù)及加密;
5、會(huì)話層:它定義了如何開始,控制和結(jié)束一個(gè)會(huì)話,包括對(duì)多個(gè)雙向消息的控制和管理;
4、傳輸層:是兩臺(tái)計(jì)算機(jī)經(jīng)過網(wǎng)絡(luò)層進(jìn)行數(shù)據(jù)通信時(shí),第一個(gè)端到端的層次,具有緩存的作用。當(dāng)網(wǎng)絡(luò)層的服務(wù)質(zhì)量不能滿足要求時(shí),它將服務(wù)加以提高,當(dāng)服務(wù)質(zhì)量較好時(shí),它只需要很少工作;
這層的功能包括是否選擇差錯(cuò)恢復(fù)協(xié)議還是無(wú)差錯(cuò)恢復(fù)協(xié)議,以及在同一主機(jī)上對(duì)不同應(yīng)用的數(shù)據(jù)流的輸入進(jìn)行復(fù)用,還包括對(duì)收到的順序不對(duì)的數(shù)據(jù)包的重新排序功能;例如:TCP 、UDP 、SPX;
3、網(wǎng)絡(luò)層:網(wǎng)絡(luò)層的產(chǎn)生也是網(wǎng)絡(luò)發(fā)展的結(jié)果.在聯(lián)機(jī)系統(tǒng)和線路交換的環(huán)境中,網(wǎng)絡(luò)層的功能沒有太大意義.當(dāng)數(shù)據(jù)終端增多時(shí)。它們之間有中繼設(shè)備相連.此時(shí)會(huì)出現(xiàn)一臺(tái)終端要求不只是與唯一的一臺(tái)而是能和多臺(tái)終端通信的情況,這就是產(chǎn)生了把任意兩臺(tái)數(shù)據(jù)終端設(shè)備的數(shù)據(jù)鏈接起來的問題,也就是路由或者叫尋徑
2、數(shù)據(jù)鏈路層:數(shù)據(jù)鏈路可以粗略地理解為數(shù)據(jù)通道。
1、物理層:物理層是OSI的第一層,它雖然處于最底層,卻是整個(gè)開放系統(tǒng)的基礎(chǔ)。物理層為設(shè)備之間的數(shù)據(jù)通信提供傳輸媒體及互連設(shè)備,為數(shù)據(jù)傳輸提供可靠的環(huán)境。
其中:<7、6、5、4>層定義了應(yīng)用程序的功能,<3、2、1>層主要通過網(wǎng)絡(luò)的端到端的數(shù)據(jù)流;
要實(shí)現(xiàn)nginx實(shí)現(xiàn)4層調(diào)度必須要掌握了解以下幾個(gè)知識(shí)點(diǎn):
第一、安裝nginx時(shí)需要添加什么功能模塊才能實(shí)現(xiàn)4層調(diào)度?
第二、如何修改nginx的配置文件來實(shí)現(xiàn)4層調(diào)度?
第三、需要注意的事項(xiàng)以及常見的錯(cuò)誤有哪些?
第一、安裝nginx時(shí)需要添加什么功能模塊才能實(shí)現(xiàn)4層調(diào)度?
答:要實(shí)現(xiàn)4層調(diào)度,Nginx編譯安裝時(shí)候需要添加 --with-stream 模塊;
具體操作如下:
cd ?/nginx ? 下面敲以下命令:
./configure ?--user=nginx ?--group=nginx ?--with-http_ssl_module ? --with-stream
--user=nginx ? ? ? ? ? ? ? ? ? ? ? ? ? ?##指定nginx這個(gè)軟件歸屬nginx用戶,可以自由定;
--group=nginx ? ? ? ? ? ? ? ? ? ? ? ??##指定nginx這個(gè)軟件歸屬nginx組,可以自由定;
--with-http_ssl_module ? ? ? ? ##開啟SSL加密功能;
--with-stream ? ? ? ? ? ? ? ? ? ? ? ? ? ##開啟4層反向代理功能;
第二、如何修改nginx的配置文件來實(shí)現(xiàn)4層調(diào)度?
第一步、運(yùn)用 vim ? /usr /local /nginx /conf /nginx.conf ?進(jìn)入nginx的主配置文件;
第二步、在文件的 http { ?字符上面添加以下內(nèi)容;
因?yàn)閔ttp { 屬于第七層應(yīng)用層,而我們現(xiàn)在要實(shí)現(xiàn)的是第四層的調(diào)度,所以得在http { 范圍外添加;
stream ?{
? ? ? ? ? ? ? ? upstream ?backend ?{ ? ? ? ? ? ? ? ? ? ?##backend 是自定義的集群名稱
? ? ? ? ? ? ? ? ? ? server ?192.168.2.100:22; ? ? ? ##歸屬backend調(diào)度IP地址和服務(wù)端口號(hào)22,屬于ssh遠(yuǎn)程功能的端口號(hào);
? ? ? ? ? ? ? ? ? ? server ?192.168.2.200:22; ? ? ? ##同上
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ?##大括號(hào)一定是一對(duì)一對(duì)出現(xiàn);
? ? ? ? ? ? ? ? server ? ?{
? ? ? ? ? ? ? ? ? ? ? ? ? listen ?22; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ##nginx監(jiān)聽的端口號(hào);
? ? ? ? ? ? ? ? ? ? ? ? ? proxy_pass ?backend; ? ? ? ##當(dāng)遠(yuǎn)程訪問主機(jī)proxy時(shí),通過集群backend來進(jìn)行調(diào)度;
? ? ? ? ? ? ? ? ? ? ? ? ? proxy_connect_timeout 1s; ? ? ? ?##連接時(shí)超過1s還步成功就退出;
? ? ? ? ? ? ? ? ? ? ? ? ? proxy_timeout 3s; ? ? ? ? ? ? ? ?##3s之后可以再次連接;也可以不加這兩行;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?}
} ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?##大括號(hào)必須時(shí)一對(duì)一對(duì)出現(xiàn);
第三步、重新啟動(dòng)nginx服務(wù);
/usr /local /nginx /sbin /nginx ? ? ?-s ? ?reload
第四步、使用客戶端進(jìn)行測(cè)試;
ssh ? -X ? root@192.168.4.5 ? -p ? 22;
譯為:以root的身份,運(yùn)用 ssh 工具,遠(yuǎn)程訪問192.168.4.5這臺(tái)服務(wù)器,訪問的端口號(hào) -p 22;
第三、需要注意的事項(xiàng)以及常見的錯(cuò)誤有哪些?
1.結(jié)尾忘記寫“ ?; ”分號(hào)了;
2.忘記寫大括號(hào)“ ? { ?} ” ,或和漏寫一個(gè);
3.字母寫錯(cuò),或者端口號(hào)寫錯(cuò);
知識(shí)點(diǎn)拓展:常見HTTP狀態(tài)碼含義解讀;
訪問網(wǎng)頁(yè)會(huì)出現(xiàn)以下代碼:
200 表示一切正常;
301 表示永久重定向;
302 表示臨時(shí)重定向;
401 表示用戶名或者密碼錯(cuò)誤;
403 禁止訪問,客戶端IP的地址被拒絕;
404 網(wǎng)頁(yè)文件不存在;
500 服務(wù)器內(nèi)部錯(cuò)誤;
502 Bad Gsteway;
以上......
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ( ? END ?)
祝:開心!
羅貴
2019-04-15于深圳