LVS+Nginx高可用集群--基礎篇

1.集群概述

單體部署:
在這里插入圖片描述
可以將上面內容分別部署在不同的服務器上。
單體架構的優點:
小團隊成型就可完成開發,測試,上線
迭代周期短,速度快
打包方便,運維簡單

單體架構的挑戰:單節點宕機造成所有服務的不可用(多節點);耦合度太高(迭代,測試,部署)(分布式部署);單節點并發能力有限(負載均衡)

集群:計算機”整體”構成整個系統;這個“群體”構成一個整體,不能獨立存在;群體提升并發與可用性
在這里插入圖片描述

集群的優勢:提高系統性能;提高系統可用性;可擴展性高;

使用集群的注意點:
用戶會話:會話要使用分布式會話,通過Redis緩存實現分布式會話。
定時任務:所有的計算機節點,上面所有的任務,在某個時刻,都會跑一遍;任務都是一模一樣,會浪費計算機的資源。可以統一做定時任務的服務;或者使用mq的延時任務。
內網互通:必須保障。

2.什么是Nginx?常用的web服務器有哪些?

Nginx:高性能的http和反向代理web服務器,同時也提供IMAP/POP3/SMTP服務;主要功能是反向代理;通過配置文件實現負載均衡或者集群;靜態資源的虛擬化

常見的服務器:
在這里插入圖片描述

3.什么是反向代理?

正向代理:客戶端請求目標服務器之間的一個代理服務器;
請求會先經過代理服務器,然后再轉發請求到目標服務器,獲得內容后最后響應給客戶端。
在這里插入圖片描述
反向代理:
用戶請求目標服務器,由代理服務器決定訪問哪個ip
教務處相當于方向代理。
在這里插入圖片描述
正向代理和反向代理的區別:
位置不同
正向代理,架設在客戶機和目標主機之間;
反向代理,架設在服務器端;

代理對象不同
正向代理,代理客戶端,服務端不知道實際發起請求的客戶端;
反向代理,代理服務端,客戶端不知道實際提供服務的服務端;

用途不同
正向代理,為在防火墻內的局域網客戶端提供訪問Internet的途徑;
反向代理,將防火墻后面的服務器提供給Internet訪問;

安全性不同
正向代理允許客戶端通過它訪問任意網站并且隱藏客戶端自身,因此必須采取安全措施以確保僅為授權的客戶端提供服務;
反向代理都對外都是透明的,訪問者并不知道自己訪問的是哪一個代理。

備注:正向代理–HTTP代理為多個人提供翻墻服務;反向代理–百度外賣為多個商戶提供平臺給某個用戶提供外賣服務。

4.Nginx安裝與運行

(1)去官網http://nginx.org/下載對應的nginx包,推薦使用穩定版本
(2)上傳nginx到linux系統
(3)安裝依賴環境
安裝gcc環境;

 yum install gcc-c++

安裝PCRE庫,用于解析正則表達式;

 yum install -y pcre pcre-devel

zlib壓縮和解壓縮依賴;

 yum install -y zlib zlib-devel

SSL 安全的加密的套接字協議層,用于HTTP安全傳輸,也就是https

yum install -y openssl openssl-devel

(4)解壓,需要注意,解壓后得到的是源碼,源碼需要編譯后才能安裝

tar -zxvf nginx-1.16.1.tar.gz

(5)編譯之前,先創建nginx臨時目錄,如果不創建,在啟動nginx的過程中會報錯

mkdir /var/temp/nginx -p

(6)在nginx目錄,輸入如下命令進行配置,目的是為了創建makefile文件

./configure \n    --prefix=/usr/local/nginx \n    --pid-path=/var/run/nginx/nginx.pid \n    --lock-path=/var/lock/nginx.lock \n    --error-log-path=/var/log/nginx/error.log \n    --http-log-path=/var/log/nginx/access.log \n    --with-http_gzip_static_module \n    --http-client-body-temp-path=/var/temp/nginx/client \n    --http-proxy-temp-path=/var/temp/nginx/proxy \n    --http-fastcgi-temp-path=/var/temp/nginx/fastcgi \n    --http-uwsgi-temp-path=/var/temp/nginx/uwsgi \n    --http-scgi-temp-path=/var/temp/nginx/scgi

配置命令:
在這里插入圖片描述
(7)make編譯

make

(8)安裝

make install

(9)進入sbin目錄啟動nginx

./nginx

停止:./nginx -s stop
重新加載:./nginx -s reload

(10)打開瀏覽器,訪問虛擬機所處內網ip即可打開nginx默認頁面,顯示如下便表示安裝成功:

注意事項:
如果在云服務器安裝,需要開啟默認的nginx端口:80
如果在虛擬機安裝,需要關閉防火墻
本地win或mac需要關閉防火墻

5.Nginx顯示默認首頁過程解析

內網環境:使用內網ip
云服務器:使用外網ip

請求nginx默認頁面:
在這里插入圖片描述
Nginx主要配置:

 server {listen       80;server_name  localhost;location / {root   html;index  index.html index.htm;     }error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}
}

6.Nginx進程模型解析

ps -ef|grep nginx 查詢nginx相關進程。

root      2856 32390  0 10:12 pts/1    00:00:00 grep --color=auto nginx
root     21121     1  0 08:29 ?        00:00:00 nginx: master process ./nginx
nobody   21122 21121  0 08:29 ?        00:00:00 nginx: worker process

Master進程:主進程。Master接收外界的一些信號,傳遞給對應的worker進程;監控worker
worker進程:工作進程,為master服務

在這里插入圖片描述
master接收一些信號,然后傳遞給相應的worker進程;master還可以對發送的指令可以讀取并驗證核心配置文件的有效性:
具體實例:
[root@VM-0-9-centos conf]# …/sbin/nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
Worker進程數量是可以配置的。
配置worker進程的過程:
在這里插入圖片描述
nginx進程模型:
在這里插入圖片描述
每個進程相互獨立,多線程的話,雖然多線程的開銷要小于進程,但是它們會公用一個內存,
線程之間是相互會有影響的,需要開發人員自己去維護內存管理。并且會增加一定的風險,導致我們出錯。
多進程,相互之間是獨立的,安全的。如果說一個worker異常退出了,其他的worker會正常運行。

7.Nginx處理web請求機制解析

Nginx本身是性能非常高,非常好的服務器。可以處理的并發數可以達到幾十萬或者幾百萬。
Worker搶占機制:use epoll.Linux epoll機制。
Master fork出多個worker進程(fork是底層機制。)
Accept_mutex:互斥鎖,多個worker競爭,搶到了才能去處理cilent.
在這里插入圖片描述
傳統服務器事件處理:類似于BIO:
在這里插入圖片描述
以上是同步阻塞。
在這里插入圖片描述
Nginx事件處理:本身是異步非阻塞模型,一般有默認的并發數(1024).可以進行配置,根據你的硬件來配置
events {
#默認使用epoll
use epoll;
#每個worker允許連接的客戶端最大連接數
worker_connections 1024;
}
使用epoll可以處理6-8萬個請求,當worker獲得cilent的請求后,對請求處理到阻塞的部分,worker就不會繼續等待阻塞的請求,而是處理一些其他客戶端的請求。這樣worker就可以同時處理多個cilent請求,從而實現了高并發。

在這里插入圖片描述
Nginx的性能為什么這么高?
1.worker的搶占機制。
2.異步非阻塞的通信模式,多路復用器。

8.nginx.conf配置結構與語法指令

在這里插入圖片描述
配置里有指令和指令塊。
指令:
#user nobody;
worker_processes 2;
指令塊:
events {
#默認使用epoll
use epoll;
#每個worker允許連接的客戶端最大連接數
worker_connections 1024;
}

9.同步與異步,阻塞與非阻塞

同步:關鍵字:輪詢;異步:通知;
阻塞:關鍵字:一直等待;非阻塞:關鍵字:不用等
還可以根據客戶端和服務器端分開處理。
同步時客戶端就會阻塞。阻塞時,服務器端就會阻塞。
從客戶端和服務器端的角度來理解,異步:服務器端會通知你后臺正在處理,客戶端可以處理其他請求。
對于阻塞以及非阻塞的理解,關鍵點在于,非阻塞時,服務器端可以繼續處理請求,極大的節省系統資源。經濟效益高

10.Nginx.conf核心配置文件

設置worker進程的用戶,指的linux中的用戶,會涉及到nginx操作目錄或文件的一些權限,默認為nobody
user root;//涉及到操作系統用戶的權限問題,nobody跟root用戶操作文件的權限完全不同。

user root;

worker進程工作數設置,一般來說CPU有幾個,就設置幾個,或者設置為N-1也行

worker_processes 1;

nginx 日志級別debug | info | notice | warn | error | crit | alert | emerg,錯誤級別從左到右越來越大
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
通過不同的日志級別,輸出不同的日志內容

此處配置的日志文件在:
–error-log-path=/var/log/nginx/error.log

設置nginx進程 pid
配置內容:
–pid-path=/var/run/nginx/nginx.pid

pid        logs/nginx.pid;

設置工作模式

events {# 默認使用epolluse epoll;# 每個worker允許連接的客戶端最大連接數worker_connections  10240;
}

http 是指令塊,針對http網絡傳輸的一些指令配置

http {
}

include 引入外部配置,提高可讀性,避免單個配置文件過大

include       mime.types;

設定日志格式,main為定義的格式名稱,如此 access_log 就可以直接使用這個變量了
–http-log-path=/var/log/nginx/access.log
在這里插入圖片描述
在這里插入圖片描述
sendfile使用高效文件傳輸,提升傳輸性能。啟用后才能使用tcp_nopush,是指當數據表累積一定大小后才發送,提高了效率。

sendfile        on;
tcp_nopush      on;

keepalive_timeout設置客戶端與服務端請求的超時時間,保證客戶端多次請求的時候不會重復建立新的連接,節約資源損耗。

#keepalive_timeout  0;
keepalive_timeout  65;

gzip啟用壓縮,html/js/css壓縮后傳輸會更快

gzip on;

server可以在http指令塊中設置多個虛擬主機

listen 監聽端口
server_name localhost、ip、域名
location 請求路由映射,匹配攔截
root 請求位置
index 首頁設置

 server {listen       88;server_name  localhost;location / {root   html;index  index.html index.htm;}}

11.nginx常用命令解析

Nginx常用命令:
./nginx -t:查看配置文件是否正確
./nginx -s reload:重啟nginx
./nginx 啟動
./nginx -s stop 關閉
./nginx -s reload 重啟
可以將配置的多臺server 保存在xxx.conf文件中,然后通過include引入。

暴力關閉nginx:./nginx -s stop 強制關閉。
友好關閉:./nginx -s quit:會維持當前用戶連接直到用戶不再發送請求關閉連接。針對一些http請求。
檢驗:./nginx -t :配置文件發生更改,檢查配置文件是否有問題
查看相關版本號 ./nginx -v 展示具體的信息:./nginx -V 提供命令的幫助: ./nginx -h或者./nginx -? 指定特定的配置文件 ./nginx -c

12.nginx日志切割-手動

去特定目錄下查看日志文件:
命令: cd /var/log/nginx
然后根據以前的配置查詢所有相關的文件
命令:/usr/local/nginx/sbin/nginx -V
查詢的是之前安裝nginx所有相關的配置。
首先創建對應的文件:cut_my_log.sh
代碼:

#!/bin/bash
LOG_PATH="/var/log/nginx/"
RECORD_TIME=$(date -d "yesterday" +%Y-%m-%d+%H:%M)
PID=/var/run/nginx/nginx.pid
mv ${LOG_PATH}/access.log ${LOG_PATH}/access.${RECORD_TIME}.log
mv ${LOG_PATH}/error.log ${LOG_PATH}/error.${RECORD_TIME}.log
#向Nginx主進程發送信號,用于重新打開日志文件
kill -USR1 `cat $PID`

新建文件添加權限。
chmod +x cut_my_log.sh
成功后,文件變成綠色。
測試日志切割后的結果:
./cut_my_log.sh

測試:
根據時間戳生成的log文件,每執行一次進行一次切割。

在這里插入圖片描述
nginx日志切割-定時任務
安裝定時任務:

yum install crontabs

crontab -e 編輯并且添加一行新的任務:

*/1 * * * * /usr/local/nginx/sbin/cut_my_log.sh

重啟定時任務:

service crond restart

crontab -l:查詢定時任務內容
在這里插入圖片描述
常用定時任務命令:
service crond start //啟動服務
service crond stop //關閉服務
service crond restart //重啟服務
service crond reload //重新載入配置
crontab -e // 編輯任務
crontab -l // 查看任務列表

Systemctl stop crond.service:關閉定時任務
Systemctl status crond.service :查看定時任務的狀態

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/40664.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/40664.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/40664.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

DVWA sql手注學習(巨詳細不含sqlmap)

這篇文章主要記錄學習sql注入的過程中遇到的問題已經一點學習感悟,過程圖片會比較多,比較基礎和詳細,不存在看不懂哪一步的過程 文章目錄 靶場介紹SQL注入 lowSQL注入 MediumSQL注入 HighSQL注入 Impossible 靶場介紹 DVWA(Damn…

必備的 Adobe XD 輔助工具

想要高效便捷的使用 Adobe XD, Adobe XD 插件是必不可少的, Adobe XD 的插件非常多,但 90%都是英文,并且良莠不齊。在這兒挑選 9 個好用的 Adobe XD 插件給大家,這里是我整理的一些實用 Adobe XD 插件,讓你…

大屏開發系列——Echarts的基礎使用

本文為個人近期學習總結,若有錯誤之處,歡迎指出! Echarts在vue2中的基礎使用 一、簡單介紹二、基本使用(vue2中)1.npm安裝2.main.js引入3.使用步驟(1)準備帶有寬高的DOM容器;(2)初始化echarts實例&#xff…

gcc: warning: -Wunused-function;加了選項,為什么就不報警告呢?

文章目錄 問題clang的編譯而使用gcc是就不報問題分析原因如果是非static的函數問題 下面這個代碼段,其中這個函數hton_ext_2byte,在整個程序里就沒有使用。 static inline uint16_t hton_ext_2byte(uint8_t **p) {uint16_t v;******return v;

PHP宜邦家政服務管理系統-計算機畢業設計源碼04426

目 錄 摘要 1 緒論 1.1 選題背景與意義 1.2開發現狀 1.3論文結構與章節安排 2 宜邦家政服務管理系統系統分析 2.1 可行性分析 2.1.1 技術可行性分析 2.1.2 經濟可行性分析 2.1.3 操作可行性分析 2.2 系統功能分析 2.2.1 功能性分析 2.2.2 非功能性分析 2.3 系統用…

國標GB28181視頻匯聚平臺LntonCVS視頻監控安防平臺與國標協議對接解決方案

應急管理部門以“以信息化推動應急管理能力現代化”為總體目標,加快現代信息技術與應急管理業務深度融合,全面支持現代應急管理體系建設,這不僅是國家加強和改進應急管理工作的關鍵舉措,也是應對日益嚴峻的應急管理形勢和滿足公眾…

微信小程序的運行機制與更新機制

1. 小程序運行機制 1.1. 冷啟動與熱啟動 冷啟動為用戶第一次打開小程序時,因為之前沒有打開過,這是第一種冷啟動的情兌。第二種情況為雖然之前用戶打開過,但是小程序被用戶主動的銷毀過,這種情況下我們再次打開小程序&#xff0…

【PALM、WRF-LES】微尺度氣象數值模擬—大渦模擬技術

針對微尺度氣象的復雜性,大渦模擬(LES)提供了一種無可比擬的解決方案。微尺度氣象學涉及對小范圍內的大氣過程進行精確模擬,這些過程往往與天氣模式、地形影響和人為因素如城市布局緊密相關。在這種規模上,傳統的氣象模…

doc文檔下載

目錄 下載 安裝谷歌瀏覽器(chrome)Microsoft Edge瀏覽器 常見問題 下載 見郵件附件 安裝 谷歌瀏覽器(chrome) 打開瀏覽器,地址欄輸入:chrome://extensions/ 右上角打開開發者模式 點擊如上圖左上角的加載已解壓的拓展程序,并選擇剛剛解壓…

安卓應用開發學習:通過騰訊地圖SDK實現定位功能

一、引言 這幾天有些忙,耽誤了寫日志,但我的學習始終沒有落下,有空我就會研究《 Android App 開發進階與項目實戰》一書中定位導航方面的內容。在我的手機上先后實現了“獲取經緯度及地理位置描述信息”和“獲取導航衛星信息”功能后&#x…

afrog-漏洞掃描(挖洞)工具【了解安裝使用詳細】

★★免責聲明★★ 文章中涉及的程序(方法)可能帶有攻擊性,僅供安全研究與學習之用,讀者將信息做其他用途,由Ta承擔全部法律及連帶責任,文章作者不承擔任何法律及連帶責任。 1、afrog介紹 afrog 是一款性能卓越、快速穩定、PoC可定…

MySQL篇-SQL優化實戰-減少子查詢

回顧 上一篇了解了分析SQL使用的explain,可以點擊查看MySQL篇-SQL優化實戰了解我在寫sql的注意事項還有explain的說明,這次拿一段生產使用的sql進行優化說明。從14s優化到2.6s 待優化的SQL SELECT DISTINCTswpe.tag_number,hca.ACCOUNT_NAME customer…

VBA中類的解讀及應用第十三講:限制復選選擇,窗體模塊的搭建

《VBA中類的解讀及應用》教程【10165646】是我推出的第五套教程,目前已經是第一版修訂了。這套教程定位于最高級,是學完初級,中級后的教程。 類,是非常抽象的,更具研究的價值。隨著我們學習、應用VBA的深入&#xff0…

02-部署LVS-DR群集

1.LVS-DR工作原理 LVS-DR模式,Director Server作為群集的訪問入口,不作為網購使用,節點Director Server 與 Real Server 需要在同一個網絡中,返回給客戶端的數據不需要經過Director Server 為了響應對整個群集的訪問,…

Java WebService記

Web Services開發 常用的 Web Services 框架有 Apache Axis1 、 Apache Axis2 、 Apache CXF ,而 Apache Axis1 已經逐漸被淘汰所以本文不會討論,重點關注 Apache Axis2 及 Apache CXF 。 Apache Axis2 在IDEA中新建 Axis2Demo 項目后右鍵選擇 添加框架…

每天10個js面試題(一)

1.js基本數據類型? JavaScript 共有八種數據類型,分別是Undefined、Null、Boolean、Number、String、Object、Symbol、BigInt。其中 Symbol 和 BigInt 是 ES6 中新增的數據類型 2.let、const、var的區別? let和const有暫時性死區&#xff0…

開源模型應用落地-LangChain高階-智能體探究-agent類型(一)

一、前言 大模型具有非常強大的功能,可以解答疑問、撰寫報告和文檔、總結內容、進行翻譯等各種日常工作任務。然而,大模型還可以應用于更多的場景,發揮出更強大的作用。 通過智能體,我們可以實現許多有價值的事情,比如:在日常生活中,我們能借助智能體實現智能家居的自動化…

【滲透入門】SQL注入

聲明:本文檔或演示材料僅供教育和教學目的使用,任何個人或組織使用本文檔中的信息進行非法活動,均與本文檔的作者或發布者無關。 文章目錄 什么是sql注入sql注入舉例防御方式練習靶場 什么是sql注入 SQL注入是一種網絡安全漏洞,攻…

【Android源碼】Gerrit安裝

前言 如果你打開 https://android.googlesource.com/platform/manifest,就會發現,google官方管理Android源碼,使用的是Gerrit。Android系統源碼是非常大的,用Git肯定是不適合。對于大型項目,得用Gerrit,今…

NoSQL之Redis高可用與優化

一、Redis高可用 在web服務器中,高可用是指服務器可以正常訪問的時間,衡量的標準是在多長時間內可以提供正常服務(99.9%、99.99%、99.999%等等)。 但是在Redis語境中,高可用的含義似乎要寬泛一些,除了保證…