`
zhengdl126
  • 浏览: 2510556 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类

19个心得 明明白白说Linux下的负载均衡

阅读更多

一、目前网站架构一般分成负载均衡层、web层和数据库层,我其实一般还会多加一层,即文件服务器层,因为现在随着网站的PV越来越多,文件服务器的压力也越来越大;不过随着moosefs、DRDB+Heartbeat的日趋成熟,这问题也不大了.网站最前端的负载均衡层称之为Director,它起的是分摊请求的作用,最常见的就是轮询。

  二、F5是通过硬件的方式来实现负载均衡,它较多应用于CDN系统,用于squid反向加速集群的负载均衡,是专业的硬件负载均衡设备,尤其适用于每秒新建连接数和并发连接数要求高的场景;LVS和Nginx是通过软件的方式来实现的,但稳定性也相当强悍,在处理高并发的情况也有相当不俗的表现。

  三、Nginx对网络的依赖较小,理论上只要ping得通,网页访问正常,nginx就能连得通,nginx同时还能区分内外网,如果是同时拥有内外网的节点,就相当于单机拥有了备份线路;lvs就比较依赖于网络环境,目前来看服务器在同一网段内并且lvs使用direct方式分流,效果较能得到保证。

  四、目前较成熟的负载均衡高可用技术有LVS+Keepalived、Nginx+Keepalived,以前Nginx没有成熟的双机备份方案,但通过shell脚本监控是可以实现的,有兴趣的可具体参考我在51cto上的项目实施方案;另外,如果考虑Nginx的负载均衡高可用,也可以通过DNS轮询的方式来实现,有兴趣的可以参考张宴的相关文章

  五、集群是指负载均衡后面的web集群或tomcat集群等,但现在的集群意义泛指了整个系统架构,它包括了负载均衡器以及后端的应用服务器集群等,现在许多人都喜欢把Linux集群指为LVS,但我觉得严格意义上应该区分开。

  六、负载均衡高可用中的高可用指的是实现负载均衡器的HA,即一台负载均衡器坏掉后另一台可以在<1s秒内切换,最常用的软件就是Keepalived和Heatbeat,成熟的生产环境下的负载均衡器方案有Lvs+Keepalived、Nginx+Keepalived。

 七、LVS的优势非常多:①抗负载能力强;②工作稳定(因为有成熟的HA方案);③无流量;④基本上能支持所有的应用,基于以上的优点,LVS拥有不少的粉丝;但世事无绝对,LVS对网络的依赖性太大了,在网络环境相对复杂的应用场景中,我不得不放弃它而选用Nginx。

  八、Nginx对网络的依赖性小,而且它的正则强大而灵活,强悍的特点吸引了不少人,而且配置也是相当的方便和简约,小中型项目实施中我基本是考虑它的;当然,如果资金充足,F5是不二的选择。

  九、大型网站架构中其实可以结合使用F5、LVS或Nginx,选择它们中的二种或三种全部选择;如果因为预算的原因不选择F5,那么网站最前端的指向应该是LVS,也就是DNS的指向应为lvs均衡器,lvs的优点令它非常适合做这个任务。重要的ip地址,最好交由lvs托管,比如数据库的ip、webservice服务器的ip等等,这些ip地址随着时间推移,使用面会越来越大,如果更换ip则故障会接踵而至。所以将这些重要ip交给lvs托管是最为稳妥的。

  十、VIP地址是Keepalived虚拟的一个IP,它是一个对外的公开IP,也是DNS指向的IP;所以在设计网站架构时,你必须向你的IDC多申请一个对外IP

  十一、在实际项目实施过程中发现,Lvs和Nginx对https的支持都非常好,尤其是LVS,相对而言处理起来更为简便。

  十二、在LVS+Keepalived及Nginx+Keepalived的故障处理中,这二者都是很方便的;如果发生了系统故障或服务器相关故障,即可将DNS指向由它们后端的某台真实web,达到短期处理故障的效果,毕竟广告网站和电子商务网站的PV就是金钱,这也是为什么要将负载均衡高可用设计于此的原因;大型的广告网站我就建议直接上CDN系统了。
 十三、现在Linux集群都被大家神话了,其实这个也没多少复杂;关键看你的应用场景,哪种适用就选用哪种,Nginx和LVS、F5都不是神话,哪种方便哪种适用就选用哪种。

  十四、另外关于session共享的问题,这也是一个老生长谈的问题了;Nginx可以用ip_hash机制来解决session的问题,而F5和LVS都有会话保持机制来解决这个问题,此外,还可以将session写进数据库,这也是一个解决session共享的好办法,当然这个也会加重数据库的负担,这个看系统架构师的取舍了。

  十五、我现在目前维护的电子商务网站并发大约是1000左右,以前的证券资讯类网站是100左右,大型网上广告大约是3000,我感觉web层的并发越来越不是一个问题;现在由于服务器的强悍,再加上Nginx作web的高抗并发性,web层的并发并不是什么大问题;相反而言,文件服务器层和数据库层的压力是越来越大了,单NFS不可能胜任目前的工作,现在好的方案是moosefs和DRDB+Heartbeat+NFS;而我喜欢的Mysql服务器,成熟的应用方案还是主从,如果压力过大,我不得不选择oracle的RAC双机方案。

  十六、现在受张宴的影响,大家都去玩Nginx了(尤其是作web),其实在服务器性能优异,内存足够的情况下,Apache的抗并发能力并不弱,整个网站的瓶颈应该还是在数据库方面;我建议可以双方面了解Apache和Nginx,前端用Nginx作负载均衡,后端用Apache作web,效果也是相当的好。

  十七、Heartbeat的脑裂问题没有想象中那么严重,在线上环境可以考虑使用;DRDB+Heartbeat算是成熟的应用了,建议掌握。我在相当多的场合用此组合来替代EMC共享存储,毕竟30万的价格并不是每个客户都愿意接受的。

  十八、无论设计的方案是多么的成熟,还是建议要配置Nagios监控机来实时监控我们的服务器情况;邮件和短信报警都可以开启,毕竟手机可以随身携带嘛;有条件的还可以购买专门的商业扫描网站服务,它会每隔一分钟扫描你的网站,如果发现没有alive会向你的邮件发警告信息或直接电话联系。

  十九、至少网站的安全性问题,我建议用硬件防火墙,比较推荐的是华赛三层防火墙+天泰web防火墙,DDOS的安全防护一定要到位;Linux服务器本身的iptables和SElinux均可关闭,当然,端口开放越少越好。

分享到:
评论

相关推荐

    Windows Server 2019 负载均衡(NLB)安装部署-图文

    做负载采用多台服务器组成,对外虚拟出一个IP进行通信。日常业务开展中不适合部署数据库,且对存储有一定的要求,推荐以Nas存储为主,分布式存储、统一存储都可以;而San存储做负载可用性不太大,故不推荐。

    Array_负载均衡(APV系列)产品详细介绍

    1.4. 全局服务负载分担(GSLB) 19 1.4.1动态Proximity系统 (DPS) 22 1.4.2 Full-DNS 23 1.5. Webwall 功能 24 1.6. 带宽管理(QOS) 24 1.7.集群( Cluster)功能 26 二、Array APV解决方案优势 26 2.1. 降低成本,...

    LTE-MLB负载均衡功能介绍.docx编程资料

    LTE-MLB负载均衡功能介绍.docx

    F5负载均衡简易运维手册

    目录 3.1.1、配置Poolmember 2 延伸:不同poolmember采用不同健康检查 3 3.1.2、配置VS 4 3.1.3、自定义健康检查 5 3.1.4、自定义fasltL4参数 6 ...3.1.13、查看服务器会话连接数 19 3.1.14、f5抓包 19 3.1

    nlb负载均衡架设教程

    配置完的网路负载平衡如下图,在这里说一下,并不是配置完成,网络负载平衡就会马上生效,他会有一个配置的过程,真正完成配置的状态如下图 下面我们来测试一下 找一台客户机:长ping 192.168.10.100 然后,我们...

    [Oracle] RAC 之 - 负载均衡深入解析

    负载均衡是指把负载平均分配到集群中的各个节点,从而提高整体性能。Oracle RAC提供两种方式实现负载均衡,以下就为大家详细介绍一下,需要的朋友可以参考下

    网络安全员题库答案解析.xls

    11 关于负载均衡下面说法错误的是( ) 单个重负载的运算分担到多台节点设备上做并行处理,每个节点设备处理结束后,将结果汇总,返回给用户,系统处理能力得到大幅度提高 大量的并发访问或数据流量分担到多台节点...

    Linux安装Oracle19C详细步骤

    文档内记载了CentOS7和Redhat7系统安装Oracle19C的详细步骤,包括RPM包的安装说明

    解决linux下oracle中文乱码问题,添加中文支持

    解决linux下oracle中文乱码问题,添加中文支持解决linux下oracle中文乱码问题,添加中文支持解决linux下oracle中文乱码问题,添加中文支持解决linux下oracle中文乱码问题,添加中文支持解决linux下oracle中文乱码...

    Linux下Oracle Client的安装

    Linux下Oracle Client的安装

    Oracle Database 19c (LINUX.X64_193000_db_home.part1.rar)

    Oracle Database 19c 是最新的长期版本,支持期限最长...LINUX.X64_193000_db_home文件分割成 三个 压缩包,必须集齐 三个 文件后才能一起解压一起使用: Oracle Database 19c (LINUX.X64_193000_db_home.part3.rar) ...

    Linux下Shell编程从入门到精通视频教程.txt

    20、Shell编程之学习心得分享及拓展.mp4 19、Shell编程之实战WEB界面展示二.mp4 18、Shell编程之实战WEB界面展示一.mp4 17、Shell编程之磁盘监控报警脚本.mp4 16、自动收集服务器硬件系统信息脚本.mp4 15、Shell批量...

    linux上离线安装oracle数据库19c

    1、文件准备 需要准备文件: a、compat-libstdc++-33-3.2.3-72.el7.x86_64.rpm ... 前两个可以在这里下载,第三个可在oracle官网下载 2、预安装 (1)rpm -ivh compat-libstdc++-33-3.2.3-72.el7.x86_64.rpm

    Oracle Database 19c (LINUX.X64-193000-client.part1.rar)

    Oracle Database 19c (LINUX.X64_193000_client.zip) 适用于Linux系统,文件分割成 两个 压缩包,必须集齐 两个 文件后才能一起解压一起使用: Oracle Database 19c (LINUX.X64_193000_client.part1.rar) ...

    PHP特级课:LVS负载均衡:搜索引擎.docx

    第 2 章: LVS网络负载均衡 第5集 网络数据转发原理 50分钟 第6集 Lvs Nat和ip-tun模式 71分钟 第7集 Lvs Dr模式和Lvs实验测试 84分钟 第 3 章: Squid代理缓存服务器 第8集 Squid代理服务器原理 47分钟 第9集 ...

    openjdk 19 linux版本 解压安装包

    openjdk 19 linux版本 解压安装包

    Linux中文手册

    18.关于Linux下编写和编译程序的几个问题 19.基于Linux的学习方法 20.在Linux下访问MS SQL Server数据库 21.安装X windows for Intel 810 22.Web Database Step by Step(english) 23.Web Database Step by Step...

    Linux7.6+Oracle 19c+文件系统单机安装.pdf

    熟练掌握在VMware下安装Linux7.6环境 熟练掌握在Linux环境下安装Oracle19c数据库 熟练掌握Linux环境下对Oracle数据库的运维操作

    OGG安装包 linux下

    ogg安装包 linux下的,用于 Oracle数据库之间进行数据同步。

    Linux下安装与卸载oracle(全)

    该文档详细的介绍了在linux系统下安装与卸载oracle软件,以及数据库的建库,创建监听服务。对每一步的操作都进行了截图。

Global site tag (gtag.js) - Google Analytics