标签:
Apache 反向代理、负载均衡
1、 2 个tomcat实例
2、 安装Apache server2.2
在这个配置中,只使用到了apache server,没有使用到tomcat。
1) ${apacheserver}/conf/extra/httpd-vhosts.conf在配置一个使用反向代理的虚拟主机
<VirtualHost *:80> ServerAdmin test@test.com ServerName www.test.com ProxyRequests Off <Proxy *> Order deny,allow Allow from all </Proxy> ProxyPass /test http://192.168.1.250:8080/test ProxyPassReverse /test http://192.168.1.250:8080/test </VirtualHost> |
这里是在apache中配置了一个虚拟主机。
端口是80
ServerAdmin:是邮箱地址
ServerName:是hosts文件中配置的域名
ProxyPass /test http://192.168.1.250:8080/test 是表示访问http://www.test.com/test 下的资源时,都使用配置的这个Prxoy。
2)在${apacheserver}/conf/httpd.conf 文件中做如下配置
LoadModule proxy_module modules/mod_proxy.so和 LoadModule proxy_http_module modules/mod_proxy_http.so前的注释去掉 目的是让apache启动时加载proxy相关模块 |
把Include conf/extra/httpd-vhosts.conf前页的注释去掉 目的是,让apache启动时加载虚拟主机配置 |
1)调整它们的端口(shutdown,http或者ajp)
2)指定route
<Engine name="Catalina" defaultHost="localhost" jvmRoute="worker1"> |
两个tomcat实例,一个是worker1,一个是worker2。后面配置apache时要用到。
1) 加载相关代理模块
既然要使用代理方式访问,肯定要有代理模块才行的。
在${apacheserver}/config/http.conf中做如下配置:
启用proxy的命令是:
LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_balancer_module modules/mod_proxy_balancer.so LoadModule proxy_http_module modules/mod_proxy_http.so |
如果要配置AJP协议,也要mod_proxy_ajp.so前面的#去掉。
2)定义反向代理和负载均衡
配置的源码是:
<IfModule proxy_balancer_module> # define a Load Balance Proxy based HTTP protocol <IfModule proxy_http_module> <Proxy balancer://myHttpLB> BalancerMember http://localhost:18080/examples loadfactor=80 route=worker1 BalancerMember http://localhost:28080/examples loadfactor=20 route=worker2 </Proxy>
ProxyRequests off ProxyPass /examples balancer://myHttpLB/ stickySession=JSESSIONID nofailover=Off ProxyPassReverse /examples balancer://myHttpLB/ </IfModule>
# define a Load Balance Proxy based AJP protocol <IfModule proxy_ajp_module> <Proxy balancer://myAjpLB> BalancerMember ajp://localhost:18080/examples loadfactor=80 route=worker1 BalancerMember ajp://localhost:28080/examples loadfactor=20 route=worker2 </Proxy>
ProxyRequests off ProxyPass /examples balancer://myAjpLB/ stickySession=JSESSIONID nofailover=Off ProxyPassReverse /examples balancer://myAjpLB/ </IfModule> </IfModule> |
上面的配置中,根据加载的模块启动了两个具有负载均衡功能的反向Proxy,一个是基于HTTP协议的,一个 是基于AJP协议的。下面对HTTP协议的做一个说明:
<Proxy balancer://myHttpLB> BalancerMember http://localhost:18080/examples loadfactor=80 route=worker1 BalancerMember http://localhost:28080/examples loadfactor=20 route=worker2 </Proxy> |
定义一个Proxy,这个Proxy启用了负载均衡,名称是balancer://myHttpLB
有两个成员:worker1和worker2。权重分别为80、20。
ProxyPass /examples balancer://myHttpLB/ stickySession=JSESSIONID nofailover=Off |
这个配置表示:
在访问http://apacheServerIp:port/examples 下的资源时,由交给负载均衡balancer://myHttpLB/ 来处理。
stickySession 表示启用粘性会话。
Nofailover用于配置故障转移的。
ProxyPassReverse /examples balancer://myAjpLB/ |
用于调整由反向代理服务器发送的HTTP回应头中的URL
如果对ProxyPass配置中还有不理解的地方,可以参考
http://blog.chinaunix.net/uid-13328647-id-2902236.html
测试
访问http://localhost/examples。
examples是tomcat/webapps下的应用,所以肯定是可以访问到的。
标签:
原文地址:http://www.cnblogs.com/f1194361820/p/5110956.html