国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

centos+nginx從零開始配置負載均衡

2019-11-15 02:02:25
字體:
來源:轉載
供稿:網友
centos+nginx從零開始配置負載均衡nginx負載均衡的理解

nginx是一個輕量級的、高性能的webserver,他主要可以干下面兩件事:

  • 作為http服務器(和apache的效果一樣)
  • 作為反向代理服務器實現負載均衡

現在nginx到處都可以見到,經常會看到宕機后的網頁會顯示nginx的字樣,這也說明nginx由于高性能、使用配置簡、開源單這些特點被越來越多的用戶所接受,所使用。

其中第一種作為http服務器,結合php-fpm進程,對發來的請求進行處理,nginx本身并不會解析php,他只是作為一個服務器,接受客戶端發來的請求,如果是php請求,則交給php進程處理,并將php處理完成之后的結果發送給客戶端。這個很簡單,安裝好nginx+php-fpm之后配置好各自的配置文件,啟動就可以實現。運行原理可以看下面這段解釋:

Nginx不支持對外部程序的直接調用或者解析,所有的外部程序(包括PHP)必須通過FastCGI接口來調用。FastCGI接口在linux下是socket(這個socket可以是文件socket,也可以是ip socket)。為了調用CGI程序,還需要一個FastCGI的wrapper(wrapper可以理解為用于啟動另一個程序的程序),這個wrapper綁定在某個固定socket上,如端口或者文件socket。當Nginx將CGI請求發送給這個socket的時候,通過FastCGI接口,wrapper接收到請求,然后派生出一個新的線程,這個線程調用解釋器或者外部程序處理腳本并讀取返回數據;接著,wrapper再將返回的數據通過FastCGI接口,沿著固定的socket傳遞給Nginx;最后,Nginx將返回的數據發送給客戶端。這就是Nginx+FastCGI的整個運作過程,如圖下圖所示。

140224291

上面這段話解釋了nginx+fastcgi的運行機制,在nginx配置文件中會對請求進行匹配,并作做出相應的處理,比如說直接返回錯誤文件(這里和上面說的有點區別,我估計是nginx內部對html等這些靜態文件可以做類似上圖的解析),使用php進程對php請求進行處理(這里的php進程可以是多個)。

第二種是用反向代理事項負載均衡,這個其實其實很簡單,說起來就是自己定義一組server,對請求進行匹配,并將請求轉給server中的任意一個處理,來減輕每個server的壓力,先看看網上對反向向代理的定義:

反向代理(Reverse PRoxy)方式是指以代理服務器來接受internet上的連接請求,然后將請求轉發給內部網絡上的服務器,并將從服務器上得到的結果返回給internet上請求連接的客戶端,此時代理服務器對外就表現為一個反向代理服務器。

-13433701701

反向代理是和正向代理(或者叫代理) 相反的,代理大家定聽過吧,為了更方便的訪問B資源,通過A資源間接的訪問B資源,特點就是用戶知道自己最終要訪問的網站是什么,但是反向代理用戶是不知道代理服務器后邊做了什么處理的,反向代理中服務真正的處理服務器放在內網,對外網而言只可以訪問反向代理服務器,這也大大提高了安全性。

安裝軟件

nginx安裝很簡單

1、安裝nginx需要的環境,pcre(作用rewrite)、zlib(作用壓縮)、ssl,這個也可以自己下載編譯安裝

yum -y install zlib;

yum –y install pcre;

yum –y install openssl;

2、下載安裝nginx-*.tar.gz。

tar –zxvf nginx-1.2.8.tar.gz –C ./;

cd nginx-1.2.8;

./congigure --prefix=/usr/local/nginx;

make && make install;

3、配置

這里配置的時候只需要修改http{}之間的內容就行了,修改的第一個地方就是設置服務器組,在http節點之間添加

upstream myServer{ server www.myapp2.com:80; #這里是你自己要做負載均衡的服務器地址1 server www.myapp1.com:8080; #這里是要參與負載均衡的地址2 }

nginx中的upstream支持下面幾種方式:輪詢(默認,按照時間順序對所有服務器一個一個的訪問,如果有服務器宕機,會自動剔除)、weight(服務器的方位幾率和weight成正比,這個可以在服務器配置不均的時候進行配置)、ip_hash(對每個請求的ip進行hash計算,并按照一定的規則分配對應的服務器)、fair(按照每臺服務器的響應時間(rt)來分配請求,rt曉得優先分配)、url_hash(按照訪問url的hash值來分配請求),我這里使用了默認的輪訓方式。

將請求指向myServer

location / { proxy_pass http://myServer; }

完整的文件(刪除注釋)如下:

worker_processes  1;events {    worker_connections  1024;}http {    include       mime.types;    default_type  application/octet-stream;    sendfile        on;    keepalive_timeout  65;    upstream myServer{       server www.myapp1.com:80;       server www.myapp2.com:8080;    }    server {        listen       80;        server_name  my22;        location / {            proxy_pass   http://myServer;        }    }}
設置反向代理后端作為負載均衡的兩個服務器

可以看到上一步驟有兩個服務器地址,www.myapp1.com:80和www.myapp2.com:8080,上面的nginx我是安裝在虛擬機上面的,這兩個服務器我是安裝在本機win8系統中的,使用apache的virtualhost,設置了兩個域名,這兩個域名下的代碼是互相獨立的,設置也很簡單:

1、設置apache配置文件

我使用的是xampp集成環境,要修改的地方有兩個,在httpd.conf中監聽端口的地方添加

Listen 8080

也就是說這個地方監聽了兩個端口

Listen 80 Listen 8080

看看下面這個句是否打開,沒有打開的話,打開,打開如下面所示

# Virtual hostsInclude conf/extra/httpd-vhosts.conf

在httpd-vhosts.conf中添加下面的內容,

<VirtualHost *:80>    ServerName www.myapp1.com #對應的域名,負載均衡的服務器地址    DocumentRoot E:/soft/xampp/htdocs/www.myapp1.com #代碼文件夾</VirtualHost><VirtualHost *:8080>    ServerName www.myapp2.com    DocumentRoot E:/soft/xampp/htdocs/www.myapp2.com</VirtualHost>

修改windows的hosts文件,追加下面的內容

127.0.0.1        www.myapp1.com127.0.0.1        www.myapp2.com

修改linux的/etc/hosts文件,追加下面的內容

192.168.1.12        www.myapp1.com #這里前面的地址對應我win8本機的ip地址192.168.1.12        www.myapp2.com

  我在www.myapp1.com:80中放了一個文件index.php【E:/soft/xampp/htdocs/www.myapp1.com/index.php】

  www.myapp2.com:8080中也放了一個文件index.php【E:/soft/xampp/htdocs/www.myapp2.com/index.php】

  文件中的內容基本相同,只是I'm the myapp2這個地方有區別,一個是myapp1,另一個是myapp2。

  如果你可以在win8瀏覽器中輸入www.myapp1.com:80和www.myapp2.com:8080看到不同的效果

  并且在centos下面看到下面的結果(自己美化了下)說明配置成功了

[root@bogon nginx]# curl www.myapp1.com:80I'm the myapp1<br>【view】1[root@bogon nginx]# curl www.myapp2.com:8080I'm the myapp2<br>【view】1
<?phpsession_save_path("./");session_start();header("Content-type:text/html;charset=utf-8");if(isset($_SESSION['view'])){    $_SESSION['view'] = $_SESSION['view'] + 1;}else{    $_SESSION['view'] = 1;}echo "I'm the myapp2<br>";echo "【view】{$_SESSION['view']}";

看看效果

  等所有都ok之后可硬通過瀏覽器訪問看看效果

  忘了說了,nginx代理服務器的地址為http://192.168.1.113,

  瀏覽器輸入http://192.168.1.113/index.php之后,不停的刷新,你會發現,會在

I'm the myapp2、I'm the myapp1

  這兩個頁面之間來回交換,view會沒刷新兩下增加一次,這也證明了前面所說的默認是輪訓的方式,但這里又有一個比較常見的問題了,當用戶訪問網站時,未做處理的情況下,session會保存在不同的服務器上(我這里用兩個不同的文件夾模擬兩臺服務器),session數據可能出現多套,這個問題怎么解決呢,下篇文章說說這個問題,其實也很簡單。

  本文版權歸作者iforever(luluyrt@163.com)所有,未經作者本人同意禁止任何形式的轉載,轉載文章之后必須在文章頁面明顯位置給出作者和原文連接,否則保留追究法律責任的權利。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 柯坪县| 山东省| 石棉县| 石泉县| 湛江市| 白河县| 邵东县| 紫云| 宾阳县| 阿鲁科尔沁旗| 河北区| 二手房| 青海省| 永修县| 庆云县| 巴马| 禄丰县| 雷州市| 沂南县| 定日县| 五常市| 唐海县| 新巴尔虎右旗| 磴口县| 襄樊市| 潼关县| 云林县| 偃师市| 巴里| 五台县| 忻城县| 英德市| 天气| 邵阳市| 泽库县| 定兴县| 阜新| 大埔县| 禹州市| 通山县| 桂平市|