1.负载均衡
当一台服务器的访问量越大时,服务器的压力就会越大。如果访问压力超过了它自己的规定,它就会崩溃。为了避免这样的事情发生,还有负载均衡来分担负载。服务器压力。那么负载均衡到底是什么?通俗地说,我们有几十台、上百台甚至更多台服务器,这些服务器组成了一个服务器集群。当客户端访问某个设备的数据时,发送的第一个请求会发送到中间服务器,中间服务器会均匀地分发给服务器集群中的其他服务器。因此,用户发送的每一个请求都会保证服务器集群中的设备均匀分布,从而分担服务器的压力,从而维护服务器集群。排序性能最佳,可以避免崩溃。
二、Nginx负载均衡的作用三、Nginx负载均衡的几种策略
1)轮询(默认)客户端发出的每个请求都会按时间顺序一一分配到不同的后端服务器。如果后端服务器宕机,可以自动排除。
upstream backserver { server 192.168.1.10; server 192.168.1.11; }
2)
代表权重,默认为1。权重越高,分配的客户端越多。指定轮询概率,该概率与访问率成正比。当后端服务器性能不均匀时使用。也就是说:哪个连接数少,就会被路由到它。
upstream backserver { server 192.168.1.10 weight=3; server 192.168.1.11 weight=7;}
3)
每个请求根据访问IP的哈希结果进行分配,每个访问者固定访问一个后端服务器,这样就可以解决问题。
upstream backserver { ip_hash; server 192.168.1.10:80; server 192.168.1.11:88; }
4)fair(第三方)根据后端服务器的响应时间分配请求,优先考虑响应时间短的请求。
upstream backserver { server server1; server server2; fair; }
5)(第三方)根据访问的URL的哈希结果分配请求,使每个URL都定向到同一个后端服务器。当后端服务器有缓存时更有效。
upstream backserver { server squid1:3128; server squid2:3128; hash $request_uri; hash_method crc32; }
推荐大家看看【免费】的Linux C/C++高级开发架构课程:
C/C++ Linux服务器开发/后端架构师【灵盛教育】-学习视频教程-腾讯课堂
课程内容对接腾讯C++后端开发T8级技术栈。侧重于数据结构与算法、数据库、网络、操作系统、网络编程、分布式架构等方面的全面提升,值得学习~
免费收集信息地址:重定向
4、常见的负载均衡方案有哪些?
将下图拆成常见的互联网分布式架构,主要分为:
因此可以看出,从客户端发出的请求到最终的数据层,上游都可以访问下游,实现最终的均匀分布。第一层:客户端层到反向代理层的负载均衡。从客户端层到反向代理层的负载均衡是通过DNS轮询实现的。 DNS服务器上为对应的域名配置了多个IP。当客户端的请求到达 DNS 服务器时,它会轮询并返回配置了对应域名的 IP,保证解析出的 IP 必须与 Nginx 服务器的 IP 相同,以便请求分发Nginx 服务器的负载也会得到平衡。
第二层:从反向代理层到服务器站点层的负载均衡。到服务器站点层的反向代理层是通过Nginx实现的。修改nginx.conf配置文件,实现多种负载均衡策略; PS:这里我们使用nginx。 conf配置文件,主要实现方法可以参考上面:三、Nginx负载均衡的几种方法(主要包括:轮询、公平(第三方)、(第三方)相关说明)
第三层:从服务器站点层到服务层的负载均衡。通过服务连接池实现从服务器站点层到服务层的负载均衡。上游连接池会与下游服务建立多个连接,每个请求都会随机选择一个连接。访问下游服务。
第四层:从服务层到数据层。当服务层到数据层时,当数据量较大时,数据层(db、cache)会涉及到数据的水平切分,因此数据层的负载均衡会更加复杂。 ,分为数据平衡和请求平衡。
常见的水平分割方法有两种:第一种:根据范围进行水平分割
每个数据服务存储一定范围的数据
该解决方案的好处是:
该方案的缺点是:请求的负载不一定均衡,新用户会比老用户更活跃,大范围的服务请求压力会更大。第二种:基于id hash的水平切分
每个数据服务存储按某个键值哈希的部分数据。
该解决方案的好处是:
该解决方案的缺点是:
5.Nginx负载均衡配置示例
1、要达到效果,在浏览器地址栏输入,负载均衡效果会平均到端口号8080和8081。 2、准备工作 1)准备两台服务器,一台服务器是8080,另一台服务器是8081。 2)在两台服务器的目录下创建一个名为abc的文件夹,并在abc文件夹下创建页面.html用于测试。上一篇文章中我们为两个服务创建了8080和8081,所以这里不需要创建,分别检查8080和8081服务的目录下是否有测试页面文件。如果没有,你可以自己创建它。
# cat /root/tomcat8080/apache-tomcat-7.0.70/webapps/abc/20200320.htmlwelcome to tomcat 8080!
# cd /root/tomcat8081/apache-tomcat-7.0.70/webapps/# mkdir abc# cd abc/# vim 20200320.htmlwelcome to tomcat 8081!
切换到/root//--7.0.70/bin/目录,启动8081服务。
# ./startup.sh Using CATALINA_BASE: /root/tomcat8081/apache-tomcat-7.0.70Using CATALINA_HOME: /root/tomcat8081/apache-tomcat-7.0.70Using CATALINA_TMPDIR: /root/tomcat8081/apache-tomcat-7.0.70/tempUsing JRE_HOME: /usrUsing CLASSPATH: /root/tomcat8081/apache-tomcat-7.0.70/bin/bootstrap.jar:/root/tomcat8081/apache-tomcat-7.0.70/bin/tomcat-juli.jarTomcat started.
测试验证:分别在客户端浏览器中test:和:::8081/abc/.html进行验证。
3)在Nginx配置文件中配置负载均衡;添加http模块下的配置,由原来的改为Nginx服务器地址,添加;以下;
# vim /usr/local/nginx/conf/nginx.conf 17 http { 18 ...... 34 upstream myserver { 35 server 192.168.1.10:8080; 36 server 192.168.1.10:8081; 37 } 38 39 server { 40 listen 80; 41 server_name 192.168.1.10; 42 43 #charset koi8-r; 44 45 #access_log logs/host.access.log main; 46 47 location / { 48 proxy_pass http://myserver; 49 root html; 50 index index.html index.htm; 51 } 52 ......
配置Nginx文件的负载均衡并重启Nginx服务后,出现以下问题:
# ./nginx -s stopnginx: [warn] conflicting server name "192.168.1.10" on 0.0.0.0:80, ignored# ./nginx
表示该名称被重复绑定,该警告不会影响服务器运行。而且,这种重复绑定意味着当前运行的 Nginx 服务和将要加载的新配置之间存在重复,因此这个警告实际上是不必要的。测试验证时,在客户端浏览器中输入:,不断刷新,观察变化。这是将客户端发出的请求分配给不同的服务,这就是所谓的负载均衡的效果。
负载平衡所实现的效果摘要。本文介绍什么是负载均衡、Nginx负载均衡的作用、几种Nginx负载均衡策略、常见负载均衡方案、Nginx负载均衡配置示例等;负载均衡是分布传统系统架构设计中必须考虑的因素之一,通常是指:将请求/数据均匀地分布到多个操作单元上执行。关键是统一:
扫一扫在手机端查看
我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求,请立即点击咨询我们或拨打咨询热线: 13761152229,我们会详细为你一一解答你心中的疑难。