zz775520666 发表于 2018-12-5 09:52:53

nginx做前端反代负载均衡,后端httpd+tomcat

  实验内容:用nginx做前端反代负载均衡后端httpd+tomcat

  

  实验环境:物理机win7,虚拟机centos7;
  node1:172.18.11.111 httpd+tomcat

  node2:172.18.11.112 httpd+tomcat
  node3:172.18.11.113 nginx反代负载均衡
  

  说明:httpd有两种方式与tomcat通信;
  (1)httpd可使用http模块反代tomcat,此时tomcat使用http链接器;
  (2)httpd还可使用ajp模块反代tomcat,此时tomcat使用ajp链接器;
http://s1.运维网.com/wyfs02/M01/82/C1/wKiom1df9KKxa2-kAABeLevrCLc804.png
  在node3上:
  安装nginx
  ]# yum-y install nginx-1.8.0-1.el7.ngx.x86_64.rpm
  ]# vim /etc/nginx/conf.d/default.conf
  在server配置段添加:
  location / {

  root   /usr/share/nginx/html;
  indexindex.html index.htm;
  proxy_pass http://websrvs;
  }
  

  ]# vim /etc/nginx/nginx.conf
  在http配置段添加:
  upstream websrvs {
  server 172.18.11.111:80 weight=1;
  server 172.18.11.112:80 weight=2;
  }

  

  分别在node1和node2上:安装httpd和tomcat
  安装java运行环境:
  ]# yum -y install java-1.7.0-openjdk java-1.7.0-openjdk-devel
  ]# vim /etc/profile.d/java.sh
  export JAVA_HOME=/usr
  

  ]# . /etc/profile.d/java.sh
  

  安装tomcat:

  ]# yum install tomcat tomcat-lib tomcat-webapps tomcat-admin-webapps
  

  在web工作目录创建应用存放目录;

  ]# cd /var/lib/tomcat/webapps/
  ]# mkdir testapp
  ]# mkdir classes lib WEB-INF META-INF
  ]# vim/var/lib/tomcat/webapps/testapp/index.jsp
http://s5.运维网.com/wyfs02/M02/82/C2/wKiom1df-g_xtldtAAAuY0ofLk4067.png
  ]# vim /etc/tomcat/server.xml
  在Engine配置段添加:
  
  

  ]# systemctl start tomcat.service
  

  把创建的所有目录文件复制一份到node2上,然后再做配置文件修改:
  ]# scp -r /var/lib/tomcat/webapps/testapp/ node2:/var/lib/tomcat/webapps/
  ]# scp /etc/tomcat/server.xml node2:/etc/tomcat/
  

  在node2上:
  ]# vim /var/lib/tomcat/webapps/testapp/index.jsp
http://s5.运维网.com/wyfs02/M01/82/C2/wKiom1df-pCzqMTcAAA2Dt0cSX0340.png
  ]# systemctl start tomcat
  

  安装好tomcat后,分别在node1和node2上安装httpd并编辑配置文件:
  ]# yum -y install httpd
  ]# vim /etc/httpd/conf/httpd.conf
  #DocumentRoot "/var/www/html"
  

  ]# vim /etc/httpd/conf.d/proxy_http_tomcat.conf
http://s3.运维网.com/wyfs02/M00/82/C2/wKiom1df_k_TDw3HAAAwe0Ppc8k484.png
  因为node1和node2都是httpd本地反代tomcat,所有配置文件完全一样;
  

  本次使用proxy_http_module反代模块基于http协议与tomcat通信:
  ]# httpd -M
http://s4.运维网.com/wyfs02/M02/82/C2/wKiom1dgBJDyEiHfAAAqpC92lOk177.png
  ]# systemctl start httpd
  

  浏览器测试,输入http://172.18.11.113/testapp/index.jsp
  多次刷新后,实现负载均衡且比例为1:2,实现了前端nginx反代后端tomcat。
  

http://s4.运维网.com/wyfs02/M01/82/C2/wKiom1dgBSuDKcpIAAA6rbXUPak762.png
http://s5.运维网.com/wyfs02/M02/82/C0/wKioL1dgBj7TynFsAAA1SMVh4_Q294.png
  

  如果要做会话粘性,可在nginx上在upstream配置段添加一条指令即可:
upstream websrvs {
server 172.18.11.111:80 weight=1;
server 172.18.11.112:80 weight=2;
ip_hash;

}
说明:ip_hash是基于源ip做会话绑定的。
  

  浏览器测试,输入http://172.18.11.113/testapp/index.jsp
  多次刷新后,会绑定在一个源ip上。
  

  httpd还可使用ajp协议进行反代tomcat,这样的好处是避免用户请使用求跨过httpd来访问tomcat,因为如果使用http协议反代,则有可能会用户直接访问后端的tomcat而跨过了httpd。
  其配置也非常简单,根据以上配置稍作修改即可:
  

  只需修改node1和node2上的配置文件:
  ]# vim /etc/httpd/conf.d/proxy_http_tomcat.conf
http://s4.运维网.com/wyfs02/M01/82/C0/wKioL1dgCRyjTb_HAABR88kO03M525.png
  其它都不变。
  查看httpd已加载的模块:
http://s4.运维网.com/wyfs02/M01/82/C2/wKiom1dgCGDwRIFBAAAqqv2jOws219.png
  以上过程就是简单实现nginx作为反代负载均衡至后端tomcat服务器的配置实验。
  

  




页: [1]
查看完整版本: nginx做前端反代负载均衡,后端httpd+tomcat