高性能网站架构之负载均衡 Nginx+tomcat+redis实现tomcat集群

news/2024/5/11 5:25:56/文章来源:https://blog.csdn.net/weixin_34413357/article/details/89767027

上一篇文章给大家讲了Nginx的安装,那么这篇文章为大家讲一下Nginx+Tomcat实现负载均衡。

         先说说为什么要用ngnix 做负载均衡,其实做负载均衡的最出名的莫过于F5了,F5是在硬件设施,动辄几万,几十万,几百万不等,对于一般的小公司来说,这也是一笔很大的开销,所以能尽量的使用软件,还是使用软件,效果上虽然会差一些,但是还是能够起到一定的作用的。

环境准备

        三台装有centos6.5 系统的机器。其中两台机器上装有tomcat7,一台机器上装有nginx3.0.2,至于具体如何安装tomcat和ngnix,这里就不再介绍了,请大家自己去网上查找资料。

        这样我们还需要准备一台装有Redis服务的服务器,redis最好配置为集群的,这里为了演示tomcat集群,就使用单台服务器了。只与redis的安装,大家可以参照小编的Linux安装Redis并设置服务 。

测试程序

         环境准备好以后,我们写一个简单的测试程序,看看我们的两个tomcat服务是不是使用同一个redis服务,作为session的存储介质。应用程序如下,两台tomcat服务器本来应该部署同样的应用程序,但是这里为了区分,我们部署一个程序,但是页面不一致 加上ip的最后三位,用来区分不同的服务。

[html] view plain copy 在CODE上查看代码片派生到我的代码片

1
2
3
4
5
6
7
8
9
<body>    
   这事第一个页面128    
   <%= session.getId() %>    
</body>    
      
<body>    
   这事第二个页面129    
   <%= session.getId() %>    
</body>

        可以看到,如果两个sessionid是一样的,那么我们就可以证明两个tomcat服务器已经使用redis共享session了。

配置tomcat

        我们要将tomcat使用redis共享session需要的jar包,都准备好,共需要三个,如下所示。这个jar不是很好找,这里提供一个下载地址,tomcat+redis共享session。

     

         Jar包下载好以后,我们将这些jar包放入到tomcat中lib下,然后修改tomcat/conf/context.xml文件,在最后一个</Context>上边添加 如下代码:

[html] view plain copy 在CODE上查看代码片派生到我的代码片

1
2
3
4
5
6
   <ValveclassNameValveclassName="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve"/>  
    <ManagerclassNameManagerclassName="com.orangefunction.tomcat.redissessions.RedisSessionManager"  
           host="192.168.20.128" <!—redis的ip地址-->  
           port="6379"  
           database="0"  
           maxInactiveInterval="60"/>


       到此我们的tomcat就配置完了!

Nginx配置

         Nginx安装好以后,修改/usr/local/conf/nginx.conf配置文件,下边为最简配置。主要配置我们的tomcat服务器的地址+端口号。和他们的权重。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
#user  nobody;
worker_processes  1;
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;
#pid        logs/nginx.pid;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';
    #access_log  logs/access.log  main;
    sendfile        on;
    #tcp_nopush     on;
    #keepalive_timeout  0;
    keepalive_timeout  65;
    upstream myServer{  
      server 192.168.96.130:8080;  
      server 192.168.96.131:8080;  
    
    #gzip  on;
    server {
        listen       80;
        server_name  localhost;
        #charset koi8-r;
        #access_log  logs/host.access.log  main;
        location / {
      #  proxy_pass  http://192.168.96.130:8080;  
          #  root   html;
          #  index  index.html index.htm;
         proxy_pass  http://myServer;  
        }
        #error_page  404              /404.html;
        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}
        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ \.php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}
        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    }
    # another virtual host using mix of IP-, name-, and port-based configuration
    #
    #server {
    #    listen       8000;
    #    listen       somename:8080;
    #    server_name  somename  alias  another.alias;
    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}
    # HTTPS server
    #
    #server {
    #    listen       443 ssl;
    #    server_name  localhost;
    #    ssl_certificate      cert.pem;
    #    ssl_certificate_key  cert.key;
    #    ssl_session_cache    shared:SSL:1m;
    #    ssl_session_timeout  5m;
    #    ssl_ciphers  HIGH:!aNULL:!MD5;
    #    ssl_prefer_server_ciphers  on;
    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}
}

 



       这样我们所有的准备工作就都做完了。接下来我们进行测试。

验证结果

         我们先对ip为128的进行访问,然后再对129的进行访问,我们会发现sessionid是不一样的。

             

           

         然后我们通过nginx 进行访问,我们刷新几次,会发现他会随机的选择服务器,加载页面,但是我们可以发现不管是访问的ip为128 还是129 的,他的sessionid都是一个,所以我们断定两台tomcat服务器已经共享session了!

          

         这样我们的tomcat使用redis 实现session共享 就实现了,并且用ngnix 实现了负载均衡,但是我们想一下,如果我们使用一个nginx,如果该nginx所在的服务器,宕机了,那么我们的程序就挂掉了。那么我们该如下实现一个高可用的方案呢。篇文章将为我们介绍nginx+keepalived 实现高可用的负载均衡!













本文转自yunlielai51CTO博客,原文链接:http://blog.51cto.com/4925054/1909521,如需转载请自行联系原作者

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_722901.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vs新建网站选项只有wcf服务器,在 Windows 窗体中创建一个简单的 WCF 服务 - Visual Studio (Windows) | Microsoft Docs...

演练&#xff1a;在 Windows 窗体中创建简单 WCF 服务11/04/2016本文内容本演练演示如何创建一个简单的 Windows Communication Foundation (WCF) 服务&#xff0c;对其进行测试&#xff0c;然后从 Windows 窗体应用程序访问该服务。备注本文中的某些 Visual Studio 用户界面元…

大型网站的负载均衡器、db proxy和db

大型网站的负载均衡器、db proxy和db 本文主要分析网站后台架构中的负载均衡器&#xff0c;企业常用的硬件负载均衡器软件负载均衡器、数据库代理服务器和数据库。 1.1 负载均衡 在大型网站部署中&#xff0c;负载均衡至少有三层部署。第一层为web server或者缓存代理之上的负载…

html5 bbs网站,分享一个优秀HTML5网站的开发思路

由于网站开发的工作原因&#xff0c;最近一直在学习HTML5语言。没事的时候&#xff0c;就喜欢到处搜罗优秀的网站来看&#xff0c;甚至调出它的源码来研究。几个月来&#xff0c;个人学到了很多&#xff0c;在这里也想和大家分享一下自己研究过的网站&#xff0c;并且会给大家分…

一个网管8年来运营网站的辛酸经历

一直以来&#xff0c;都想写点什么&#xff0c;但思绪有点混乱&#xff0c;不知从何下笔。这要源于2015年进入股市惨败直至17年投资生意失败&#xff0c;三年时间耗费了所有积蓄&#xff0c;还倒欠了一些外债&#xff0c;所以无心打理其他事情&#xff0c;今天整理了一下心情&a…

html制作一张学生信息表格,学生个人网页制作代码,制作一个很简单网页表单代码 _ 惠州SEO...

进入下一页吗var }var url\"next.html\";//正确后转到网址function go}if(o.}document.location.reload(url);}}请输入网址学生个人网页制作代码&#xff1a;将以上内容复制到记事本后学生个人网页制作代码&#xff0c;另存为\"xxx.html\"对回答的内容有问…

大型网站背后的高性能系统架构设计

2019独角兽企业重金招聘Python工程师标准>>> 1. 性能测试 1.1. 性能指标 网站性能测试的主要指标有&#xff1a; 响应时间 - 响应时间(RT)是指从客户端发一个请求开始计时&#xff0c;到客户端接收到从服务器端返回的响应结果结束所经历的时间&#xff0c;响应时间由…

有哪些网站是django开发的_商城网站建设的具体开发流程有哪些

商城网站建设可以改变一家企业的营销模式&#xff0c;一些传统的行业在做着线下产品的销售&#xff0c;而有了商城之后就可以做网上销售&#xff0c;不过商城网站的开发比普通网站开发的难度更大&#xff0c;所以大家一定要认真的去了解那么商城网站建设的具体开发流程有哪些&a…

Java web speach api_HTML5 Web Speech API,让网站更有趣

Web API 变得越来越丰富&#xff0c;其中一个值得注意的是Web Speech API。传统的网站只能“说”&#xff0c;这个API的出现&#xff0c;让网站能“倾听”用户。这个功能已经开放了一系列的用法&#xff0c;非常棒。在这篇文章中&#xff0c;我们将看一下这项技术和建议的用法&…

seo模拟点击软件_SEO点击软件是否对网站排名有帮助

SEO点击软件是否对网站排名有帮助我们在搜索引擎搜索东西时候都是以某个关键词进行搜索&#xff0c;然后再更具该关键词的长尾词进行详细查找。在搜索时候我们会留意网站的展现数量&#xff0c;如某某网站展现量多&#xff0c;某某网站展现少&#xff0c;这些都会在我们潜意识里…

php页面怎么改造mip,代码适配的网站如何进行mip改造

最近一个小站需要进行mip改造&#xff0c;网站是代码适配的网站。就是电脑访问返回电脑端的页面&#xff0c;手机端访问返回手机端的页面。网站的url是相同的。改造后在百度提供的在线验证工具中进行了测试&#xff0c;全部通过测试。然后在站长后台进行了提交。提交后大概等了…

Python爬虫实战之爬取网站全部图片(二)

通过python 来爬取网站内所有的图片到本地 第三篇是动态获取参数构造图片地址实现下载图片 传送门&#xff1a;https://blog.csdn.net/qq_33958297/article/details/82316019 这篇文章的目的是因为上一个文章里的地址已经无法访问了 考虑到可能有的新手没有办法去实验&…

如何在微软Azure上搭建个人博客网站

手动配置服务器对很多读者来说可能并不是一件容易的事。好在在Azure中&#xff0c;微软已经就搭建WordPress个人博客给出了一站式的解决方案&#xff0c;对于零基础读者来说&#xff0c;在Azure上搭建WordPress即意味着你无需经历繁琐的服务器配置过程。本期的教程&#xff0c;…

CentOS7搭建DVWA网站

Lamp架构搭建DVWA 搭建Lamp请看&#xff1a;https://blog.csdn.net/qq_41709494/article/details/89430834 1.下载DVWA地址&#xff1a;http://www.dvwa.co.uk/ 2. 安装Lamp的所有包 [rootlocalhost ~]# yum install php php-mysql php-gd httpd mariadb mariadb-server -…

记一次网站优化---图片压缩与移动端画面缩放问题

一、背景 前段时间被人吐槽自己负责的官网访问慢 其实自己平时访问的时候是有意识到的&#xff0c;但是没有特别放在心上 在工作的列表中优先级排的不高 最近空闲了下来&#xff0c;使用性能分析工具审计了一遍网站的各项指标 发现了比较严重的问题 二、问题 1、页面内容空白时…

可以发外链的网站_外链是什么意思?发外链的技巧【经验分享.视频】

外链是什么意思&#xff1f;外链是指网站的外链&#xff0c;是指一个网站所拥有的站外推广链接。把自己的网址发布到别人的网站上&#xff0c;这样的链接叫做外链。&#xff08;可发文章的平台&#xff0c;如58同城、赶集网、百姓网、等外链平台&#xff09;比如我在百姓网发了…

插码统计点击次数_码迷SEO内参(15) 百度快排原理及百度第三代点击排名统计系统简析...

这是码迷SEO的第42篇原创今天讲百度第三代点击排名统计系统&#xff0c;顺带把百度快排深度原理也刨析一下。自从19年10月份以来&#xff0c;百度对快排打击丝毫没有手软的迹象&#xff0c;码迷发现凡是采集快排模式的网站至今无一幸免&#xff0c;70多天了也没有起色的现象。可…

php动态保存文件名_利用百度地图写个跑腿接单的网站菜鸟教程零基础php为主

忙了几天&#xff0c;终于闲下来了&#xff0c;接着上一篇写。上一篇说怎样在手机上搭建服务器&#xff0c;本篇写创建hello world&#xff0c;第一个页面。其实看过我上几篇教程的都知道大概怎样创建了&#xff0c;就是一页面法。一个主页面&#xff0c;其他页面用函数表示&am…

网站被挂了很多链接 源码里边看不到_网站优化的50个技巧

这次写的《网站优化50个技巧》是为了让那些没有时间深究SEO技术但又想一窥SEO真相的朋友们&#xff0c;希望看了这些你更懂SEO&#xff01;这些经验和盘托出&#xff0c;希望能够帮助到朋友们&#xff01;这些规则就像是交通指示灯一样&#xff0c;按照这些规则走的&#xff0c…

多线程导出excel_seo必备网站分析工具,关键词百度搜索结果查询导出源码

seo必备网站分析工具&#xff0c;关键词百度搜索结果查询导出源码两个简单的版本&#xff0c;关于百度搜索结果的采集抓取&#xff0c;可以获取到竞争对手的网站&#xff0c;加以分析和研究&#xff0c;只需输入关键词和搜索页码&#xff0c;即可完成对于竞争对手的获取和研究&…

html5网格布局建站,CSS网格布局的示例代码

本文介绍了CSS网格布局的示例代码&#xff0c;分享给大家&#xff0c;具体如下&#xff1a;浏览器兼容性可以看出CSS网格布局从Safari 10.1, Firefox 52, Chrome 60&#xff0c;Edge 15开始受到支持。网格布局页面基本元素&#xff1a;OneTwoThreeFourFive样式&#xff1a;.wra…