前言

  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. Android-打包AAR步骤以及最为关键的注意事项!

    ### 简介 最近因为项目的要求,需要把开发的模块打包成aar,供其他项目调用,在搞了一段时间后,发现这里还是有很多需要注意的地方,所以记录一下,帮助大家不要走弯路. **首先何为aar包?** ![ ...

  2. PyCharm 安装常用设置

    一.Pycharm (一).安装 1.在百度找到PyCharm官网,http://www.jetbrains.com 2.下载 3.选择版本(根据自己的喜好选择,我这里选的是其他版本,2017年3月专 ...

  3. springboot统一ajax返回数据格式,并且jquery ajax success函数修改

    服务端代码: package com.zhqn.sc.cfg; import org.springframework.core.MethodParameter; import org.springfr ...

  4. Linux 中 /proc/meminfo 的含义

    做嵌入式开发对内存泄露很敏感,而对泄露的位置更加关注.本文记录一下从网上搜集的/proc/meminfo各参数的含义.还不完整,待补完. 本文地址:https://segmentfault.com/a ...

  5. Elasticsearch示例

    /** * @author: yqq * @date: 2019/2/28 * @description: */ public class TestMain { private static Rest ...

  6. .Net基础篇_学习笔记_第六天_for循环语法_正序输出和倒序输出

    for TAB  和 forr TAB using System; using System.Collections.Generic; using System.Linq; using System. ...

  7. Redis的复制(Master/Slave)、主从复制、读写分离 (下)

    哨兵模式(就是反客为主的自动版) 能够自动监控主机是否故障,如果故障了根据投票数自动将从机变成主机 1创建哨兵文件 touch sentinel.conf [root@localhost myredi ...

  8. spring mvc Response header content type

    Xml代码 <bean class ="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAd ...

  9. 装系统------- 了解常用的启动方式以及如何进入bios

    1.从硬盘启动:这种方式提供了最简单的维护解决方案,其基本原理就是增加一个系统的开机启动项,每次开机的时候您都可以选择是进入本地系统还是进入PE. 安装程序并不将PE的启动项作为默认启动项,而是提供一 ...

  10. 001:photoshop教程

    1:添加辅助线:有个位移的坐标系图标:点击标志中,鼠标按着不动.之后拖动到对应的位置. 2:量距离:第一行.第二个图标.直接测量像素. 3:切割图片: 3.1:第三行.第一列:选择切片工具 3.2:之 ...