前言
这篇博客的目的主要是想总结一下目前已经学习到了代理服务,以便记忆也方便以后查阅。接下来的内容都是纯实验演示,主要是各代理服务的配置方法。
操作
准备
这次准备的是三台CentOS7.3的服务器,两台作为tomcat服务器,一台作为代理。
两台tomcat的服务器的IP分别是:172.16.253.143,172.16.254.235
代理服务器的地址是:172.16.250.39
在后面的实验中两台服务器相同的操作内容就不重复演示,比如安装包
配置两台tomcat服务器
[root@tomcat1 ~]# yum install java-1.8.0-openjdk-devel tomcat-lib tomcat tomcat-admin-webapps tomcat-webapps tomcat-docs-webapp -y #安装所需要的包,这里注意别忘了装另外一台 [root@proxy ~]# yum install nginx -y #代理服务器安装nginx [root@tomcat1 ~]# mkdir -p /usr/share/tomcat/webapps/test/{classes,lib,WEB-INF} [root@tomcat2 ~]# mkdir -p /usr/share/tomcat/webapps/test/{classes,lib,WEB-INF} #创建测试应用目录 [root@tomcat1 ~]# vim /usr/share/tomcat/webapps/test/index.jsp <%@ page language="java" %> <html> <head><title>TomcatA</title></head> <body> <h1><font color="red">TomcatA.chenjingyu.cn</font></h1> <table align="centre" border="1"> <tr> <td>Session ID</td> <% session.setAttribute("chenjingyu.cn","chenjingyu.cn"); %> <td><%= session.getId() %></td> </tr> <tr> <td>Created on</td> <td><%= session.getCreationTime() %></td> </tr> </table> </body> </html> #写入测试页面A,对应的在tomcat2服务器上也要部署对应的tomcatB [root@tomcat1 ~]# vim /etc/tomcat/server.xml #更改配置文件在默认host下添加 <Context path="/test" docBase="test" reloadable="true" /> #到这里基本上配置好tomcat了,下面启动服务 [root@tomcat ~]# systemctl start tomcat
这里我先测试一下tomcat服务器是否正常
访问172.16.253.143:8080
访问172.16.253.143:8080/test
访问172.16.254.235:8080
访问172.16.254.235:8080/test
如图所示,一切正常
nginx的实现方法
tomcat服务器到这里就算是搭建好了,下面配置代理服务器。
[root@proxy ~]# yum install nginx -y #安装nginx [root@proxy ~]# vim /etc/nginx/nginx.conf #配置nginx #在http下加上 upstream tomcatsrvs { server 172.16.253.143:8080; server 172.16.254.235:8080; } #在server下加上 location / { proxy_pass http://tomcatsrvs; } #保存退出 [root@proxy ~]# nginx -t #检查没问题就启动服务 [root@proxy ~]# systemctl start nginx #启动服务
配置完成,下面测试
访问172.16.250.39,因为这里两个tomcat服务器的欢迎界面都一样所以刷新也看不出来
访问172.16.250.39/test,刷新之后页面就变化了
之后的几种方法测试步骤我就不再演示了,因为结果都和这上面是一样的。
haproxy的实现方法
[root@proxy ~]# systemctl stop nginx #首先停止nginx服务 [root@proxy ~]# yum install haproxy -y #安装haproxy [root@proxy ~]# vim /etc/haproxy/haproxy.cfg #进入配置文件删除frontend这行包括这行以下所有内容或者注释这些内容,然后添加以下内容 frontend tomcat bind *:80 default_backend tomcatsrvs backend tomcatsrvs balance roundrobin server cat1 172.16.253.143:8080 check server cat2 172.16.254.235:8080 check #保存退出 [root@proxy ~]# systemctl start haproxy #启动服务
配置完成,测试过程就不再演示了,效果和上面的相同。
httpd的实现方法
[root@proxy ~]# systemctl stop haproxy #停止haproxy服务 [root@proxy ~]# yum install httpd -y #安装httpd [root@proxy ~]# vim /etc/httpd/conf.d/tomcat-http.conf #创建配置文件并添加以下内容 <proxy balancer://tomcatsrvs> balancermember http://172.16.253.143:8080 balancermember http://172.16.254.235:8080 proxyset lbmethod=byrequests </proxy> <virtualhost *:80> servername 172.16.250.39 proxyvia on proxyrequests off proxypreservehost on <proxy *> require all granted </proxy> proxypass / balancer://tomcatsrvs/ proxypassreverse / balancer://tomcatsrvs/ <location /> require all granted </location> </virtualhost> [root@proxy ~]# systemctl start httpd #启动服务
到这里就配置完成了。
httpd还有一种实现方法是用proxy_ajp_module模块实现
配置文件和上面只有协议和端口不同,如下
<proxy balancer://tomcatsrvs> balancermember ajp://172.16.253.143:8009 balancermember ajp://172.16.254.235:8009 proxyset lbmethod=byrequests </proxy> <virtualhost *:80> servername 172.16.250.39 proxyvia on proxyrequests off proxypreservehost on <proxy *> require all granted </proxy> proxypass / balancer://tomcatsrvs/ proxypassreverse / balancer://tomcatsrvs/ <location /> require all granted </location> </virtualhost>
实验完毕