apache反向代理负载均衡配置
代理服务器概述
1.代理服务器概述
2.代理服务器的类型
3.补充说明
代理服务器概述
代理服务器是目前网络中常见的服务器之一,它可以提供缓存、复制和地址过滤等服务,充分利用有限的出口带宽,保证内部主机的访问速度,也可以解决多用户需要同时访问外网有IP地址不足的问题。同时可以作为一个防火墙,隔离内网与外网,并且能提供监控网络各记录传输信息的功能,加强局域网的安全性等。它的主要作用有以下几点:
1)共享网络
2)加快访问速度,节约通信带宽
3)防止内部主机受到攻击
4)限制用户访问,完善网络管理
代理服务器的类型
代理服务器可分成3种:正向代理、透明代理、反向代理
1)正向代理:
正向代理是一个位于客户端和原始服务器之间的服务器,为了从原始服务器取得内容,客户端向代理服务器发送一个请求并指定目标(原始服务器),然后代理服务器向原始服务器转发请求并将获得的内容返回给客户端。客户端必须要进行一些设置才能使用正向代理
2)透明代理:
客户端不用设置,就可以访问Ineternet(这就是与正向代理的区别)
3)反向代理:
反向代理是和正向代理相反,对于客户端而言,它就是原始服务器。并且客户端不需要进行任何特别的设置,客户端向反向代理的发送普通请求,接着反向代理将判断向何处(原始服务器)转发请求,并将获得的内容返回给客户端,就像这些内容就是代理服务器自己的一样
1)用途上来区分
正向代理:
正向代理用途是为了在防火墙内的局域网提供访问internet的途径。另外还可以使用缓冲特性减少网络使用率
反向代理:
反向代理的用途是将防火墙后面的服务器提供给internet用户访问。同时还可以完成诸如负载均衡等功能
2)安全性来讲:
正向代理:
正向代理允许客户端通过它访问任意网站并且隐蔽客户端自身,因此你必须采取安全措施来确保仅为经过授权的客户端提供服务
反向代理:
对外是透明的,访问者并不知道自己访问的是代理。对访问者而言,他以为访问的就是原始服务器
3)透明代理:
比如为了工作效率或者安全,A公司屏蔽了QQ软件的使用。A公司的员工接上了网络,但发现无法使用qq。这就是透明代理捣的鬼。公司在内网和外网的中间插入一个透明代理,这个代理会根据规则抓取请求内容,遇到qq的请求我就把这个请求给屏蔽掉,这样就完成了透明屏蔽。当然了,如果你明白原理,就可以自己搞个正向代理来绕过公司的屏蔽。
以上说明铺垫完毕,下面我们一起来看下反向代理负载均衡之Apache
反向代理负载均衡之Apache
1.环境准备
2.apache节点服务器配置
3.反向代理配置部署
4.测试反向代理服务器
环境准备
[root@web01 ~]# cat /etc/redhat-release CentOS Linux release 7.2.1511 (Core) [root@web01 ~]# uname -r 3.10.0-327.el7.x86_64 [root@web01 ~]# uname -m x86_64 主机名 IP lb01 10.0.0.5 web01 10.0.0.7 web02 10.0.0.8
部署web01
在两台web-node节点中均使用Yum安装一个Apache用于做真实机,监听8080端口 yum install -y gcc glibc gcc-c++ make screen tree lrzsz yum install -y httpd sed -i 's/Listen 80/Listen 8080/g' /etc/httpd/conf/httpd.conf systemctl start httpd echo "web01" > /var/www/html/index.html
部署web02
yum install -y gcc glibc gcc-c++ make screen tree lrzsz yum install -y httpd sed -i 's/Listen 80/Listen 8080/g' /etc/httpd/conf/httpd.conf systemctl start httpd echo "web02" > /var/www/html/index.html
编译安装apache
yum install -y apr-devel apr-util-devel pcre-devel openssl-devel wget http://mirrors.sohu.com/apache/httpd-2.4.25.tar.gz tar xf httpd-2.4.25.tar.gz cd httpd-2.4.25/ ./configure --prefix=/application/httpd-2.4.25 --enable-so --enable-modules="all" make && make install ln -s /application/httpd-2.4.25/ /application/httpd sed -i 's@#ServerName www.example.com:80@ServerName localhost:80@g' /application/httpd/conf/httpd.conf /application/httpd/bin/apachectl
配置反向代理
编辑httpd.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://web-cluster> BalancerMember http://10.0.0.7:8080 loadfactor=1 BalancerMember http://10.0.0.8:8080 loadfactor=2 </Proxy> ProxyPass /yh balancer://web-cluster ProxyPassReverse /yh balancer://web-cluster <Location /manager> SetHandler balancer-manager Order Deny,Allow Allow from all </Location>
用sed进行修改
sed -i 's@#LoadModule proxy_module modules/mod_proxy.so@LoadModule proxy_module modules/mod_proxy.so@g' /application/httpd/conf/httpd.conf sed -i 's@#LoadModule proxy_connect_module modules/mod_proxy_connect.so@LoadModule proxy_connect_module modules/mod_proxy_connect.so@g' /application/httpd/conf/httpd.conf sed -i 's@#LoadModule proxy_http_module modules/mod_proxy_http.so@LoadModule proxy_http_module modules/mod_proxy_http.so@g' /application/httpd/conf/httpd.conf sed -i 's@#LoadModule proxy_balancer_module modules/mod_proxy_balancer.so@LoadModule proxy_balancer_module modules/mod_proxy_balancer.so@g' /application/httpd/conf/httpd.conf sed -i 's@#LoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so@LoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so@g' /application/httpd/conf/httpd.conf sed -i 's@#LoadModule lbmethod_bytraffic_module modules/mod_lbmethod_bytraffic.so@LoadModule lbmethod_bytraffic_module modules/mod_lbmethod_bytraffic.so@g' /application/httpd/conf/httpd.conf sed -i 's@#LoadModule lbmethod_bybusyness_module modules/mod_lbmethod_bybusyness.so@LoadModule lbmethod_bybusyness_module modules/mod_lbmethod_bybusyness.so@g' /application/httpd/conf/httpd.conf sed -i 's@#LoadModule slotmem_shm_module modules/mod_slotmem_shm.so@LoadModule slotmem_shm_module modules/mod_slotmem_shm.so@g' /application/httpd/conf/httpd.conf
重载Apache服务
/application/httpd/bin/apachectl -k graceful
测试
[root@lb01 ~]# curl http://10.0.0.5/yh web02 [root@lb01 ~]# curl http://10.0.0.5/yh web02 [root@lb01 ~]# curl http://10.0.0.5/yh web01 [root@lb01 ~]# curl http://10.0.0.5/yh web02
使用HTTP访问Apache管理页面
访问http://10.0.0.5/manager
上面修改的apache配置文件详解
#proxy模块 LoadModule proxy_module modules/mod_proxy.so #链接模块 LoadModule proxy_connect_module modules/mod_proxy_connect.so #http代理模块 LoadModule proxy_http_module modules/mod_proxy_http.so #负载均衡模块 LoadModule proxy_balancer_module modules/mod_proxy_balancer.so #算法默认是byrequest,可以是bytraffic或者bybusyness #算法模块,根据server的请求量 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 LoadModule slotmem_shm_module modules/mod_slotmem_shm.so ProxyRequests Off #LB集群组名称 <Proxy balancer://web-cluster> #node节点并设置权重(可很多) BalancerMember http://10.0.0.7:8080 loadfactor=1 BalancerMember http://10.0.0.8:8080 loadfactor=2 </Proxy> #跳转至LB集群组名称,交由后端WEB节点处理 ProxyPass /yh balancer://web-cluster ==================生产环境不要配置下面的这些============================= ProxyPassReverse /yh balancer://web-cluster # Apache管理页面 <Location /manager> SetHandler balancer-manager Order Deny,Allow Allow from all </Location>