反向 Proxy負載平衡之apache

來源:互聯網
上載者:User

標籤:method   拒絕   pen   c++   errorlog   不同   clu   apr   dha   

1.1 介紹反向 Proxy

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

1.2 反向 Proxy的工作方式

  通常的Proxy 伺服器,只用於代理內部網路對Internet的串連請求,客戶機必須指定Proxy 伺服器,並將本來要直接發送到Web伺服器上的http請求發送到Proxy 伺服器中。由於外部網路上的主機並不會配置並使用這個Proxy 伺服器,普通Proxy 伺服器也被設計為在Internet上搜尋多個不確定的伺服器,而不是針對Internet上多個客戶機的請求訪問某一個固定的伺服器,因此普通的WebProxy 伺服器不支援外部對內部網路的訪問請求。當一個Proxy 伺服器能夠代理外部網路上的主機,訪問內部網路時,這種代理服務的方式稱為反向 Proxy服務。此時Proxy 伺服器對外就表現為一個Web伺服器,外部網路就可以簡單把它當作一個標準的Web伺服器而不需要特定的配置。不同之處在於,這個伺服器沒有儲存任何網頁的真實資料,所有的靜態網頁或者CGI程式,都儲存在內部的Web伺服器上。因此對反向 Proxy伺服器的攻擊並不會使得網頁資訊遭到破壞,這樣就增強了Web伺服器的安全性。
  反向 Proxy方式和包過濾方式或普通代理方式並無衝突,因此可以在防火牆裝置中同時使用這兩種方式,其中反向 Proxy用於外部網路訪問內部網路時使用,正向 Proxy或包過濾方式用於拒絕其他外部存取方式並提供內部網路對外部網路的訪問能力。因此可以結合這些方式提供最佳的安全訪問方式。

1.3 反向 Proxy的作用1.3.1 保護網站安全

任何來自Internet的請求都必須先經過Proxy 伺服器

1.3.2 配置緩衝功能加速Web請求

可以緩衝真實Web伺服器上的某些靜態資源,減輕真實Web伺服器的負載壓力

 

1.3.3 實現負載平衡

充當負載平衡伺服器均衡地分發請求,平衡叢集中各個伺服器的負載壓力

二、使用apache實現反向 Proxy實戰2.1 環境準備:兩台虛擬機器

在兩台機器部署apache作為RS

第一台

[[email protected] ~]# hostnamelinux-node1.example.com[[email protected]-node1 ~]# uname -r2.6.32-504.el6.x86_64[[email protected]-node1 ~]# cat /etc/redhat-release CentOS release 6.6 (Final)[[email protected]-node1 ~]# tail -3 /etc/hosts192.168.230.128  linux-node1.example.com192.168.230.129     linux-node2.example.com

yum安裝httpd做RS節點

[[email protected] ~]#  sed -i ‘s/Listen 80/Listen 8080/g‘ /etc/httpd/conf/httpd.conf[[email protected]-node1 ~]# echo "check-test1" > /var/www/html/index.html[[email protected]-node1 ~]# /etc/init.d/httpd startStarting httpd:                                            [  OK  ][[email protected]-node1 ~]# netstat -ntplActive Internet connections (only servers)Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name  tcp        0      0 0.0.0.0:22682               0.0.0.0:*                   LISTEN      1008/sshd          tcp        0      0 :::22682                    :::*                        LISTEN      1008/sshd          tcp        0      0 :::8080                     :::*                        LISTEN      3907/httpd

第二台上安裝httpd作為RS節點,同上,同時編譯安裝作為httpd反向 Proxy

安裝基礎環境包

yum -y install apr-devel apr-util-devel pcre-devel openssl-devel gcc-c++

 

下載

wget http://mirrors.tuna.tsinghua.edu.cn/apache//httpd/httpd-2.4.23.tar.gz wget http://www-eu.apache.org/dist//httpd/httpd-2.4.18.tar.gz 

centos 6.6 預設的APR和APR-Util版本低 ,需要安裝新的 ,如下官方介紹

APR and APR-Util    Make sure you have APR and APR-Util already installed on your system. If you don‘t, or prefer to not use the system-provided versions, download the latest versions of both APR and APR-Util from Apache APR,     unpack them into /httpd_source_tree_root/srclib/apr and /httpd_source_tree_root/srclib/apr-util (be sure the directory names do not have version numbers; for example,     the APR distribution must be under /httpd_source_tree_root/srclib/apr/) and use ./configure‘s --with-included-apr option. On some platforms, you may have to install the     corresponding -dev packages to allow httpd to build against your installed copy of APR and APR-Util

       下載新的apr和apr-util

[[email protected] src]# lsapr-1.4.5.tar.gz  apr-util-1.5.1.tar.gz 

解壓到http源碼的srclib目錄,不能帶版本號碼

[email protected] httpd-2.4.23]# ls srclib/apr  apr-util  Makefile  Makefile.in

後面加上--with-included-apr

[[email protected] src]# ./configure --prefix=/usr/local/httpd-2.4.18 --enable-so --enable-modules="all" --with-included-apr[[email protected] httpd-2.4.23]# make && make install

測試組態並啟動

[[email protected] httpd-2.4.23]# /usr/local/httpd/bin/apachectl -tSyntax OK[[email protected]-node2 httpd-2.4.23]# /usr/local/httpd/bin/apachectl -k start

 

 

編輯linux-node2的apache作為反向 Proxy的設定檔
[[email protected] extra]# pwd  #路徑/usr/local/httpd-2.4.18/conf/extra[[email protected]-node2 extra]# cat httpd-proxy.conf #www.check-blog.comLoadModule proxy_module modules/mod_proxy.soLoadModule proxy_connect_module modules/mod_proxy_connect.soLoadModule proxy_http_module modules/mod_proxy_http.soLoadModule proxy_balancer_module modules/mod_proxy_balancer.soLoadModule lbmethod_byrequests_module  modules/mod_lbmethod_byrequests.soLoadModule lbmethod_bytraffic_module modules/mod_lbmethod_bytraffic.soLoadModule lbmethod_bybusyness_module modules/mod_lbmethod_bybusyness.soLoadModule slotmem_shm_module modules/mod_slotmem_shm.soProxyRequests Off<Proxy balancer://check-cluster>BalancerMember http://192.168.230.129:8080BalancerMember http://192.168.230.128:8080</Proxy>ProxyPass /demo balancer://check-clusterProxyPassReverse /demo balancer://check-cluste#www.check-blog.comLoadModule proxy_module modules/mod_proxy.so  #proxy模組LoadModule proxy_connect_module modules/mod_proxy_connect.so  #連結的模組LoadModule proxy_http_module modules/mod_proxy_http.so #給http做代理模組LoadModule proxy_balancer_module modules/mod_proxy_balancer.so #負載平衡模組LoadModule lbmethod_byrequests_module  modules/mod_lbmethod_byrequests.so  #演算法模組,根據server的請求量LoadModule lbmethod_bytraffic_module modules/mod_lbmethod_bytraffic.so   #演算法模組,根據server流量LoadModule lbmethod_bybusyness_module modules/mod_lbmethod_bybusyness.so  #演算法模組,根據server繁忙程度LoadModule slotmem_shm_module modules/mod_slotmem_shm.so #ProxyRequests Off    #如果沒有對伺服器採取安全措施之前,請不要開啟此項<Proxy balancer://check-cluster>  #lb叢集組的名稱BalancerMember http://192.168.230.129:8080  #叢集群組成員BalancerMember http://192.168.230.128:8080  #叢集群組成員</Proxy>ProxyPass /demo balancer://check-cluster  #跳轉,和lb叢集組名稱對應,訪問demoProxyPassReverse /demo balancer://check-cluster  將剛才的檔案包含[[email protected]-node2 extra]# vim /usr/local/httpd-2.4.18/conf/httpd.conf +482# Proxy demoInclude  conf/extra/httpd-proxy.conf檢查文法[[email protected]-node2 extra]# /usr/local/httpd/bin/apachectl -tSyntax OK重啟[[email protected]-node2 extra]# /usr/local/httpd/bin/apachectl -k restart

 

apache增加一個管理,並重啟
[[email protected] extra]# cat httpd-proxy.conf #www.check-blog.comLoadModule proxy_module modules/mod_proxy.soLoadModule proxy_connect_module modules/mod_proxy_connect.soLoadModule proxy_http_module modules/mod_proxy_http.soLoadModule proxy_balancer_module modules/mod_proxy_balancer.soLoadModule lbmethod_byrequests_module  modules/mod_lbmethod_byrequests.soLoadModule lbmethod_bytraffic_module modules/mod_lbmethod_bytraffic.soLoadModule lbmethod_bybusyness_module modules/mod_lbmethod_bybusyness.soLoadModule slotmem_shm_module modules/mod_slotmem_shm.soProxyRequests Off<Proxy balancer://check-cluster>BalancerMember http://192.168.230.129:8080BalancerMember http://192.168.230.128:8080</Proxy>ProxyPass /demo balancer://check-clusterProxyPassReverse /demo balancer://check-cluste<Location /manager>    SetHandler balancer-manager    Order Deny,Allow    Allow from all</Location>優雅重啟[[email protected]-node2 extra]# ../../bin/apachectl -k graceful

增加虛擬機器主機生效
[[email protected] extra]# cat httpd-proxy.conf #www.check-blog.comLoadModule proxy_module modules/mod_proxy.soLoadModule proxy_connect_module modules/mod_proxy_connect.soLoadModule proxy_http_module modules/mod_proxy_http.soLoadModule proxy_balancer_module modules/mod_proxy_balancer.soLoadModule lbmethod_byrequests_module  modules/mod_lbmethod_byrequests.soLoadModule lbmethod_bytraffic_module modules/mod_lbmethod_bytraffic.soLoadModule lbmethod_bybusyness_module modules/mod_lbmethod_bybusyness.soLoadModule slotmem_shm_module modules/mod_slotmem_shm.soProxyRequests Off<Proxy balancer://check-cluster>BalancerMember http://192.168.230.129:8080BalancerMember http://192.168.230.128:8080</Proxy>ProxyPass /demo balancer://check-clusterProxyPassReverse /demo balancer://check-cluste<Location /manager>    SetHandler balancer-manager    Order Deny,Allow    Allow from all</Location><VirtualHost *:80>    ServerAdmin [email protected]-blog.com    DocumentRoot "/opt"    ServerName www.check-blog.com    ServerAlias check-blog.com    ErrorLog "logs/www.check-blog.com-error_log"    CustomLog "logs/www.check-blog.com-access_log" common    ProxyPass / balancer://check-cluster    ProxyPassReverse / balancer://check-cluster</VirtualHost>重啟[[email protected]-node2 extra]# ../../bin/apachectl -k graceful

本地電腦解析

192.168.230.128 www.check-blog.com  check-blog.com

 

 

其他參數講解

詳情請參看apache官網
設定權重:loadfactor
設定會話保持:stickysession
lb方式:預設是byrequest,也可以是bytraffic或者bybusyness

http://httpd.apache.org/docs/2.4/mod/mod_proxy.html

 

反向 Proxy負載平衡之apache

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.