Nginx简介

Nginx是一种服务器软件,也是一种高性能的http和反向代理服务器,同时还是一个代理邮件服务器。也就是说,我们在Nginx上可以发布网站,可以实现负载均衡(提高应答效率,避免服务器崩溃),还可以作为邮件服务器实现收发邮件等功能。而最常见的就是使用Nginx实现负载均衡。

Nginx与其他服务器的性能比较

Tomcat服务器面向Java语言,是重量级的服务器,而Nginx是轻量级的服务器。Apache服务器稳定、开源、跨平台,但是Apache服务器不支持高并发,Nginx能支持处理百万级的TCP连接,10万以上的并发连接,并且是一个很好的跨平台服务器。
Nginx主要优点有可以实现高并发、部署简单、内存消耗少、成本低等,主要
缺点有rewrite功能不够强大,模块没有Apache的多。

注:本篇主要讲解 Nginx + Tomcat 反向代理和负载均衡的部署,以通俗实用为主。

Nginx反向代理架构图

Centos7搭建nginx+tomcat负载均衡_第1张图片

Nginx+tomcat负载均衡架构

Centos7搭建nginx+tomcat负载均衡_第2张图片

注:有的童鞋会问?看起来和nginx反向代理架构一样啊,问的好!之所以称作反向代理负载均衡,就是因为负载均衡是通过反向代理的原理实现的,所以不管是部署反向代理还是负载均衡,相对部署难度降低很多!

实验环境

系统版本:centos7x3.10.0-514.el7.x86_64

Nginx版本:nginx-1.14.0

Tomcat版本:apache-tomcat-9.0.12

Jdk版本:java-1.8.0-openjdk-devel(yum安装即可)

关闭防火墙并禁止开机自启

systemctl stop firewalld.service
systemctl disable firewalld

关闭selinux

sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux

重启 reboot

搭建nginx服务器

IP:192.168.152.170

1、安装依赖包

yum -y install gcc gcc-c++ pcre pcre-devel zlib zlib-devel

2、下载nginx压缩包到服务器

wget https://nginx.org/download/nginx-1.14.0.tar.gz

3、安装nginx

1)解压nginx压缩包

tar zxf nginx-1.14.0.tar.gz

2)进入解压目录

cd nginx-1.14.0

3)配置nginx

./configure
Centos7搭建nginx+tomcat负载均衡_第3张图片

4)编译安装nginx

make && make install
Centos7搭建nginx+tomcat负载均衡_第4张图片

5)编写nginx启动脚本

vi /etc/init.d/nginx

#! /bin/bash
#chkconfig: - 85 15
PATH=/usr/local/nginx
NAME=nginx
DAEMON=$PATH/sbin/$NAME
CONFIGFILE=$PATH/conf/$NAME.conf
PIDFILE=$PATH/logs/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME
set -e
[ -x "$DAEMON" ] || exit 0
do_start() {
$DAEMON -c $CONFIGFILE || echo -e "\033[32m nginx already running \033[0m"
}
do_stop() {
$DAEMON -s stop || echo -e "\033[31m nginx not running \033[0m"
}
do_reload() {
$DAEMON -s reload || echo -e "\033[31m nginx can't reload \033[0m"
}
case "$1" in
start)
echo -e "\033[32m $NAME running \033[0m"
do_start
;;
stop)
echo -e "\033[31m $NAME stoping \033[0m"
do_stop
;;
reload|graceful)
echo -e "\033[32m $NAME configuration...\033[0m"
do_reload
;;
restart)
echo -e "\033[32m Restarting : $NAME \033[0m"
do_stop
do_start
;;
*)
echo "Usage: $SCRIPTNAME {start|stop|reload|restart}" >&2
exit 3
;;
esac
exit 0

6)给予启动脚本执行权限

chmod +x /etc/init.d/nginx

7)启动nginx服务

//设置开机自启

chkconfig nginx on

//启动nginx

/etc/init.d/nginx start

//重启nginx

/etc/init.d/nginx restart

//查看nginx服务启动状态

chkconfig --list

//查看nginx服务是否开启

netstat -antupl | grep nginx

4、编辑nginx配置文件

1)备份原nginx配置文件

cp /usr/local/nginx/conf/nginx.conf /usr/local/nginx/conf/nginx.conf.backup

2)修改配置文件

vi /usr/local/nginx/conf/nginx.conf
Centos7搭建nginx+tomcat负载均衡_第5张图片
Centos7搭建nginx+tomcat负载均衡_第6张图片
注:自己修改编辑的配置文件!

#设置低权限用户,为了安全而设置的
user nobody;

#工作衍生进程数一般不大于cpu核数
worker_processes 2;

#设置错误文件存放路径
error_log logs/error.log;
error_log logs/error.log notice;
error_log logs/error.log info;

#设置pid存放路径(pid是控制系统中重要文件)
pid logs/nginx.pid;

#设置最大连接数
events{
worker_connections 1024;
}

http{

#主要是用于设置一组可以在proxy_pass和fastcgi_pass指令中使用额代理服务器,默认负载均衡方式为轮询
upstream tomcat {
#设置同一个cookie的两次/多次请求,请求的是同一台服务器
ip_hash;

    #weight权重,默认1,权重越大访问概率越大,backup备用服务器,服务器全部崩溃后启动   
    server 192.168.152.168:8080 weight=5; 
    server 192.168.152.169:8080 weight=5; 
    #server localhost:8080 weight=5 backup;
} 

#开启gzip压缩,开启后,访问网页会自动压缩     
gzip on; 

#指定服务器的名称和参数     
server { 
    listen 80;   
    server_name  localhost; 

    #设置字符         
    #charset koi8-r; 

    #location / 指用根目录做负载均衡         
    location / { 
        proxy_pass http://tomcat;   
        proxy_redirect default; 
        #设置代理 
        proxy_set_header Host $host;       
        proxy_set_header X-Real-IP $remote_addr; 
    } 
} 

}

搭建tomcat-1节点

IP:192.168.152.168

1、安装依赖包

yum -y install java java-1.8.0-openjdk-devel

2、查看jdk是否安装及版本号

java -version
Centos7搭建nginx+tomcat负载均衡

3、下载tomcat到服务器

wget http://mirrors.hust.edu.cn/apache/tomcat/tomcat-9/v9.0.12/bin/apache-tomcat-9.0.12.tar.gz

4、配置tomcat

1)解压tomcat

tar zxf apache-tomcat-9.0.12.tar.gz

2)将解压目录该名并移动到/usr/local/下

mv apache-tomcat-9.0.12 /usr/local/tomcat

5、设置jdk的环境变量

1)修改全局环境变量文件

vi /etc/profile

export JAVA_HOME='/usr/lib/jvm/jre'
export CATALINA_HOME='/usr/local/tomcat'
注:将以上这两行追加在最后即可!

2)查看配置的环境变量

tail -n2 /etc/profile
Centos7搭建nginx+tomcat负载均衡

3)执行生效

source /etc/profile

6、启动tomcat服务

1)启动tomcat

/usr/local/tomcat/bin/startup.sh

2)关闭tomcat

/usr/local/tomcat/bin/shutdown.sh

搭建tomcat-2节点

IP:192.168.152.169

1、安装依赖包

yum -y install java java-1.8.0-openjdk-devel

2、查看jdk是否安装及版本号

java -version
Centos7搭建nginx+tomcat负载均衡

3、下载tomcat到服务器

wget http://mirrors.hust.edu.cn/apache/tomcat/tomcat-9/v9.0.12/bin/apache-tomcat-9.0.12.tar.gz

4、配置tomcat

1)解压tomcat

tar zxf apache-tomcat-9.0.12.tar.gz

2)将解压目录该名并移动到/usr/local/下

mv apache-tomcat-9.0.12 /usr/local/tomcat

5、设置jdk的环境变量

1)修改全局环境变量文件

vi /etc/profile

export JAVA_HOME='/usr/lib/jvm/jre'
export CATALINA_HOME='/usr/local/tomcat'
注:将以上这两行追加在最后即可!

2)查看配置的环境变量

tail -n2 /etc/profile
Centos7搭建nginx+tomcat负载均衡

3)执行生效

source /etc/profile

6、启动tomcat服务

1)启动tomcat

/usr/local/tomcat/bin/startup.sh

2)关闭tomcat

/usr/local/tomcat/bin/shutdown.sh

访问测试

1、访问后端web时需要连接的是nginx代理IP

2、后端任意一个tomcat宕机,都能自动跳到另一个tomcat上工作

注:满足以上两个条件,测试即为成功!这里我就不做测试实验了,简单给大家说一下即可,将后端的其中一台tomcat关掉,继续访问如果能看到tomcat,基本搭建成功,若是不放心,就反过来在将另一台关闭,然后在访问,如果还是能看到tomcat,那说明搭建成功!