逐步把Nginx及Redis引入项目组之负载均衡技术调研初版总结
本篇以一个Nginx服务、两个Tomcat服务、一个Redis搭建一个负载均衡环境,由于就一台电脑暂以随机分配client请求策略开展,详细工作中推荐以IP地址来实现client请求的动态负载策略。省局IP段发过来的请求单独一个Tomcat应对,其余全部分局IP段发来的请求通过有另外一个单独的Tomcat应付。
素材1:一个Redis节点,用来存储Seesion(跨进程共享)及缓存静态常量。
素材2:两个同一时候执行的Tomcat服务,每一个上面执行着一个简单的小程序;
素材3:一个Nginx,通过随机分配的策略分流client发来的请求。
第一步:Redis环境搭建及測试数据准备
Windows环境下主要是找到相应的版本号,眼下官网是不支持Windows的。能够从微软维护的版本号中下载地址为:下载Redis,假设喜欢用可视化的查看工具能够下载RedisDesktopManager工具下载地址为:下载RedisDesktopManager。
由于配置Redis及RedisDesktopManager的使用比較简单,这个不花篇幅再细述。
第二步:准备一个小java程序公布到两个Tomcat上
同一台server(电脑)部署两套及以上的Tomcat的方法參见:同一台server(电脑)执行多个Tomcat的设置方法。本个演示样例程序不过只在Redis中存储了一个字符串变量。測试程序主要代码例如以下:
@Override
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request,response);
}
public String getValueByRedisKey(String keyName) {
//创建一个Jedis的连接
Jedis jedis = new Jedis("127.0.0.1", 6379);
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式
//从redis中取值
String result = jedis.get(keyName);
//执行redis命令
jedis.set(keyName, "I am a programmer at:"+df.format(new Date()));
//关闭连接
jedis.close();
return result;
}
@Override
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String valueInCache= getValueByRedisKey("keylu");
// 设置响应内容类型
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
String title = "Redis測试页面A";
String docType = "<!DOCTYPE html> \n";
out.println(docType +
"<html>\n" +
"<head><title>" + title + "</title></head>\n" +
"<body bgcolor=\"#f0f0f0\">\n" +
"<h1 align=\"center\">" + title + "</h1>\n" +
"<ul>\n" +
" <li><b>RedisItemKey: keylu</b>"
+ "\n" +
" <li><b>Value: </b>"
+ valueInCache + "\n" +
"</ul>\n" +
"</body></html>");
}
下一步的技术调研就是把session存储进Redis,希望下一篇总结会在下周末前处理完毕。
第三步:构建Nginx
对Nginx不太熟悉的能够參考例如以下两篇文章大体了解下:初识Nginx及Nginx反向代理配置。终于的执行效果例如以下:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYW5kZXJzbHU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="这里写图片描写叙述" title="">
Nginx的主要配置项为:
补充1:Nginx经常使用指令:
- D:\tools\nginx-1.3.2>tasklist /fi "imagename eq nginx.exe" 查看任务管理器内nginx.exe的执行信息
-”start nginx” start
- "nginx -s stop" quick exit
- "nginx -s quit" graceful quit
- "nginx -s reload" changing configuration, starting a new worker, quitting an
old worker gracefully
-"nginx -s reopen" reopening log files
补充2:Nginx负载均衡的几种类型
nginx中的upstream支持以下几种方式:轮询(默认,依照时间顺序对全部server一个一个的訪问,假设有server宕机,会自己主动剔除)、weight(server的方位几率和weight成正比,这个能够在server配置不均的时候进行配置)、ip_hash(对每一个请求的ip进行hash计算,并依照一定的规则分配相应的server)、fair(依照每台server的响应时间(rt)来分配请求,rt晓得优先分配)、url_hash(依照訪问url的hash值来分配请求)
1、轮询(默认)
每一个请求按时间顺序逐一分配到不同的后端server。假设后端serverdown掉,能自己主动剔除。
upstream backserver {
server 192.168.0.14;
server 192.168.0.15;
}
2、weight
指定轮询几率。weight和訪问比率成正比。用于后端server性能不均的情况。
比如:
upstream bakend {
server 192.168.159.10 weight=10;
server 192.168.159.11 weight=10;
}
3、ip_hash
每一个请求按訪问ip的hash结果分配。这样每一个訪客固定訪问一个后端server。能够解决session的问题。
比如:
upstream resinserver{
ip_hash;
server 192.168.159.10:8080;
server 192.168.159.11:8080;
}
逐步把Nginx及Redis引入项目组之负载均衡技术调研初版总结的更多相关文章
- LVS + keepalived + nginx + tomcat 实现主从热备 + 负载均衡
前言 首先声明下,由于这两天找资料,看了不少博客 ,但是出于不细心,参考者的博客地址没有记录下来,所有文中要是出现了与大家博客相同的地方,那么请大家在评论区说明并附上博客地址,我好引用进来:这里表示抱 ...
- Nginx + Memcached 实现Session共享的负载均衡
session共享 我们在做站点的试试,通常需要保存用户的一些基本信息,比如登录就会用到Session:当使用Nginx做负载均衡的时候,用户浏览站点的时候会被分配到不同的服务器上,此时如果登录后Se ...
- 用Nginx搭建IIS集群实现负载均衡
长话短说,我们用Nginx来搭建一个简单的集群,实现Web应用的负载均衡,架构图如下: 两台Web服务器,一台静态资源服务器,因为是演示,我们以网站形式部署在本机IIS中 一台Nginx代理服务器,安 ...
- nginx Win下实现简单的负载均衡(2)站点共享Session
快速目录: 一.nginx Win下实现简单的负载均衡(1)nginx搭建部署 二.nginx Win下实现简单的负载均衡(2)站点共享Session 三.nginx Win下实现简单的负载均衡(3) ...
- nginx Win下实现简单的负载均衡(1)nginx搭建部署
快速目录: 一.nginx Win下实现简单的负载均衡(1)nginx搭建部署 二.nginx Win下实现简单的负载均衡(2)站点共享Session 三.nginx Win下实现简单的负载均衡(3) ...
- Nginx代理与反向代理、负载均衡实
通过 Nginx 提供的反向代理和负载均衡功能,可以合理的完成业务的分配,提高网站的处理能力:同时利用缓存功能,还可以将不需要实时更新的动态页面输出结果,转化为静态网页形成缓存,从而提高网站的响应速度 ...
- Nginx代理与反向代理、负载均衡实践
通过 Nginx 提供的反向代理和负载均衡功能,可以合理的完成业务的分配,提高网站的处理能力;同时利用缓存功能,还可以将不需要实时更新的动态页面输出结果,转化为静态网页形成缓存,从而提高网站的响应速度 ...
- 在Linux上使用Nginx为Solr集群做负载均衡
在Linux上使用Nginx为Solr集群做负载均衡 在Linux上搭建solr集群时需要用到负载均衡,但测试环境下没有F5 Big-IP负载均衡交换机可以用,于是先后试了weblogic的proxy ...
- nginx作反向代理,实现负载均衡
nginx作反向代理,实现负载均衡按正常的方法安装好 ngixn,方法可参考http://www.cnblogs.com/lin3615/p/4376224.html其中作了反向代理的服务器的配置如下 ...
随机推荐
- 团队作业-Beta冲刺(1)
这个作业属于哪个课程 https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass2 这个作业要求在哪里 https://edu.cnblo ...
- SPOJ 3899. Finding Fractions 连分数
连分数乱搞,我反正是一眼没看出结果 某巨巨把这题讲解的比较详细 : http://blog.csdn.net/gogdizzy/article/details/8727386 令k = [a/b] 然 ...
- vue.js提交按钮时简单的if判断表达式示例
简单的业务需求如下,看图说话 1:当充值金额没有填写的时候,会有Toast小弹框提示"请输入有效的充值金额" if (!this.money) { console.log('mon ...
- jsp+tomcat+ 创建project 配置project
*如今我们已经下载到了 tomcat 7.0+ eclipse for java ee 直接解压,打开eclipse. 接下来是步骤: eclipse 打开的界面.空空如也 ! ..* 点击 file ...
- 89.hash算法实现CSDN密码处理
初始化,数据的行数,hash链表结构体,存储头结点 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdl ...
- Python 极简教程(十)集合 set
什么是集合? 集合(set)是一种可变,无序和不重复的序列. 集合是python的序列之一,集合没有列表(list).元组(tuple)和字典(ditc)常见.但是有时候也有奇效. 我们先来看个集合的 ...
- 理解spring对事务的处理:传播性
所谓事务传播行为就是多个事务方法相互调用时,事务如何在这些方法间传播.Spring 支持 7 种事务传播行为: PROPAGATION_REQUIRED 如果当前没有事务,就新建一个事务,如果已经存在 ...
- C# mongodb帮助类
这是在C#连接MongoDB的帮助类,所使用的驱动是在Vs2015的Nuget管理器中下载的mongodb驱动. 下载第一个,会自动下载下面的两个,不要删除. 在配置文件中配置连接字符串connStr ...
- POJ2029:Get Many Persimmon Trees(二维树状数组)
Description Seiji Hayashi had been a professor of the Nisshinkan Samurai School in the domain of Aiz ...
- vue给对象新添加属性,一定要使用Vue.set( target, key, value )这个API来添加
this.tagList = [{ id:1, tagName:'90后' }, { id:2, tagName:'土豪' }, { id:3, tagName:'美女' }, { id:4, tag ...