前言

  nginx是一个高性能的HTTP和反向代理的服务器。它有三个最基本的功能,一是当做web服务器、二是作为反向代理服务器、三是提供负载均衡(在反向代理基础上),由于它占有内存小,并发能力强,所以在同类型的服务器中脱颖而出,淘宝,腾讯,百度等国内巨头互联网公司也常用nginx。文将与大家分享一下nginx应用在tomcat上的负载均衡实例。

一、运行环境

  ubuntu服务器一台

  nginx-1.9.15

  apache-tomcat-9.0.0(两个,由于只创建了一个ubuntu服务器,所以通过更改端口来模拟负载均衡场景)

二、ubuntu下安装nginx

1、安装openssl

  openssl是一个强大的套接字层密码库,常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序测试或其他目的使用

  nginx不仅支持http协议,还支持https(即在ssl协议上传输http),所以需要在linux安装openssl库

命令:sudo apt-get install openssl

2、安装PCRE

  PCRE是一个perl库,包括perl兼容的正则表达式库。nginx的http模块使用pcre来解析正则表达式,所以需要在linux上安装pcre库

命令:sudo apt-get install libcre3 libpcre3-dev

3、安装zlib

  zlib库提供了很多压缩和解压缩的方式,nginx使用zlib对http包的内容进行gzip,所以需要在linux上安装zlib库

4、下载nginx-1.9.15.tar.gz

  我的百度云连接

  https://pan.baidu.com/s/1GeQSIF1QL5UiZt_kyCikPw

  之后用XFftp工具将文件上传到ubuntu上

  执行命令

  tar -zxvf nginx-1.9.15.tar.gz

5、进行configure

  cd到nginx的根目录执行

./configure \
--prefix=/usr/local/nginx \
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/temp/nginx/client \
--http-proxy-temp-path=/var/temp/nginx/proxy \
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
--http-scgi-temp-path=/var/temp/nginx/scgi

6、make编译

  命令:make

7、make install安装

  命令:make install

三、nginx的启动与关闭

  启动:进入nginx的sbin目录,执行./nginx

  关闭:./nginx -s stop

  刷新配置:./nginx -s reload

  启动成功之后,浏览器输入localhost出现

  

四、配置Tomcat的server.xml(修改端口)

  Tomcat91修改端口为8081

    <Server port="" shutdown="SHUTDOWN">
<Connector port="" protocol="HTTP/1.1"
connectionTimeout=""
redirectPort="" />
<Connector port="" protocol="AJP/1.3" redirectPort="" />

  Tomcat92修改端口为8082

    <Server port="" shutdown="SHUTDOWN">
<Connector port="" protocol="HTTP/1.1"
connectionTimeout=""
redirectPort="" />
<Connector port="" protocol="AJP/1.3" redirectPort="" />

  继续修改一下tomcat/webapps/ROOT的index.jsp,目的是为了区别两个tomcat的启动首页

五、配置nginx的nginx

upstream stonegeek.com{ #服务器集群名字
server 127.0.0.1: weight=; #集群的服务器列表,最终请求都会转发到这里执行
server 127.0.0.1: weight=; #weight是权重的意思,权重越大,分配的概率越大
}
server {
listen ; #默认监听80端口,可以改成其他端口
server_name localhost; #当前服务器的域名 #charset koi8-r; #access_log logs/host.access.log main; location / {
#root html;
#index index.html index.htm;
proxy_pass http://stonegeek.com; #要与服务器集群名字相同,如果请求为localhost:80,则交给名称为stonegeek.com的nginx集群来处理
 proxy_redirect default; }

  至此,nginx的负载均衡配置完毕

六、演示负载均衡

  刷新nginx配置:进入nginx的sbin目录 执行./nginx -s reload

  启动两个tomcat:分别进入tomcat的bin目录 执行./startup.sh

  浏览器输入http://192.168.43.230/index.jsp(192.168.43.230是我安装的ubuntu虚拟机的IP地址)

  结果展示

  

  刷新一次

  

  

七、nginx的五种负载均衡算法

 1、轮询(默认)

  每个请求按时间顺序逐一分配到不同的后端服务,如果后端某台服务器死机,自动剔除故障系统, 使用户访问不受影响。

 2、 weight

  weight的值越大分配到的访问概率越高,主要用于后端每台服务器性能不均衡的情况下。或者仅仅为在主从的情况下设置不同的权值,达到合理有效地利用主机资源。

upstream bakend {
server 192.168.0.14 weight=;
server 192.168.0.15 weight=;
}

 3、ip_hash

  每个请求按访问IP的哈希结果分配,使来自同一个IP的访客固定访问一台后端服务器,并且可以有效解决动态网页存在的session共享问题

upstream bakend {
ip_hash;
server 192.168.0.14:;
server 192.168.0.15:;
}

 4、url_hash(第三方)

  按访问的URL的哈希结果来分配请求,使每个URL定向到一台后端服务器,可以进一步提高后端缓存服务器的效率。Nginx本身不支持url_hash。如果需要这种调度算法,则需要安装Nginx的hash软件包

upstream backend {
server squid1:;
server squid2:;
hash $request_uri;
hash_method crc32;
}

 5、fair

  比weight、ip_hash更加智能的负载均衡算法,fair算法可以根据页面大小和加载时间长短智能地进行负载均衡,也就是根据后端服务器的响应时间来分配请求,响应时间短的优先分配。Nginx本身不支持fair,如果需要这种调度算法,则必须安装upstream-fair模块

upstream backend {
server server1;
server server2;
fair;
}

八、总结

  至此,利用nginx的反向代理来实现负载均衡的实现就已经完成了,这是基于tomcat服务器的负载均衡,因为仅仅创建了一台服务器所以通过修改端口来模拟两台服务器的效果,还可以配置其他的,比如说apache web服务器。所以nginx作为一款自由的、开源的、高性能的HTTP服务器和反向代理服务器是非常受广大开发人员青睐的,简单、高效!

  此篇文章只是介绍nginx利用反向代理实现负载均衡的简单例子,后续文章我会继续更新更多关于nginx的配置介绍,敬请期待!

nginx的负载均衡实战的更多相关文章

  1. nginx:负载均衡实战(二) keepalived入门

    1.keepalived介绍 顾名思义,keepalived就是保持网络在线的,用来保证集群高可用HA的服务软件.主要防止出现单点故障(坏了一个点导致整个系统架构不可用) 2.详解keepalived ...

  2. nginx:负载均衡实战(四)nginx+keepalived配置双机热备

    1.下载安装 下载keepalived地址:http://www.keepalived.org/download.html 解压安装: tar -zxvf keepalived-.tar.gz 安装o ...

  3. 14、Nginx四层负载均衡

    1.Nginx四层负载均衡基本概述 1.1.什么是四层负载均衡 四层负载均衡基于传输层协议包来封装的(如:TCP/IP),那我们前面使用到的七层是指的应用层,它的组装在四层基础之上,无论四层还是七层都 ...

  4. nginx实现负载均衡、缓存功能实战

    nginx实现负载均衡.缓存功能实战 什么是正向代理?应用场景:翻墙 什么是反向代理?例如:haproxy和nginx   Nginx实现反向代理 nginx代理基于是ngx_http_proxy_m ...

  5. Nginx网络架构实战学习笔记(三):nginx gzip压缩提升网站速度、expires缓存提升网站负载、反向代理实现nginx+apache动静分离、nginx实现负载均衡

    文章目录 nginx gzip压缩提升网站速度 expires缓存提升网站负载 反向代理实现nginx+apache动静分离 nginx实现负载均衡 nginx gzip压缩提升网站速度 网页内容的压 ...

  6. centos7使用haproxy1.7.5实现反向代理负载均衡实战

    使用haproxy实现反向代理负载均衡实战环境准备:两台虚拟机 # yum install -y gcc glibc gcc-c++ make screen tree lrzsz node1源码编译安 ...

  7. 死磕nginx系列--使用nginx做负载均衡

    使用nginx做负载均衡的两大模块: upstream 定义负载节点池. location 模块 进行URL匹配. proxy模块 发送请求给upstream定义的节点池. upstream模块解读 ...

  8. nginx+tomcat负载均衡

    最近练习nginx+tomcat负载均衡.根据一些资料整理了大体思路,最终实现了1个nginx+2个tomcat负载均衡. 安装JDK 1>进入安装目录,给所有用户添加可执行的权限 #chmod ...

  9. 使用Nginx实现负载均衡

    使用Nginx实现负载均衡 一.nginx简介 nginx是一个高性能的HTTP服务器和反向代理服务器.它起初是俄罗斯人Igor Sysoev开发的,至今支撑者俄罗斯的很多大型的网站. 二.nginx ...

随机推荐

  1. mybatis转义

    SELECT * FROM test WHERE 1 = 1 AND start_date <= CURRENT_DATE AND end_date >= CURRENT_DATE 在执行 ...

  2. thinkphp5.1导出excel文件第三方类库运用

    若没安装请到:链接地址 https://www.phpcomposer.com/这里安装 composer 安装过的,cmd切换到项目根目录运行:composer require phpoffice/ ...

  3. @classmethod @staticmethod 个人理解

    官方解释 @classmethod 一个类方法把类自己作为第一个实参, 就像一个实例方法把实例自己作为第一个实参. 语法格式: class C: @classmethod def f(cls, arg ...

  4. 实践APP安全性检测(一):APK反编译

    1.概述 APP安全性一般可以从以下几方面进行考量: 以及其他一些杂项(或者通用并不局限于APP的安全项): 本文讨论反编译问题. 2.APK反编译 安卓开发的APP,如果不做任何处理是很容易被反编译 ...

  5. Hadoop入门 之 Hadoop常识

    1.Hadoop是什么? 答:Hadoop是开源的分布式存储和分布式计算平台. 2.Hadoop的组成是什么? 答:Hadoop由HDFS和MapReduce这两个核心部分组成. HDFS(Hadoo ...

  6. JavaScript之深入对象(二)

    上一篇随笔讲解了构造函数.原型及原型链相关的知识,今天让我们一起来探讨另一个问题:this. 一     this 的指向 1,  函数预编译过程中,this指向window 我们在讲解函数预编译过程 ...

  7. 搭建第一个node服务器

    1.在项目文件夹根目录创建app.js: (1)先引入模块 const http = require('http');//http是安装好node就有的一个模块,是用来创建http服务器的 (2)创建 ...

  8. java Mail如何发送邮件

    1.应用场景:在系统需要发送与用户相关的消息时,而用户不在线,可以采取发送邮件的方式,使用户了解最新的系统情况 或者发送验证码等验证场景 2.实验环境 主要使用mail.jar和activation. ...

  9. Python 爬虫监控女神的QQ空间新的说说,实现秒赞,并发送说说内容到你的邮箱

    这个文章主要是在前一篇文章上新增了说说秒赞的功能 前一篇文章可以了解一下 那么,这次主要功能就是 监控女神的 QQ空间,一旦女神发布新的说说,马上点赞,你的邮箱马上就会收到说说内容,是不是想了解一下 ...

  10. Spring boot 梳理 - @Conditional

    @Conditional(TestCondition.class) 这句代码可以标注在类上面,表示该类下面的所有@Bean都会启用配置,也可以标注在方法上面,只是对该方法启用配置. spring框架还 ...