300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > windows apache 负载均衡配置 Tomcat集群配置

windows apache 负载均衡配置 Tomcat集群配置

时间:2022-02-27 22:32:27

相关推荐

windows apache 负载均衡配置  Tomcat集群配置

独角兽企业重金招聘Python工程师标准>>>

1.安装

exe可执行文件的安装方式:/article/ed15cb1b73b3071be269816d.html

解压缩包的安装方式:win+r --> cmd --> 打开dos界面,进入到Apache\bin目录下执行 httpd.exe -k install -n "apache2.2" 。 执行完成 Apache服务安装完毕。apache2.2 为服务的名称

1.1 查看服务:win+r -->services.msc

1.2 dos中开启和关闭服务

启动服务遇到问题:右击我的电脑-->管理-->事件查看器-->找到Apache Service-->右键-->查看事件的所有实例

由于Apache的docs log 等路径都的 /Apache/*** ,但是我的服务是放在了自己建立的文件夹下,所以服务启动的时候找不到这些文件。大部分问题是这些。

1.3 服务安装成功,浏览器访问 http://localhost/

显示如上界面,Apache安装成功。

1.负载均衡配置

配置httpd.conf 文件

1.1 去掉注释块

#提供HTTP/1.1的代理/网关功能支持

LoadModule proxy_module modules/mod_proxy.so

#mod_proxy的扩展,提供Apache JServ Protocol支持

LoadModule proxy_ajp_module modules/mod_proxy_ajp.so

#mod_proxy的扩展,提供负载均衡支持

LoadModule proxy_balancer_module modules/mod_proxy_balancer.so

#mod_proxy的扩展,提供对处理HTTP CONNECT方法的支持

LoadModule proxy_connect_module modules/mod_proxy_connect.so

#mod_proxy的FTP支持模块

LoadModule proxy_ftp_module modules/mod_proxy_ftp.so

#mod_proxy的HTTP支持模块

LoadModule proxy_http_module modules/mod_proxy_http.so

1.2 将虚拟主机的注释去掉,将httpd-vhosts.conf 引入。

# Virtual hosts

Include conf/extra/httpd-vhosts.conf

httpd-vhosts.conf文件添加:

<VirtualHost *:80>ServerAdmin abc@proxyRequests offServerName ServerAlias ProxyPass /resource!ProxyPass /req balancer://cluster/ stickysession=JSESSIONID|jsessionid nofailover=OnProxyPassReverse /req balancer://cluster/ProxySet lbmethod=bytraffic </VirtualHost>

<proxy balancer://cluster>BalancerMember ajp://12.34.56.78:8011loadfactor=1 route=tomcat1BalancerMember ajp://12.34.56.78:8012loadfactor=1 route=tomcat2BalancerMember ajp://12.34.56.78:8013loadfactor=1 route=tomcat3BalancerMember ajp://12.34.56.78:8014loadfactor=1 route=tomcat4 status=+H</proxy>

解释:其中ProxyPass /resource! 表示/resource开头的请求不会转发给Tomcat,而是作为静态资源在Apache的resource目录下寻找资源文件。而反向代理将所有的/req 请求都转发给名叫cluster的balancer。而这个balancer有四个Tomcat成员status=+H 表示热部署。

ProxySet lbmethod=bytraffic 设置负载均衡的策略

lbmethod可能的取值有:

lbmethod=byrequests 按照请求次数均衡(默认)

lbmethod=bytraffic 按照流量均衡

lbmethod=bybusyness 按照繁忙程度均衡(总是分配给活跃请求数最少的服务器)

stickySession=JSESSIONID表示开启粘性Session。意思是如果第一次请求分到了tomcat1,那么这个用户的后续请求,都会分配给tomcat1这个服务。

然后在Apache配置故障转移(nofailover=On)

如果tomcat1服务宕机,那么Apache会将请求提交当其它服务器,由于后台Tomcat服务器做了Session共享(也就是服务器Session复制),所以用户的Session并没有丢失。

2.Tomcat服务集群配置

Apache配置了四台服务的负载均衡,对应的Tomcat服务器也需要四台。以Tomcat6.x为例

2.1 配置Server port在tomcat-6.x\conf\server.xml文件中找到

<Serverport="8005"shutdown="SHUTDOWN"><!--修改成: --><Serverport="8006"shutdown="SHUTDOWN">

并将其余3个Tomcat的Server port分别修改成8007,8008,8009。

2.2 配置Connector port在tomcat-6.x\conf\server.xml文件中找到

<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /><!--修改成:--><Connector port="8081" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /><!--并将其余3个Tomcat的port分别修改成8082,8083,8084-->

2.3 配置Apache和Tomcat通讯端口,在tomcat-6.x\conf\server.xml文件中找到

<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /><!--修改成:--><Connector port="8011" protocol="AJP/1.3" redirectPort="8443" /><!--并将其余3个Tomcat的port分别修改成8012,8013,8014 -->

2.3 是apache和tomcat链接的关键,前台apache就是通过AJP协议与tomcat进行通信的,以完成负载均衡,上面的port="8011"就是Apache连接Tomcat的端口。

回顾一下httpd.conf配置中的

<proxy balancer://cluster>BalancerMember ajp://12.34.56.78:8011loadfactor=1 route=tomcat1BalancerMember ajp://12.34.56.78:8012loadfactor=1 route=tomcat2BalancerMember ajp://12.34.56.78:8013loadfactor=1 route=tomcat3BalancerMember ajp://12.34.56.78:8014loadfactor=1 route=tomcat4</proxy>

Tomcat中的端口要和“ajp://12.34.56.78:XXXX”后面端口一致。

2.4 配置Engine ,在tomcat-6.x\conf\server.xml文件中找到

<Engine name="Catalina" defaultHost="localhost">,<!--修改成:--><Engine name="Standalone" defaultHost="localhost" jvmRoute="tomcat1"><!--并将其余3个Tomcat的jvmRoute分别修改成:--><Engine name="Standalone" defaultHost="localhost" jvmRoute="tomcat2"><Engine name="Standalone" defaultHost="localhost" jvmRoute="tomcat3"><Engine name="Standalone" defaultHost="localhost" jvmRoute="tomcat4">

回顾一下httpd.conf配置中的

<proxy balancer://cluster>BalancerMember ajp://12.34.56.78:8011loadfactor=1 route=tomcat1BalancerMember ajp://12.34.56.78:8012loadfactor=1 route=tomcat2BalancerMember ajp://12.34.56.78:8013loadfactor=1 route=tomcat3BalancerMember ajp://12.34.56.78:8014loadfactor=1 route=tomcat4</proxy>

Tomcat中的jvmRoute="tomcatx"要和“route=tomcatx”中的命名一致。

2.5 配置Cluster ,在tomcat-6.x\conf\server.xml文件中找到

<!--在注释行的下面添加:--><Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" channelSendOptions="6"><Manager className="org.apache.catalina.ha.session.BackupManager"expireSessionsOnShutdown="false"notifyListenersOnReplication="true"mapSendOptions="6"/><Channel className="org.apache.catalina.tribes.group.GroupChannel"><Membership className="org.apache.catalina.tribes.membership.McastService"address="228.0.0.4"port="45564"frequency="500"dropTime="3000"/><Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"address="auto"port="5001"selectorTimeout="100"maxThreads="6"/><Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter"><Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/></Sender><Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/><Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/><Interceptor className="org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor"/></Channel><Valve className="org.apache.catalina.ha.tcp.ReplicationValve"filter=".*/.gif;.*/.js;.*/.jpg;.*/.png;.*/.htm;.*/.html;.*/.css;.*/.txt;"/><ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/></Cluster>

其余3个Tomcat都要做相同的配置,注意每个Tomcat之间的差别是<Receiver>标签下面的port值不一样,这里是5001,其余3个Tomcat中分别是5002,5003,5004

3. Tomcat集群要解决的问题

3.1 Session共享

1.所有session中的对象可以序列化,实现 java.io.Serializable接口。

2.确保你部署文件中的web.xml有<distributable/>元素(其父元素为</web-app>),或者设置你的<Context distributable="true" />。

3.当使用多台机器时,要保证不同机器时间的同步。

4.确保你的loadbalancer是sticky session 模式。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。