正向代理 填写上一个代理服务器的ip和端口,即可通过代理服务器中转,去浏览网页 ProxyRequests On ProxyVia On <Proxy *> Order deny,allow Deny from all Allow from 192.16.10.0/24 </Proxy> 反向代理 以代理服务器来接受 Internet 上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给 Internet 上请求连接的客户端, 此时代理服务器对外就表现为一个反向代理服务器。常用做网站服务器配置,可以提供从防火墙外部代理服务器到防火墙内部安全内容服务器的加密连接,隐藏后端真实服务器,更加安全 下面的配置是将本地的8080端口运行的程序映射到autoclock.steventan.top这个域名上 服务器上运行的spring boot项目,能通过域名直接在公网访问。 需要用到 proxy 模块 <VirtualHost *:80> ServerName autoclock.steventan.top #这里填代理服务器的IP或域名 ProxyRequests off #off表示开启反向代理 on表示开启正向代理 ProxyPass / http://localhost:8080/ #被代理的网站,中间的那个/千万别少了,少了的话重启报错 ProxyPassReverse / http://localhost:8080/ #被代理的网站 # RewriteEngine on # RewriteCond %{HTTPS} !=on # RewriteRule ^(.*) https://%{SERVER_NAME}$1 [L,R] ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost> Apache的负载均衡主要是通过mod_proxy_balancer 模块实现 策略 1.轮询:即根据http请求数(requests)来均衡的分配给所代理的服务器 ProxyRequests Off <Proxy balancer://cluster> BalancerMember http://192.168.2.40:80/ BalancerMember http://192.168.2.22:80/ </Proxy> ProxyPass /test balancer://cluster/test ProxyPassReverse /test balancer://cluster/test 2.权重:即根据请求数量,调整分配比例(即访问三次40,访问一次22) ProxyRequests Off <Proxy balancer://cluster> BalancerMember http://192.168.2.40:80/ loadfactor=3 BalancerMember http://192.168.2.22:80/ loadfactor=1 </Proxy> ProxyPass /test balancer://cluster/test ProxyPassReverse /test balancer://cluster/test 3.请求响应:即根据流量,调整分配比例(说明:第二种是以请求数量的权重进行分配,而第三种是以流量的权重进行分配) ProxyRequests Off <Proxy balancer://cluster> BalancerMember http://192.168.2.40:80/ loadfactor=3 BalancerMember http://192.168.2.22:80/ loadfactor=1 </Proxy> ProxyPass /test balancer://cluster/test lbmethod=bytraffic ProxyPassReverse /test balancer://cluster/test lbmethod=bytraffic 一开始请求过来,没有带session信息, jvm_route插件的目的是为了保证在轮询机制下的session的共享 jvm_route就根据round robin的方法,发到一台或两台tomcat上面。 如果是负载均衡,代理两台tomcat,但是需要制定出来 route=TomcatA route=TomcatB 登录单独的代理服务器,看时nginx代理还是apache代理(apache代理的位置在/etc/httpd,nginx代理的位置在/etc/nginx) cd /etc/httpd/conf.d/ vim infoplus.conf RewriteRule /infoplus/static/themes/sdyu/(.*)$ /infoplus-themes-sdyu/static/themes/sdyu/$1 [P,L] <Location /infoplus> RewriteEngine On #RewriteRule /infoplus/static/themes/form_btn_bottom/(.*)$ /infoplus-themes-form_btn_bottom/static/themes/form_btn_bottom/$1 [P,L] #RewriteRule /infoplus/static/themes/form_btn_bottom/(.*)$ /infoplus-themes-form_btn_bottom/static/themes/form_btn_bottom/$1 [P,L] #ProxyPass http://172.21.0.22:8080/infoplus ProxyPass balancer://cluserinfoplus/infoplus ProxyPassReverse balancer://cluserinfoplus/infoplus </Location> <Proxy balancer://cluserinfoplus> BalancerMember http://172.21.0.22:8080 loadfactor=1 route=TomcatA timeout=720 BalancerMember http://172.21.0.54:8080 loadfactor=1 route=TomcatB timeout=720 ProxySet lbmethod=byrequests stickysession=JSESSIONID </Proxy> 所做的操作 <Location></Location>中注释了ProxyPass http://172.21.0.22:8080/infoplus,添加了两行 ProxyPass balancer://cluserinfoplus/infoplus ProxyPassReverse balancer://cluserinfoplus/infoplus RewriteRule地址重定向要写在location外面 添加了<Proxy balancer://cluserinfoplus></Proxy>这一段 <Proxy balancer://cluserinfoplus> BalancerMember http://172.21.0.22:8080 loadfactor=1 route=TomcatA timeout=720 BalancerMember http://172.21.0.54:8080 loadfactor=1 route=TomcatB timeout=720 ProxySet lbmethod=byrequests stickysession=JSESSIONID </Proxy> 然后需要去172.21.0.22;172.21.0.54两台机器的tomcat配置文件Engine name中分别添加上jvmRoute="TomcatA";jvmRoute="TomcatB",如下所示 <Engine name="Catalina" defaultHost="localhost" jvmRoute="TomcatA"> 然后重新加载httpd;systemctl reload httpd 查看redis的配置文件位置 rpm -qal redis 找到后把bind改为0.0.0.0,所有服务器可连接 infoplus是根据redis做的一个集群,现在做负载均衡需要做负载主机上的redis跟原来主机上是同一个redis, 应用中的redis相关配置在tomcat8的server.xml中,然后把新机器的redis设置为跟老的一个redis,即localhost改为172.21.0.22 <Environment name="conf/InfoPlus/EngineRedisHost" type="java.lang.String" value="172.21.0.22" /> <Environment name="conf/InfoPlus/EngineRedisPort" type="java.lang.Integer" value="6379" /> ```
Apache做负载均衡
最新推荐文章于 2024-05-16 06:06:25 发布