`

keepalived+nginx打造高可用web应用的架构方案

阅读更多

看了一篇web应用的架构文章,作为web项目首先保证高可用,如果是互联网面向用户的项目呢,高可用其中一点就是要面对高并发。下面对高可用方案进行总结,本文只讨论到web service层,数据层暂不讨论。

 

单点往往是系统高可用最大的风险和敌人,应该尽量在系统设计的过程中避免单点。方法论上,高可用保证的原则是“集群化”,或者叫“冗余”:只有一个单点,挂了服务会受影响;如果有冗余备份,挂了还有其他backup能够顶上。

 

保证系统高可用,架构设计的核心准则是:冗余。

 

单机web最初架构是DNS+web server。 一台公网ip可以对外提供服务。如果这台机器故障则web服务不可用。解决方案就是增加一台备用web server,这样单机故障之后可以启用第二台机器顶上,实现高可用目的。

 

如果把这个思路做到平滑无感知切换机器,那么一套可行的方案就是DNS+(keepalived & nginx反向代理)+web server三层架构,这个架构基本上可以解决90%以上的web项目需求。结构图如下:

keepalived+nginx架构

 

nginx使用proxy、upstream模块做为反向代理+负载均衡服务器,upstream模块自带多个负载均衡算法、自带健康检查,可以把故障web service屏蔽掉,这样保障了nginx到web service高可用。

 

那么万一,nginx故障了呢? 所以配上keepalived。 在两台nginx server上配置keepalived,设置公网ip为虚拟ip,master 机器工作,当master机器nginx故障,keepalived自动启用backup机器,用户无感知。

 

这个架构的优点是可以在nginx到web server机器通过加机器来解决高并发问题。nginx单机并发能力非常强,上万qps。缺点是有一台nginx机器基本上一直处于备用状态,机器利用率50%,为了高可用可以接受。

 

如果,并发量更大一点呢,qps超过5万呢?  能达到这个并发量,那公司的业务量很可以了,创始人应该可以财务自由了。 既然达到nginx的并发极限,当时是要增加nginx数量了。所以上面架构升级为四层,即DNS+(keepalived-lvs)+nginx+web service 来实现,这个架构可以解决99.9%的高可用、高并发web项目。 架构图如下:

 

keepalived+lvs+nginx架构

 

从图中可以看出,keepalived机器上不再部署nginx server,两台keepalived 机器,在keepalived.conf中开启负载均衡配置,一个虚拟ip对应N个nginx server,设置负载均衡算法,设置nginx server健康检查,保证N台nginx server是可用的,自动屏蔽故障nginx server。 在多台nginx server中设置虚拟ip,把vip添加到 tunl0 网卡上。 nginx server到web server的配置和上一个架构一样。

 

这样,通过横向扩展nginx server 和 web server机器的方法抗5个明星同时出轨的流量是没有问题的,99.9%的web项目都可以稳定运行了。 如果,有人问,我的并发量还要大呢?首先恭喜你的公司市值至少100亿美金了,其次,解决方案是再买几个公网ip,设置成多个vip,通过DNS轮询方式把流量分发到多个keepalived机器上,即DNS轮询+(keepalived-lvs)+nginx+web service 来实现。

 

具体配置信息参考下面几篇文章:

 lvs+keepalived群集配置

 

 LVS 和 Keepalived 的原理介绍和配置实践

 

 lvs详细介绍及lvs和keepalived的使用

 

究竟啥才是互联网架构“高可用”

 

 

 

  • 大小: 71.8 KB
  • 大小: 93.3 KB
分享到:
评论

相关推荐

    nginx+keepalived+tomcat+redis文档

    这里配置Keepalived + Nginx + Tomcat + Redis的架构,其中:keepalived用于管理Virtual IP,与nginx一起搭配实现高可用性的反向代理前端;后端使用Tomcat管理web服务,并利用Redis实现session共享。

    高性能业务架构解决方案(LVS+Keepalived)

    高性能业务架构解决方案(LVS+Keepalived) Nginx/LVS/HAProxy的基于Linux的开源免费的负载均衡软件。对于大型的,需要进行高并发的网站或者对网络不太严格的场景...本文采用LVS+keepalived方案来解决业务架构高可用。

    Nginx Keepalived Tomcat MySQL高可用负载均衡Web应用架构实践.pdf

    Nginx Keepalived Tomcat MySQL高可用负载均衡Web应用架构实践.pdf

    lvs+keepalives部署.txt

    简介 Keepalived的作用是检测服务器的状态,如果有一台web服务器宕机,或工作出现故障,Keepalived将检测到,并将有故障的服务器从...高可用web架构: LVS+keepalived+nginx+apache+php+eaccelerator(+nfs可选 可不选)

    高性能业务架构解决方案(HAproxy+Keepalive)

    高性能业务架构解决方案(HAproxy+Keepalived) Nginx/LVS/HAProxy的基于Linux的开源免费的负载均衡软件。对于大型的,需要进行高并发的网站或者对网络不太...本文采用HAproxy+keepalived双主方案来解决业务架构高可用。

    史上最牛逼的Nginx最佳实践教程从入门到精通

    19.Nginx+keepalived+proxy_cache配置高可用Nginx群集和高速缓冲 20.Nginx最难一战 优化指南 21.确保Nginx安全的10大关键技巧 Nginx变量详解 Nginx模块与实践案例 提供了目前所有互联网公司都在用的51个案例 常见...

    基于Java应用的高并发高可用集群服务器的设计与实现_王瑛.pdf

    同时,使用lvs/nginx+keepalived做高并发高可用集群,整合tomcat容器,采用辅助软git和Nas技术,分别确保多个数据库之间的数据同步和多个web服务器之间的网页同步,最后,用监控软件监控整体服务器的运行情况。

    分布式负载均衡集群架构设计

    nginx+keepalived实现nginx双主高可用的负载均衡 两太负载均衡互为主从,由keepalived配置的具体调度算法调度负载均衡服务器 2.DNS轮询: DNS轮询请求负载均衡服务器,负载均衡服务器通过调度选择负载均衡服务器来...

    JavaEE大型分布式电商项目 淘淘商城 29期

    13、 部署方面使用LVS + keepalived + Nginx实现了双机主备、双主热备,实现了一个高可用的系统架构。 14、 项目开发采用团队式的开发,统一使用Maven私服构建项目,使用统一的SVN服务进行代码的管理。 【课程内容...

    Linux运维从入门到高级全套案例v3

    5. 7 MySQL主从高可用架构 102 5. 8 LVS+Keepalived负载均衡 110 5. 9 Squid缓存服务器配置 116 6. Linux下高并发系统内核优化 122 7. Nginx负载均衡机制及常见问题 124 8. Linux运维职业规划 127 9. Linux运维面试...

    集群好书《高性能Linux服务器构建实战》 试读章节下载

    由国内著名技术社区联合推荐的2012年IT技术力作:《高性能Linux服务器构建实战:运维监控、性能调优与集群应用》,即将上架发行,此书从Web应用、数据备份与恢复、网络存储应用、运维监控与性能优化、集群高级应用等...

    《跟老男孩学Linux运维 Web集群实战》高清完整带详细书签

    着重讲解了Web集群后端的MySQL数据库、Web集群共享存储NFS、Nginx反向代理负载均衡、Keepalived高可用、Memcached缓存及session共享、Nagios企业级监控等技术实战,最后为读者规划了一个中等规模的网站集群架构解决...

    跟老男孩学linux运维:Web集群实战

    着重讲解了Web集群后端MySQL数据库、Web集群共享存储NFS、Nginx反向代理负载均衡、Keepalived高可用、Memcached缓存及session共享、Nagios企业级监控等技术实战,最后为读者规划了一个中等规模的网站集群架构解决...

    Linux运维从入门到高级全套案例v3.rar

    目录 Linux入门篇 操作系统简介 1.2 Linux发展趋势 3 Linux系统安装 4 Linux学习技巧 2. Linux系统篇…… 2.1 Linux系统管理… 2.1.1 Linux目录初识 ...5.7 MySQL主从高可用架构… 5.8Ls+ Keepalived负载均衡

    跟老男孩学Linux运维 Web集群实战.pdf

    着重讲解了Web集群后端的MySQL数据库、Web集群共享存储NFS、Nginx反向代理负载均衡、Keepalived高可用、Memcached缓存及session共享、Nagios企业级监控等技术实战,最后为读者规划了一个中等规模的网站集群架构解决...

    跟老男孩学Linux运维:集群实战

    着重讲解了Web集群后端的MySQL数据库、Web集群共享存储NFS、Nginx反向代理负载均衡、Keepalived高可用、Memcached缓存及session共享、Nagios企业级监控等技术实战,最后为读者规划了一个中等规模的网站集群架构解决...

    Infrastructure

    使用Ansible进行IT基础架构部署IT基础架构提供: 操作: DNS服务器(主服务器和从服务器):配备Bind9 Web服务器:已配置Nginx Web应用程序:已配置Docker 数据库服务器:已配置MySQL 高可用性:配备HAproxy 负载...

Global site tag (gtag.js) - Google Analytics