centos7+apache 以及 CentOS+Nginx 配置負載平衡步驟

來源:互聯網
上載者:User

centos7安裝apache做負載平衡

 一、安裝apache .

       yum -y  install httpd

 
     安裝在了 /etc/httpd目錄下

二、安裝 mod_jk

      去http://tomcat.apache.org/connectors-doc/或者http://tomcat.apache.org/頁面最下面下載
Tomcat Connectors 1.2.40 Released

三、解壓編譯安裝tomcat-connectors-1.2.40-src.tar

 如果沒有 /usr/bin/apxs 則安裝apxs
 
 yum -y install apr-util-devel
 yum -y install httpd-devel

 tar -zxvf tomcat-connectors-1.2.40-src.tar
 cd tomcat-connectors-1.2.40-src/native
 ./configure  --with-apxs=/usr/bin/apxs
 make && make install

四、拷貝tomcat-connectors-1.2.40-src/native/apache-2.0/mod_jk.so到 /etc/httpd/modules/目錄下

 
       cp tomcat-connectors-1.2.40-src/native/apache-2.0/mod_jk.so  /etc/httpd/modules

 
五、配置

vi /etc/httpd/conf/httpd.conf


   添加

Include /etc/httpd/conf/mod_jk.conf

六、在

/etc/httpd/conf/

下建立

mod_jk.conf

檔案。配置內容

 
LoadModule jk_module /etc/httpd/modules/mod_jk.so
JkWorkersFile /etc/httpd/conf/workers.properties
JkMountFile /etc/httpd/conf/uriworkermap.properties
JkLogFile /etc/httpd/logs/mod_jk.log
JkLogLevel warn
JkLogStampFormat "[%a %b %d %H:%M:%S %Y]"
#JkMount /*.* controller

七、在


/etc/httpd/conf/
下建立配置workers.properties檔案
worker.list=controller,status

worker.tomcat129.port=8009
worker.tomcat129.host=192.168.152.129
worker.tomcat129.type=ajp13
worker.tomcat129.lbfactor=1

worker.tomcat130.port=8009
worker.tomcat130.host=192.168.152.130
worker.tomcat130.type=ajp13
worker.tomcat130.lbfactor=1

worker.controller.type=lb
worker.controller.balance_workers=tomcat129,tomcat130
worker.controller.sticky_session=0

worker.status.type=status

八、在


/etc/httpd/conf/
下建立配置uriworkermap.properties檔案

/*=controller
#/jkstatus=status
#!/*.gif=controller
#!/*.jpg=controller
#!/*.png=controller
#!/*.css=controller
#!/*.js=controller
#!/*.htm=controller
#!/*.html=controller


負載平衡配置好了

啟動如果報錯

修改httpd.conf檔案 找到ServerName添加
#ServerName www.example.com:80

ServerName localhost:80

剩下session複製了



CentOS+Nginx一步一步開始配置負載平衡

Nginx負載平衡的理解

Nginx是一個輕量級的、高效能的WebServer,他主要可以幹下面兩件事:

作為http伺服器(和apache的效果一樣)
作為反向 Proxy伺服器實現負載平衡

現在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的整個運作過程,如圖下圖所示。

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

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

反向 Proxy(Reverse Proxy)方式是指以Proxy 伺服器來接受internet上的串連請求,然後將請求轉寄給內部網路上的伺服器,並將從伺服器上得到的結果返回給internet上請求串連的用戶端,此時Proxy 伺服器對外就表現為一個反向 Proxy伺服器。

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


安裝軟體

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.88181.com:80;  #這裡是你自己要做負載平衡的伺服器位址1

server www.linux.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.linux.com:80;
server www.88181.com:8080;
}
server {
listen      80;
server_name  my22;
location / {
proxy_pass  http://myServer;
}
}
}


設定反向 Proxy後端作為負載平衡的兩個伺服器

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

1、設定apache設定檔

我使用的是xamppIntegration Environment,要修改的地方有兩個,在httpd.conf中監聽連接埠的地方添加

Listen 8080

也就是說這個地方監聽了兩個連接埠

Listen 80
Listen 8080

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

# Virtual hosts
Include conf/extra/httpd-vhosts.conf

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

<VirtualHost *:80>
ServerName www.linux.com #對應的網域名稱,負載平衡的伺服器位址
DocumentRoot E:\soft\xampp\htdocs\www.linux.com #代碼檔案夾
</VirtualHost>
<VirtualHost *:8080>
ServerName www.88181.com
DocumentRoot E:\soft\xampp\htdocs\www.88181.com
</VirtualHost>

修改windows的hosts檔案,追加下面的內容

127.0.0.1        www.linux.com
127.0.0.1        www.88181.com

修改linux的/etc/hosts檔案,追加下面的內容

192.168.1.12        www.linux.com #這裡前面的地址對應我win8原生ip地址
192.168.1.12        www.88181.com

我在www.linux.com:80中放了一個檔案index.php【E:\soft\xampp\htdocs\www.linux.com\index.php】

www.88181.com:8080中也放了一個檔案index.php【E:\soft\xampp\htdocs\www.88181.com\index.php】

檔案中的內容基本相同,只是I'm the 88181這個地方有區別,一個是linux,另一個是88181。

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

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

[root@bogon nginx]# curl www.linux.com:80
I'm the linux<br>【view】1
[root@bogon nginx]# curl www.88181.com:8080
I'm the 88181<br>【view】1

<?php
session_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 88181<br>";
echo "【view】{$_SESSION['view']}";

看看效果

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

忘了說了,nginxProxy 伺服器的地址為http://192.168.1.113,

瀏覽器輸入http://192.168.1.113/index.php之後,不停的重新整理,你會發現,會在

I'm the 88181、I'm the linux

這兩個頁面之間來回交換,view會沒重新整理兩下增加一次,這也證明了前面所說的預設是輪訓的方式。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.