本篇以一个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不太熟悉的能够參考例如以下两篇文章大体了解下:初识NginxNginx反向代理配置。终于的执行效果例如以下:

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引入项目组之负载均衡技术调研初版总结的更多相关文章

  1. LVS + keepalived + nginx + tomcat 实现主从热备 + 负载均衡

    前言 首先声明下,由于这两天找资料,看了不少博客 ,但是出于不细心,参考者的博客地址没有记录下来,所有文中要是出现了与大家博客相同的地方,那么请大家在评论区说明并附上博客地址,我好引用进来:这里表示抱 ...

  2. Nginx + Memcached 实现Session共享的负载均衡

    session共享 我们在做站点的试试,通常需要保存用户的一些基本信息,比如登录就会用到Session:当使用Nginx做负载均衡的时候,用户浏览站点的时候会被分配到不同的服务器上,此时如果登录后Se ...

  3. 用Nginx搭建IIS集群实现负载均衡

    长话短说,我们用Nginx来搭建一个简单的集群,实现Web应用的负载均衡,架构图如下: 两台Web服务器,一台静态资源服务器,因为是演示,我们以网站形式部署在本机IIS中 一台Nginx代理服务器,安 ...

  4. nginx Win下实现简单的负载均衡(2)站点共享Session

    快速目录: 一.nginx Win下实现简单的负载均衡(1)nginx搭建部署 二.nginx Win下实现简单的负载均衡(2)站点共享Session 三.nginx Win下实现简单的负载均衡(3) ...

  5. nginx Win下实现简单的负载均衡(1)nginx搭建部署

    快速目录: 一.nginx Win下实现简单的负载均衡(1)nginx搭建部署 二.nginx Win下实现简单的负载均衡(2)站点共享Session 三.nginx Win下实现简单的负载均衡(3) ...

  6. Nginx代理与反向代理、负载均衡实

    通过 Nginx 提供的反向代理和负载均衡功能,可以合理的完成业务的分配,提高网站的处理能力:同时利用缓存功能,还可以将不需要实时更新的动态页面输出结果,转化为静态网页形成缓存,从而提高网站的响应速度 ...

  7. Nginx代理与反向代理、负载均衡实践

    通过 Nginx 提供的反向代理和负载均衡功能,可以合理的完成业务的分配,提高网站的处理能力;同时利用缓存功能,还可以将不需要实时更新的动态页面输出结果,转化为静态网页形成缓存,从而提高网站的响应速度 ...

  8. 在Linux上使用Nginx为Solr集群做负载均衡

    在Linux上使用Nginx为Solr集群做负载均衡 在Linux上搭建solr集群时需要用到负载均衡,但测试环境下没有F5 Big-IP负载均衡交换机可以用,于是先后试了weblogic的proxy ...

  9. nginx作反向代理,实现负载均衡

    nginx作反向代理,实现负载均衡按正常的方法安装好 ngixn,方法可参考http://www.cnblogs.com/lin3615/p/4376224.html其中作了反向代理的服务器的配置如下 ...

随机推荐

  1. Android 基于ijkplayer+Rxjava+Rxandroid+Retrofit2.0+MVP+Material Design的android万能播放器aaa

    MDPlayer万能播放器 MDPlayer,基于ijkplayer+Rxjava+Rxandroid+Retrofit2.0+MVP+Material Design的android万能播放器,可以播 ...

  2. maven仓库快速镜像

    国内连接maven官方的仓库更新依赖库,网速一般很慢,收集一些国内快速的maven仓库镜像以备用. ====================国内OSChina提供的镜像,非常不错=========== ...

  3. servlet、filter、listener继承的基类和获得作用域的方式

    一.servlet: 1.servlet属于j2ee的组件,构建servlet的web project不需要导入项目框架jar包 2.servlet的体系结构:  在j2ee API中,提供给serv ...

  4. hdu4605Magic Ball Game 树状数组

    //给一棵树.树的每个节点的子节点个数是0或2 //对于每个节点都有一个权值w[i] //一个权值为x的球在每个节点的情况有 //x=w[i] 这个球在该点不向下掉 //x<w[i] 这个球往左 ...

  5. 怎样让索引仅仅能被一个SQL使用

    有个徒弟问我,要创建一个索引,去优化一个SQL,可是创建了索引之后其它 SQL 也要用 这个索引,其它SQL慢死了.要优化的SQL又快.遇到这样的问题咋搞? 一般遇到这样的问题还是非常少的.处理的方法 ...

  6. 全球可信并且唯一免费的HTTPS(SSL)证书颁发机构:StartSSL

    全球可信并且唯一免费的HTTPS(SSL)证书颁发机构:StartSSL http://blog.s135.com/startssl/ 购买权威机构的证书一年大概得七八千元,其实这是不值得的,所以一直 ...

  7. Android中实现整个视图切换的左右滑动效果

    Android中提供了一个Gallary,可以实现图片或者文本的左右滑动效果. 如何让整个视图都能实现左右滑动,达到类似于Gallary的效果呢?可以直接用一个开源的ViewFlow来实现.   项目 ...

  8. js进阶 14-7 jquery的ajax部分为什么需要对表单进行序列化

    js进阶 14-7 jquery的ajax部分为什么需要对表单进行序列化 一.总结 一句话总结:如果用ajax传递表单的数据,如果不进行表单的序列化,要一个参数一个参数的写,太麻烦,序列化的话,一句代 ...

  9. 高可用架构篇--MyCat在MySQL主从复制基础上实现读写分离

    实战操作可参考:http://www.roncoo.com/course/view/3117ffd4c74b4a51a998f9276740dcfb 一.环境 操作系统:CentOS-6.6-x86_ ...

  10. DB2学习总结(1)——DB2数据库基础入门

    DB2的特性 完全Web使能的:可以利用HTTP来发送询问给服务器. 高度可缩放和可靠:高负荷时可利用多处理器和大内存,可以跨服务器地分布数据库和数据负荷:能够以最小的数据丢失快速地恢复,提供多种备份 ...