负载均衡

负载均衡之LVS、HAProxy和Nginx

。_饼干妹妹 提交于 2019-12-07 11:00:37
负载均衡(Load Balance)是应用于互联网后台系统架构设计中的各层,它将请求均匀分摊到多个操作单元上执行。 目前,在线上环境中应用较多的负载均衡器硬件有F5 BIG-IP,但是硬件设备昂贵,不如软件适应互联网公司的快速发展。最常用的负载均衡软件有LVS、HAProxy和Nginx,结合高可用软件有Heartbeat、Keepalived,可以搭建出承载海量请求的成熟架构如LVS+Keepalived、HAProxy+keepalived等. 专长 三种负载均衡软件LVS、HAProxy和Nginx的优缺点说明如下: LVS的优点: 1、性能最强、仅工作在第4层,TUN和DR模式下回包不经过LVS,保证了均衡器IO的性能受大流量的影响最小; 2、工作稳定,自身有完整的双机热备方案,如LVS+Keepalived和LVS+Heartbeat; 3、应用范围比较广,可以对所有应用做负载均衡; LVS的缺点: 1、软件本身不支持正则处理,不能做动静分离,这就凸显了Nginx/HAProxy+Keepalived的优势。 2、配置性比较低,如果网站应用比较庞大,配置和维护过程就比较麻烦。 HAProxy的优点: 1、HAProxy是支持虚拟主机的,可以工作在4、7层(支持多网段); 2、支持url检测后端的服务器; 3、它跟LVS一样,本身仅仅就只是一款负载均衡软件

PHP如何解决网站大流量与高并发

北城以北 提交于 2019-12-07 09:41:27
首先,确认服务器硬件是否足够支持当前的流量。 普通的P4服务器一般最多能支持每天10万独立IP,如果访问量比这个还要大, 那么必须首先配置一台更高性能的专用服务器才能解决问题 ,否则怎么优化都不可能彻底解决性能问题。 其次,优化数据库访问。 前台实现完全的静态化当然最好,可以完全不用访问数据库,不过对于频繁更新的网站, 静态化往往不能满足某些功能。 缓存技术就是另一个解决方案,就是将动态数据存储到缓存文件中,动态网页直接调用这些文件,而不必再访问数据库,WordPress和Z-Blog都大量使用这种缓存技术。 如果确实无法避免对数据库的访问,那么可以尝试优化数据库的查询SQL.避免使用 Select * from这样的语句,每次查询只返回自己需要的结果,避免短时间内的大量SQL查询。 第三,禁止外部的盗链。 外部网站的图片或者文件盗链往往会带来大量的负载压力,因此应该严格限制外部对于自身的图片或者文件盗链,好在目前可以简单地通过refer来控制盗链,Apache自己就可以通过配置来禁止盗链,IIS也有一些第三方的ISAPI可以实现同样的功能。当然,伪造refer也可以通过代码来实现盗链,不过目前蓄意伪造refer盗链的还不多,可以先不去考虑,或者使用非技术手段来解决,比如在图片上增加水印。 第四,控制大文件的下载。 大文件的下载会占用很大的流量,并且对于非SCSI硬盘来说

rancher搭建+基本操作+web应用部署

ぃ、小莉子 提交于 2019-12-07 06:01:56
Rancher搭建 首先rancher需要安装了docker的linux环境,我的系统版本为 在docker的基础上启动rancher服务器,Rancher 服务器是一个 Docker image,所以其软件本身不需要安装,只需要执行 Docker 命令下载并且成功运行 Docker 服务器镜像即可。 执行命令 sudo docker run -d --restart=always -p 8080:8080 rancher/server 启动容器并指定端口,如果没有rancher/server镜像会自动下载。执行完成后查看镜像与容器运行情况: 以上步骤完成后,查看本机的ip地址,我的地址为192.1688.1.109,在浏览器输入 http://ip:8080/ ,登录到rancher官网,为安全起见,设置管理账户 然后进行添加主机操作,根据网站指引操作,生成一条命令,在docker中运行 $ sudo docker run --rm --privileged -v /var/run/docker.sock:/var/run/docker.sock -v /var/lib/rancher:/var/lib/rancher rancher/agent:v1.2.5 http://192.168.1.109:8080/v1/scripts/9F78F0DF10BCF4216AC7

nginx+tomcat 另类负载均衡

馋奶兔 提交于 2019-12-07 03:45:02
一、部署背景 某服务器A:10.68.4.198 域名:edi.qnb.com ( to mcat应用,web 访问但须帐密认证,其他服务器连接查询却无须认证 ) 因业务需要,需要对A服务器做负载均衡。要求用nginx的upstream模块。A服务器上安装了tomcat和nginx,nginx做转发,将端口80接收到的请求,转发至本机的8080端口上,由tomcat处理。 现有相同配置的服务器B:10.68.4.248,用于做A的负载均衡。 按照一般设置是直接在upstream块中添加如下两句,但是这样。web访问的就会出问题, session丢失 。会一直是登陆界面。然而nginx完美解决了这个问题。那就是用ip_hash。 ip_hash:能够将某个客户端的ip的请求通过哈希算法定位到同一台后端服务器。 upstream edi.qnb.com { ip_hash; server 127.0.0.1:8080; server 10.68.4.248:8080; } 通过ip_hash确实能够解决session丢失的问题。但是相同ip却永远只会调转到一台服务器上,web访问可以负载均衡,那么服务器访问呢?而服务器A大多是其他服务器连接访问。 所以ip_hash只能解决web访问,而不能解决服务器间的访问。 我的思路:和同事讨论后,决定在nginx上配置两个域名。一个用于web访问

Nginx与Zuul的区别

那年仲夏 提交于 2019-12-06 23:53:40
1、Nginx与Zuul的区别 相同点:Zuul和Nginx都可以实现负载均衡、反向代理(隐藏真实ip地址),过滤请求,实现网关的效果 不同点:Nginx--c语言开发 Zuul--java语言开发 Zuul负载均衡实现:采用ribbon+eureka实现本地负载均衡 Nginx负载均衡实现:采用服务器实现负载均衡 Nginx相比zuul功能会更加强大,因为Nginx整合一些脚本语言(Nginx+lua) Nginx适合于服务器端负载均衡 Zuul适合微服务中实现网关 来源: CSDN 作者: Younger成 链接: https://blog.csdn.net/qq_39243221/article/details/85234243

Keepalived+lvs+httpd之负载均衡

拥有回忆 提交于 2019-12-06 21:35:31
最近在研究 负载均衡。目前研究的是keepalived+lvs模式 1、软件介绍 keepalived:顾名思义是保持存活,常用来搭建设备的高可用,防止业务核心设备出现单点故障。keepalived主要用作realserver的健康检查以及负载均衡主机和backup主机之间的故障漂移。 单点故障:在公司整个业务流程中,某一点出现故障就会导致整个系统架构不可用,单点故障常发生在数据库、核心业务系统等。对此我们的解决办法是对核心业务系统进行高可用负载均衡。 LVS:Linux Virtual Server,linux虚拟服务器,是一个虚拟的服务器集群系统。目前有三种负载均衡技术(VS/NAT、VS/TUN和VS/DR);十种调度算法(rrr|wrr|lc|wlc|lblcr|lblc|dh|sh|sed|nq)。 2、实验拓扑图。 本次实验一共用到4台服务器,其中两台服务器用来搭建keepalived+lvs,另两台是对外提供服务的web服务器。 本次实验用到了5个ip地址。 Master:10.68.4.201 Backup:10.68.4.58 web1:10.68.4.198 web2:10.68.4.248 virtualIP:10.68.4.199 3、拓扑图介绍 keepalived--master和keepalived--backup

nginx+tomcat+memcached负载均衡

守給你的承諾、 提交于 2019-12-06 21:29:38
nginx+tomcat+memcached负载均衡 负载均衡:   负载均衡是由多台服务器以对称的方式组成一个服务器集合,每台服务器都具有等价的地位,都可以单独对外提供服务 而无 须其他服务器的辅助。通过某种负载分担技术,将外部发送来的请求均匀分配到对称结构中的某一台服务器上,而接收到请求的服务器独立地回应客户的请求。 均衡负载能够平均分配客户请求到服务器列阵,籍此提供快速获取重要数据,解决大量并发访问服务问题。   Tomcat 很受广大程序员的喜欢,因为它运行时占用的系统资源小,扩展性好,支持负载平衡与邮件服务等开发应用系统常用的功能;    Tomcat 是一个小型的轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应对HTML 页面的访问请求。实际上Tomcat 部分是Apache 服务器的扩展,但它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。 <T1> <T2> . \ / . . X . . / \ . <M1> <M2> Tomcat-1 (T1) 将 session 存储在 memcached-2 (T2)上。只有当 M2 不可用时,T1 才将 session 存储在

一致性hash算法--负载均衡

試著忘記壹切 提交于 2019-12-06 21:07:38
有没有好奇过redis、memcache等是怎么实现集群负载均衡的呢? 其实他们都是通过一致性hash算法实现节点调度的。 讲一致性hash算法前,先简述一下求余hash算法: hash(object)%N 一个缓存服务器宕机了,这样所有映射到这台服务器的对象都会失效,我们需要把属于该服务器中的缓存移除,这时候缓存服务器是 N-1 台,映射公式变成了 hash(object)%(N-1) ; 由于QPS升高,我们需要添加多一台服务器,这时候服务器是 N+1 台,映射公式变成了 hash(object)%(N+1) 。 1 和 2 的改变都会出现所有服务器需要进行数据迁移。 一致性HASH算法 一致性HASH算法的出现有效的解决了上面普通求余算法在节点变动后面临全部缓存失效的问题:   type Consistent struct {    numOfVirtualNode int   hashSortedNodes [] uint32    circle map[ uint32] string    nodes map[ string] bool } 简单地说,一致性哈希将整个哈希值空间组织成一个虚拟的圆环,如假设某空间哈希函数H的值空间是0-2^32-1(即哈希值是一个32位无符号整形),整个哈希空间如下: 下一步将各个服务器使用哈希算法计算出每台机器的位置

Nginx负载均衡服务器

邮差的信 提交于 2019-12-06 19:18:15
nginx不单可以作为强大的web服务器,也可以作为一个反向代理服务器,而且nginx还可以按照调度规则实现动态、静态页面的分离,可以按照轮询、ip哈希、URL哈希、权重等多种方式对后端服务器做负载均衡,同时还支持后端服务器的健康检查。 如果只有一台服务器时,这个服务器挂了,那么对于网站来说是个灾难.因此,这时候的负载均衡就会大显身手了,它会自动剔除挂掉的服务器. 下面简单的介绍下我使用Nginx做负载的体会 Nginx负载均衡一些基础知识: nginx 的 upstream目前支持 4 种方式的分配 1)、轮询(默认) 每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。 2)、weight 指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。 3)、ip_hash 每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。 4)、fair(第三方) 按后端服务器的响应时间来分配请求,响应时间短的优先分配。 5)、url_hash(第三方) 配置: 在http节点里添加: #定义负载均衡设备的 Ip及设备状态 upstream myServer { server 127.0.0.1:9090 down; server 127.0.0.1:8080 weight=2; server

LVS DR模式负载均衡的搭建(单网段)

南笙酒味 提交于 2019-12-06 18:54:07
LVS DR模式负载均衡的搭建(单网段) 实验需要五台虚拟机,都是centos7 客户端 路由器 lvs服务器 172.22.144.188 1接口172.22.144.17 2接口192.168.49.5 172.22.144.17 192.168.49.5 rs1服务器 rs2服务器 192.168.49.3 192.168.49.4 **客户端的配置** vim /etc/sysconfig/nerwork-scripts/ifcfg-ens33 DEVICE=ens33 NAME=ens33 BOOTPROTO=static IPADDR=172.22.144.188 PREFIX=16 ONBOOT=yes GATEWAY=172.22.144.17 由于客户端IP与VIP不在一个网段,所以网关需要指向路由器 路由器的配置 vim /etc/sysconfig/nerwork-scripts/ifcfg-ens33 DEVICE=ens33 NAME=ens33 BOOTPROTO=static IPADDR=172.22.144.17 ONBOOT=yes PREFIX=16 路由器配置1接口网卡 连接外网 vim /etc/sysconfig/nerwork-scripts/ifcfg-ens37 DEVICE=ens37 IPADDR=192.168.49.5