Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。在Java的Web架构中,通常使用Tomcat和Nginx进行配合,Nginx作为反向代理服务器,可以对后台的Tomcat服务器负载均衡,也可以让Nginx处理静态页面的请求、Tomcat处理JSP页面请求达到动静分离的目的。
upstream模块能够使用3中负载均衡:轮询(rr),IP哈希(ip_hash)和最少连接数(LC),在默认情况下使用轮询算法,它不需要配置指令来激活。该算法选择下一个服务器,基于先前选择,在配置文件中哪一个是下一个服务器,以及每一个服务器的负载权重。轮询算法是基于在队列中谁是下一个的原理来确保将访问量均匀地分配给每一个上游服务器的。IP哈希算法通过ip_hash指令激活使用,从而将某些IP地址映射到同一个上游服务器。Nginx通过IPv4地址的前3个字节或者整个IPv6地址作为哈希键来实现。同一个IP地址池地址总是被映射到同一个上游服务器,所以,该机制的目的不是要确保公平分配给每一台上游服务器,而是在客户端和上游服务器之间实现一致映射。在上游服务器中,这个本地跟踪用户会话的情况下非常有用。最少连接数(LC)使用least_conn指令启用,该算法目的是通过选择一个活跃的最少连接数的服务器,然后将请求负载均衡分配给上游服务器。如果上游服务器的处理器能力不相同,那可以为server指令使用weight参数来设置权重,该算法将考虑到不同服务器的加权最少连接数。
主机 | 操作系统 | IP地址 | 软件包 |
---|---|---|---|
Nginx服务器 | CentOS 7.0 x86_64 | 192.168.100.25 | nginx-1.6.0.tar.gz |
Tomcat服务器1 | CentOS 7.0 x86_64 | 192.168.100.26:8080 | jdk-10.0.1_linux-x64_bin.rpm/apache-tomcat-8.5.11.tar.gz |
Tomcat服务器2 | CentOS 7.0 x86_64 | 192.168.100.27:8080 | jdk-10.0.1_linux-x64_bin.rpm/apache-tomcat-8.5.11.tar.gz |
软件包_百度下载 密码:6b7e
#安装jdk软件包
rpm -ivh jdk-10.0.1_linux-x64_bin.rpm
#添加jdk的环境变量,新建java.sh并写入以下内容
vim /etc/profile.d/java.sh
export JAVA_HOME=/usr/java/jdk-10.0.1
export PATH=$JAVA_HOME/bin:$PATH
#加载环境变量
source /etc/profile.d/java.sh
java -version
如下图表示jdk已经安装成功了
#解压缩软件包
tar zxvf apache-tomcat-8.5.11.tar.gz
#移动tomcat目录
mv apache-tomcat-8.5.11 /usr/local/tomcat8
#启动服务
/usr/local/tomcat8/bin/startup.sh
netstat -tunlp | grep 8080
mkdir -p /web/webapp
vim /web/webapp/index.jsp
#以为下index.jsp内容
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" %>
hello
<% out.println("This is tomcat 1 web.
"); %>
vim /usr/local/tomcat8/conf/server.xml
> #在标签内,新增第二行记录
#关闭服务
/usr/local/tomcat8/bin/shutdown.sh
#开启服务
/usr/local/tomcat8/bin/startup.sh
#关闭安全设置
setenforce 0
#关闭防火墙
systemctl stop firewalld.service
Tomcat服务器1 和 Tomcat服务器2 安装及配置等一样,只是测试网页内容有差异,具体网页内容显示如下图
Tomcat服务器1:
Tomcat服务器2:
yum -y install pcre-devel zlib-devel gcc gcc-c++ make
useradd -M -s /sbin/nologin nginx
tar xzvf nginx-1.6.0.tar.gz -C /opt
cd /opt/nginx-1.6.0/
./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module //开启stub_status状态统计模块//
make && make install
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
vi /etc/init.d/nginx
> #!/bin/bash
#chkconfig: - 99 20
#description: Nginx Service Control Script
PROG="/usr/local/nginx/sbin/nginx"
PIDF="/usr/local/nginx/logs/nginx.pid"
case "$1" in
start)
$PROG
;;
stop)
kill -s QUIT $(cat $PIDF)
;;
restart)
$0 stop
$0 start
;;
reload)
kill -s HUP $(cat $PIDF)
;;
*)
echo "Usage: $0 {start|stop|restart|reload}"
exit 1
esac
exit 0
chmod +x /etc/init.d/nginx
chkconfig --add nginx
vim /usr/local/nginx/conf/nginx.conf
#http{}标签内添加以下命令
upstream tomcat_server {
ip_hash; //轮询方式为ip_hash实现session问题
server 192.168.100.6:8080;
server 192.168.100.7:8080;
}
#在location / {}标签内添加
location / {
root html;
index index.html index.htm;
proxy_pass http://tomcat_server; #通过proxy_pass方法进行代理至tomcat_server的服务器组,其中http://不能省略
}
nginx -t
killall -1 nginx
#关闭selinux
setenforce 0
#关闭防火墙
systemctl stop firewalld.service
客户机访问Nginx服务器IP地址:http://192.168.100.25/,通过不断的刷新浏览器测试,可以看到哦由于权重相同,页面在两个tomcat站点反复切换,这样说明负载均衡集群搭建成功了。