负载均衡

nginx负载均衡 tomcat集群 memcache共享session

依然范特西╮ 提交于 2019-12-02 17:17:44
http://9iu.org/2011/11/25/tomcat-memcached-session-sso.html 把 tomcat 的 session 存放在 memcached 的集中式缓存中 , 能够很好解决 tomcat 的集群负载 , 不用使用笨重的 session 复制 , 也能轻松解决 session 数据的同步 把所有的 jar 文件复制到 tomcat/lib 下 把 context.xml 复制到 tomcat/conf 下 , 注意修改 memcached 的连接 后台的 session 是共享的 , 如果前台的 JSESSIONID 也是共享的 , 不就可以实现统一登录了吗 ? 在同一域名下 例如 test1.abc.com 和 test2.abc.com 浏览器是允许共享 cookie 的 , 只需要把 JSESSIONID 的作用域设定为 abc.com 就可以了 修改 tomcat org.apache.catalina.connector.Request.java protected void configureSessionCookie(Cookie cookie) 这个方法 设置 cookie 作用域为主域名 , 例如 abc.com tomcat 6.0.32 和 tomcat6.0.33 的 Request 是不同的

nginx负载均衡

拥有回忆 提交于 2019-12-02 16:18:29
一:为什么要实现负载均衡 当一台服务器的单位时间内访问量越大的时候,服务器压力会越大,当一台服务器压力大得超过自身的承受压力的时候,服务器会崩溃。为了避免服务器崩溃,让用户更好的体验,我们通常通过负载均衡的方式来分担服务器的压力。那么什么是负载均衡呢?我们可以建立很多个服务器,这些服务器组成一个服务器集群,然后当用户访问我们的网站的时候,先访问一个中间服务器,再让这个中间服务器在服务器群中选择一个压力较小的服务器,然后将该访问请求引入选择的服务器。这样,用户每次的访问,都会保证服务器集群中的每个服务器的压力区域平衡,分担了服务器的压力,避免了服务器崩溃的情况。 二:Nginx的优势 nginx是一款可以通过反向代理实现负载均衡的服务器,使用nginx服务器实现负载均衡的时候,用户首先会访问到nginx服务器,然后nginx服务器再从服务器群中选择压力较小的服务器,把该访问请求引入到该服务器。若服务器群中的某个服务器崩溃,那么从待选的服务器列表中删除,也就是说如果一个服务器崩溃了,那么nginx肯定不会把访问引入该服务器了。 三: 负载均衡 当使用了代理服务器时,一般代理服务器后面不仅仅只有一台原始服务器,而是有很多台服务器一起在处理用户发过来的请求,这时就要协调好多台服务器怎样合作共同处理用户的请求 若所有的原始服务器配置相差不大的情况下,负载均衡的手段一般为轮询

Ribbon

北慕城南 提交于 2019-12-02 15:04:05
一:常见的负载均衡方式 1:服务端负载均衡:独立进程单元,通过负载均衡策略,将请求转发到不同的执行的单元,比如Ngnix 2:客户端负载均衡:将负载均衡逻辑以代码的形式封装到服务消费者的客户端上,服务消费者客户端维护一个服务提供者的信息列表,有了信息列表通过负载均衡策略将请求分摊到多个服务提供者,从而实现负载均衡。比如Ribbon。 二:Ribbon有两种使用方式,一是和RestTemplate结合(没仔细看),一是和Feign结合,feign默认继承了ribbon,因此开发的时候推荐使用这种方式) 主要包含的组件: ServerList,负载均衡使用的服务器列表。这个列表会缓存在负载均衡器中,并定期更新。它会保存Eureka Server中注册的服务实例表。 ServerListFilter,服务器列表过滤器。这是一个接口,主要用于对Service Consumer获取到的服务器列表进行预过滤,过滤的结果也是ServerList。Ribbon提供了多种过滤器的实现。 IPing,探测服务实例是否存活的策略。 IRule,负载均衡策略,其实现类表述的策略包括:轮询、随机、根据响应时间加权等 ILoadBalancer,负载均衡器。Ribbon的负载均衡由LoadBalanceClient实现,而LoadBalanceClient具体交给ILoadBalancer处理

Haproxy负载均衡

扶醉桌前 提交于 2019-12-02 14:58:04
Haproxy负载均衡 所需软件参见docker仓库: https://hub.docker.com/_/haproxy 方案: 1.先自己打包一个 Dockerfile : FROM haproxy:1.7 MAINTAINER silly <http://github.com/hunterhug> COPY haproxy.cfg /usr/local/etc/haproxy/haproxy.cfg docker build -t dhaproxy -f Dockerfile . 2.跑起haproxy docker run -it --rm --name my-haproxy dhaproxy -f /usr/local/etc/haproxy/haproxy.cfg haproxy.cfg 如下: #--------------------------------------------------------------------- # Global settings #--------------------------------------------------------------------- global log 127.0.0.1 local2 ###[err warning info debug] #chroot /usr/local/haproxy

nginx负载均衡

三世轮回 提交于 2019-12-02 14:52:47
负载均衡 负载均衡(反向代理)概念 什么是集群? 完成相同任务或者工作的一组服务器(web01 web02 web03 --- web集群) Nginx代理服务基本概述 1.代理一词往往并不陌生, 该服务我们常常用到如(代理理财、代理租房、代理收货等等),如下图所示 2.在没有代理模式的情况下,客户端和 Nginx 服务端,都是客户端直接请求服务端,服务端直接响应客户端。 3.那么在互联网请求里面, 客户端往往无法直接向服务端发起请求, 那么就需要用到代理服务, 来实现客户端和服务通信,如下图所示 什么是代理? 反向代理:外网 → (外网网卡)代理服务器(内网网卡) → 公司网站服务器web(内网) 正向代理:内网(局域网主机) → (内网网卡)代理服务器(外网网卡) → 互联网 → web服务器(国外) Nginx代理服务支持的协议 1.Nginx 作为代理服务,可支持的代理协议非常的多,具体如下图 2.如果将 Nginx 作为反向代理服务,常常会用到如下几种代理协议,如下图所示 3.反向代理模式与 Nginx 代理模块总结如表格 反向代里模式 Nginx配置模块 http、websocket、https ngx_http_proxy_module fastcgi ngx_http_fastcgi_module uwsgi ngx_http_uwsgi_module grpc

JBoss 系列五十:使用Apache httpd(mod_jk)和JBoss构架高可用集群环境

不羁岁月 提交于 2019-12-02 14:39:36
概述 前面 JBoss 系列二:使用Apache httpd(mod_cluster)和JBoss构架高可用集群环境 中我们介绍了企业应用的目的的目的,负载均衡,容错等,并通过Apache httpd(mod_cluster)和JBoss构架高可用集群环境,我们这里在原有的环境中将mod_cluster换成mod_jk,其架构如下图所示: 本方案是在开源Linux操作系统Fedora 15上进行,我们列出本方案使用的硬件和软件,三台物理机器,内存4GB或以上,安装Fedora 15后IP地址分别为10.66.192.48,10.66.192.231,10.66.192.232,我们分别对这三台物理机器做相应的安装如下: 10.66.192.231 – 安装JDK 1.6,JBoss 7,JBoss节点名称为node1 10.66.192.232 – 安装JDK 1.6,JBoss 7,JBoss节点名称为node2 10.66.192.48 – 安装Apache httpd,mod_jk 接下来我们给出使用Apache httpd(mod_jk)和JBoss构架高可用集群环境的步骤。 下载mod_jk相关安装包 从 http://tomcat.apache.org/download-connectors.cgi 下载 mod_jk.so包到本地

负载均衡,分布式,集群的理解,多台服务器代码如何同步

 ̄綄美尐妖づ 提交于 2019-12-02 12:54:34
集群 我们的项目如果跑在一台机器上,如果这台机器出现故障的话,或者用户请求量比较高,一台机器支撑不住的话。我们的网站可能就访问不了。那怎么解决呢?就需要使用多台机器,部署一样的程序,让几个机器同时的运行我们的网站。那怎么怎么分发请求的我们的所有机器上。所以负载均衡的概念就出现了。 负载均衡 负载均衡是指基于反向代理能将现在所有的请求根据指定的策略算法,分发到不同的服务器上。常用实现负载均衡的可以用nginx,lvs。但是现在也有个问题,如果负载均衡服务器出现问题了怎么办?所有冗余的概念就出现了。 冗余 冗余其实就是两个或者多台服务器 一个主服务器,一个从服务器。 假设一个主服务器的负载均衡服务器出现了问题,从服务器能够替代主服务器来继续负载均衡。实现的方式就是使用keepalive来抢占虚拟主机。 分布式 分布式其实就是将一个大项目的拆分出来,单独运行。 举个上面的例子。假设我们的访问量特别大。我们就可以做成分布式,跟cdn一样的机制。在北京,杭州,深圳三个地方都搭建一个一模一样的集群。离北京近的用户就访问北京的集群,离深圳近的就访问深圳这边的集群。这样就将我们网战给拆分3个区域了,各自独立。 再举个例子比如我们redis分布式。redis分布式是将redis中的数据分布到不同的服务器上面,每台服务器存储不同的内容,而mysql集群是每台服务器都放着一样的数据

Nginx负载均衡会话共享

我只是一个虾纸丫 提交于 2019-12-02 12:28:04
/*--> */ /*--> */ /*--> */ /*--> */ 在使用负载均衡的时候会遇到会话保持的问题,可通过如下方式进行解决 1.使用nginx的ip_hash,根据客户端的来源IP,将请求分配到相同服务器上 2.基于服务端的Session会话共享(mysql/memcache/redis/file) 在解决负载均衡会话问题我们需要了解session和cookie。 1.用户第一次请求服务端网站时,服务端会生成对应的session_id,然后存储至客户端浏览器的cookie中。 2.客户端尝试登陆服务端网站时,浏览器的请求头自动携带cookie信息,在cookie信息中保存的则是session_id。 3.客户端登陆服务端网站后,服务端会将session_id存储在本地文件中, 当用户下次请求网站时会去查询用户提交的cookie作为key去存 储里找对应的value(session) 注意: 同一域名下的网站登陆后cookie都是一样的。所以无论负载后端有几台服务器,无论请求分配到哪一台服务器上同一用户的cookie是不会发生变化的。也就是说cookie对应的session也是唯一的。所以,这里只要保证多台业务服务器访问同一个共享服务器(memcache/redis/mysql/file)就行了。 ~ 后端web01web02安装PHPadmin /*--> */ /*

[转帖]负载均衡技术扫盲

亡梦爱人 提交于 2019-12-02 12:22:28
负载均衡技术扫盲 https://yq.aliyun.com/articles/53665?spm=a2c4e.11155435.0.0.48bfe8efHUE8wg kryptosx 2016-05-27 23:54:27 浏览1197 虚拟IP(VIP) 就是类似域名通过DNS屏蔽掉了ip这样,虚拟ip就是要达到相同的效果。 域名 VIP 域名A类解析,绑定ip地址 更改MAC地址 域名跳转,跳到下个域名 NAT技术 LVS(Linux Virtual Server): LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。这儿不得不提到该项目的创始人, 章文嵩 博士,这是国内为数不多的NB项目之一。目前,该源码已经进入Linux内核。LVS是目前使用最广泛的负载均衡系统。 NAT(Network Address Translation,网络地址转换): 这里的实现基于Linux的Netfilte。 FULLNAT: DR(Direct Routing): TUNNEL(IP隧道): 对比: NAT FULLNAT DR TUNNEL 特点 都使用了NAT技术,中间人。 无NAT处理,移花接木。 技术特点 入包,改目的IP 出包,改源端IP 入包,改两端IP 出包,改两端IP 基于数据链路层 入包,改了MAC