实验内容:用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链接器;
在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;
index index.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
]# vim /etc/tomcat/server.xml
在Engine配置段添加:
<Context path="/test" docBase="testapp"/>
]# 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
]# 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
因为node1和node2都是httpd本地反代tomcat,所有配置文件完全一样;
本次使用proxy_http_module反代模块基于http协议与tomcat通信:
]# httpd -M
]# systemctl start httpd
浏览器测试,输入http://172.18.11.113/testapp/index.jsp
多次刷新后,实现负载均衡且比例为1:2,实现了前端nginx反代后端tomcat。
如果要做会话粘性,可在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
其它都不变。
查看httpd已加载的模块:
以上过程就是简单实现nginx作为反代负载均衡至后端tomcat服务器的配置实验。