我个人的分布式集群问题集锦,nginx/lvs/dns/cdn(★firecat推荐★)

简介: 我个人的分布式集群问题集锦,nginx/lvs/dns/cdn(★firecat推荐★)

image.png

1、问:我有一个疑问,使用了nginx或者haproxy真的能提升性能吗?那nginx或haproxy本身服务器岂不是压力山大,所有数据都要经过它转发。


答:它不需要处理,仅仅是转发。但是nginx不行,性能比较好的软件负载均衡是LVS。如果软件性能那么好,F5就不会卖那么贵了。还有,4层负载,DR模式回包不用经过负载,这在下行流量大的业务场景里性能不错了。


2、nginx+web服务器可以实现负载均衡,但是一台nginx也是有限的,如果并非量高的话,在他的上层如何实现负载均衡?

答:(1)Nginx前端加LVS集群或者是DNS负载都可以。DNS轮询:通过在DNS-server上对一个域名设置多个ip解析,来扩充web-server性能及实施负载均衡的技术。


(2)Keepalived是解决单点故障的,LVS是集群的,如果仅仅解决单点故障的话,用nginx+keepalived就够了,但是如果Nginx需要集群的话,nginx+lvs+keepalived才可行。

(3)对于一般应用来说,有Nginx就可以了。但Nginx一般用于七层负载均衡,其吞吐量是有一定限制的。为了提升整体吞吐量,会在DNS和Nginx之间引入接入层,如使用LVS(软件负载均衡器)、F5(硬负载均衡器)可以做四层负载均衡,即首先DNS解析到LVS/F5,然后LVS/F5转发给Nginx,再由Nginx转发给后端Real Server。

image.png



 对于一般业务开发人员来说,我们只需要关心到Nginx层面就够了,LVS/F5一般由系统/运维工程师来维护。Nginx目前提供了HTTP(ngx_http_upstream_module)七层负载均衡,而1.9.0版本也开始支持TCP(ngx_stream_upstream_module)四层负载均衡。

(4)这方面的资料,基本都是一块一块不完整的。我大概跟你说一个基本架构:

DNS服务器,如果资金充足的话,建议使用BGP机房,2-3台DNS服务器均衡,通常使用bind软件。如果资金紧的话,可以购买专业的DNS服务,比如国内的dnspod。

CDN服务器,一开始如果想省事,可以买专业公司的服务,如chinacache,但随着发展成本会越来越高。自建的话,可能分别搭建,放电信、联通、移动等不同机房的服务器,通过DNS做动态解析。超大网站的话,可以用Squid,普通中至大型用Nginx,内部玩玩用Varnish。

前端均衡,资金充足的话,可以使用硬件设备,几十万一台。自已有技术队伍的话,就用Nginx/Haproxy+Keepalived等自已组建前端。均衡的方式都比较灵活,随机、权重、IP、URL都有。

同步的问题要看同步什么东西,普通的可以实时文件同步。但数据库的话,要看具体类型选择同步方式了。

后端的应用服务器和数据库集群,要看流量规划了。

多台Nginx实现均衡,有几种方法:

a、每台Nginx都有公网地址,在域名处设置同个域名多个指向,最简单实现轮洵。但故障切负会慢一点。

b、一台公网Nginx通过upstream功能,轮洵、IP、url多方式分发到内网多台nginx。但公网的nginx如果Down机的话,内网全断。

c、一对公网Nginx加三个公网IP,通过Keepalive实现高可用,再upstream到内网。

d、一台硬件均衡服务器在前端,再通过硬件均衡到内容的其它服务器。

你所说的那个假如,可以通过 b 、c、 d的方法实现。




3、既然lvs可以实现负载均衡,那还要nginx干嘛?

答:适用的场景不同,lvs是linux内核的功能,等于在操作系统层面做的负载。nginx只是一个应用程序,相当于业务系统的一个前置负载。nginx和haproxy的处理速度都远不及lvs,因为他们是工作在用户空间的,而lvs是工作在内核空间的。如果仅仅lvs能够满足你的需求,确实可以不要nginx,但是lvs配置难度比nginx大多了。

Nginx负载均衡和LVS负载均衡的比较分析




4、DNS负载怎么实现?自己写代码实现?还是找第三方?


答:DNS负载均衡技术的实现原理是在DNS服务器中为同一个主机名配置多个IP地址,在应答DNS查询时,DNS服务器对每个查询将以DNS文件中主机记录的IP地址按顺序返回不同的解析结果,将客户端的访问引导到不同的机器上去,使得不同的客户端访问不同的服务器,从而达到负载均衡的目的。

说白了,DNS负载就是同个域名绑定多个ip,同个域名,多个指向。比如:你在联通网络访问的百度,和你在电信网络访问的百度,肯定不是同个服务器。

第三方的话,你随便找个CDN或服务商都有这个服务,充钱就好了!自己做还费钱,10块钱就能搞定!


5、如果是DNS或者CDN的话,建多个机房,势必有多个机房数据同步的问题。 有什么这方面的好的资料吗?

答:?


6、nginx作为四层负载时,它与client,上游服务器都是维持tcp长连接吗?是否client每来一个,nginx就分别与client和上游连接一次?两边连接数目相同?那这样,nginx主动连接上游岂不是会有tcp端口数的限制,65535?

答:这个看配置,默认是随机分发,也是真正的负载均衡,所以要用共享session。会话都是短连接,如果请求一次连接一次,1:1这样资源太浪费。具体要看 nginx连接池的概念,有短连接和长连接之说。

--好像不对。我实测用client向nginx服务器发起100个tcp连接,nginx也会相应与上游real server建立100个tcp连接。另外,发起1万个,2万个和4万个,结论一致。




7、lvs集群和dns哪个好?都支持无限数目扩容吗?

答:这个不能说哪个好,得看你们架构。还有不要想到无限扩展,任何架构达到一定量后,再扩展就性能反而不好。集群并不是越大性能就越好,最后解决性能的都得靠架构。




8、网络安全


答:无论设计的方案是多么的成熟,还是建议要配置Nagios监控机来实时监控我们的服务器情况;邮件和短信报警都可以开启,毕竟手机可以随身携带嘛;有条件的还可以购买专门的商业扫描网站服务,它会每隔一分钟扫描你的网站,如果发现没有alive会向你的邮件发警告信息或直接电话联系。至少网站的安全性问题,我建议用硬件防火墙,比较推荐的是华赛三层防火墙+天泰web防火墙,DDOS的安全防护一定要到位;Linux服务器本身的iptables和SElinux均可关闭,当然,端口开放越少越好。




---


https://www.haproxy.com/


http://nginx.org/


http://www.linuxvirtualserver.org/


http://www.keepalived.org/


相关文章
|
10月前
|
存储 负载均衡 NoSQL
【赵渝强老师】Redis Cluster分布式集群
Redis Cluster是Redis的分布式存储解决方案,通过哈希槽(slot)实现数据分片,支持水平扩展,具备高可用性和负载均衡能力,适用于大规模数据场景。
702 2
|
Cloud Native 关系型数据库 分布式数据库
登顶TPC-C|云原生数据库PolarDB技术揭秘:Limitless集群和分布式扩展篇
阿里云PolarDB云原生数据库在TPC-C基准测试中以20.55亿tpmC的成绩刷新世界纪录,展现卓越性能与性价比。其轻量版满足国产化需求,兼具高性能与低成本,适用于多种场景,推动数据库技术革新与发展。
|
Cloud Native 关系型数据库 分布式数据库
登顶TPC-C|云原生数据库PolarDB技术揭秘:Limitless集群和分布式扩展篇
云原生数据库PolarDB技术揭秘:Limitless集群和分布式扩展篇
|
存储 分布式计算 负载均衡
分布式计算模型和集群计算模型的区别
【10月更文挑战第18天】分布式计算模型和集群计算模型各有特点和优势,在实际应用中需要根据具体的需求和条件选择合适的计算架构模式,以达到最佳的计算效果和性能。
922 162
|
并行计算 PyTorch 算法框架/工具
融合AMD与NVIDIA GPU集群的MLOps:异构计算环境中的分布式训练架构实践
本文探讨了如何通过技术手段混合使用AMD与NVIDIA GPU集群以支持PyTorch分布式训练。面对CUDA与ROCm框架互操作性不足的问题,文章提出利用UCC和UCX等统一通信框架实现高效数据传输,并在异构Kubernetes集群中部署任务。通过解决轻度与强度异构环境下的挑战,如计算能力不平衡、内存容量差异及通信性能优化,文章展示了如何无需重构代码即可充分利用异构硬件资源。尽管存在RDMA验证不足、通信性能次优等局限性,但该方案为最大化GPU资源利用率、降低供应商锁定提供了可行路径。源代码已公开,供读者参考实践。
1399 3
融合AMD与NVIDIA GPU集群的MLOps:异构计算环境中的分布式训练架构实践
|
Java 应用服务中间件 Shell
Nginx+Keepalived+Tomcat 实现Web高可用集群
Nginx+Keepalived+Tomcat 实现Web高可用集群
527 0
|
Kubernetes 安全 应用服务中间件
IngressNightmare:Ingress Nginx 再曝5个安全漏洞,可接管你的 K8s 集群
是否还记得 2022 年 K8s Ingress Nginx 披露了的 3 个高危安全漏洞(CVE-2021-25745, CVE-2021-25746, CVE-2021-25748),并在那一年宣布停止接收新功能 PR,专注修复并提升稳定性。
|
存储 SpringCloudAlibaba Java
【SpringCloud Alibaba系列】一文全面解析Zookeeper安装、常用命令、JavaAPI操作、Watch事件监听、分布式锁、集群搭建、核心理论
一文全面解析Zookeeper安装、常用命令、JavaAPI操作、Watch事件监听、分布式锁、集群搭建、核心理论。
【SpringCloud Alibaba系列】一文全面解析Zookeeper安装、常用命令、JavaAPI操作、Watch事件监听、分布式锁、集群搭建、核心理论
|
分布式计算 Hadoop
Hadoop-27 ZooKeeper集群 集群配置启动 3台云服务器 myid集群 zoo.cfg多节点配置 分布式协调框架 Leader Follower Observer
Hadoop-27 ZooKeeper集群 集群配置启动 3台云服务器 myid集群 zoo.cfg多节点配置 分布式协调框架 Leader Follower Observer
359 1
|
分布式计算 Hadoop 网络安全
Hadoop-08-HDFS集群 基础知识 命令行上机实操 hadoop fs 分布式文件系统 读写原理 读流程与写流程 基本语法上传下载拷贝移动文件
Hadoop-08-HDFS集群 基础知识 命令行上机实操 hadoop fs 分布式文件系统 读写原理 读流程与写流程 基本语法上传下载拷贝移动文件
287 1

相关产品

  • 云解析DNS