反向代理負載均衡之APACHE


反向代理負載均衡之APACHE

一、反向代理
1.1 介紹反響代理

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

1.2 反向代理的工作方式

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

1.3 反向代理的作用


1.3.1 保護網站安全

任何來自Internet的請求都必須先經過代理服務器

 

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

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

1.3.3 實現負載均衡

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

二、使用apache實現反向代理實戰
2.1 環境准備:兩台虛擬機

操作系統:centos7.X

1、備份

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

2、下載新的CentOS-Base.repo 到/etc/yum.repos.d/

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

# yum install -y gcc glibc gcc-c++ make screen tree lrzsz

 

node1:
以yum的方式安裝apache修改http端口為8080

# yum install -y httpd
# sed -i 's/Listen 80/Listen 8080/g' /etc/httpd/conf/httpd.conf

# echo 'node1' > /var/www/html/index.html 
[root@node2 ~]# curl http://192.168.3.200:8080/
node1

 

node2:
以yum的方式安裝apache修改http端口為8080

# yum install -y httpd
# sed -i 's/Listen 80/Listen 8080/g' /etc/httpd/conf/httpd.conf

# echo 'node2' > /var/www/html/index.html 
[root@node2 ~]# curl http://192.168.3.200:8080/
node2

在node1上再次編譯安裝apache2.4.25作為反向代理服務器

# cd /usr/local/src/ && wget http://mirrors.hust.edu.cn/apache/httpd/httpd-2.4.25.tar.gz

# tar zxf httpd-2.4.25.tar.gz
# cd httpd-2.4.25
# ./configure --prefix=/usr/local/httpd-2.4.25 --enable-so --enable-modules="all"
# make && make install
# ln -s /usr/local/httpd-2.4.25/ /usr/local/httpd

編輯linux-node1的apache作為反向代理的配置文件

# vim /usr/local/httpd/conf/extra/httpd-proxy.conf

LoadModule 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://mycluster> #lb集群組的名稱
BalancerMember http://192.168.3.140:8080 #集群組成員
BalancerMember http://192.168.3.200:8080 #集群組成員
</Proxy>
ProxyPass /demo balancer://mycluster #跳轉,和lb集群組名稱對應
ProxyPassReverse /demo balancer://mycluster

 

在apache的主配置文件include上述配置文件,並啟動apache

# vim /usr/local/httpd/conf/httpd.conf

Include conf/extra/httpd-proxy.conf

 

# 寫入測試文件

# echo 'node1' > /usr/local/httpd-2.4.25/htdocs/index.html

/usr/local/httpd/bin/apachectl -t # 測試apache語法是否正確
/usr/local/httpd/bin/apachectl -k start # 啟動apache

 

通過訪問代理服務器,可以看到負載均衡的效果

http://192.168.3.140:8080/demo


對apache增加一個管理,並重啟

# cat /usr/local/httpd/conf/extra/httpd-proxy.conf

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so
LoadModule lbmethod_bytraffic_module modules/mod_lbmethod_bytraffic.so
LoadModule lbmethod_bybusyness_module modules/mod_lbmethod_bybusyness.so
LoadModule slotmem_shm_module modules/mod_slotmem_shm.so
ProxyRequests Off
<Proxy balancer://mycluster>
BalancerMember http://192.168.3.140:8080
BalancerMember http://192.168.3.200:8080
</Proxy>
ProxyPass /demo balancer://mycluster
ProxyPassReverse /demo balancer://mycluster
<Location /manager>
SetHandler balancer-manager
Order Deny,Allow
Allow from all
</Location>

 

打開瀏覽器管理界面
http://192.168.3.140:8080/manager

增加虛擬主機

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so
LoadModule lbmethod_bytraffic_module modules/mod_lbmethod_bytraffic.so
LoadModule lbmethod_bybusyness_module modules/mod_lbmethod_bybusyness.so
LoadModule slotmem_shm_module modules/mod_slotmem_shm.so
ProxyRequests Off
<Proxy balancer://mycluster>
BalancerMember http://192.168.3.140:8080
BalancerMember http://192.168.3.200:8080
</Proxy>
ProxyPass /demo balancer://mycluster
ProxyPassReverse /demo balancer://mycluster

<Location /manager>
SetHandler balancer-manager
Order Deny,Allow
Allow from all
</Location>

<VirtualHost *:80>
ServerAdmin webmaster@chinasoft.com
DocumentRoot "/opt"
ServerName www.chinasoft.com
ServerAlias chinasoft.com
ErrorLog "logs/www.chinasoft.com-error_log"
CustomLog "logs/www.chinasoft.com-access_log" common
ProxyPass / balancer://mycluster
ProxyPassReverse / balancer://mycluster
</VirtualHost>

 

在本地電腦的host文件加入以下內容,過后要清理掉
192.168.3.140 www.chinasoft.com

http://www.chinasoft.com


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM