大型网站的负载均衡器、db proxy和db

news/2024/5/10 8:26:49/文章来源:https://unclewang.blog.csdn.net/article/details/80625793

大型网站的负载均衡器、db proxy和db

本文主要分析网站后台架构中的负载均衡器,企业常用的硬件负载均衡器软件负载均衡器、数据库代理服务器和数据库。

1.1 负载均衡

在大型网站部署中,负载均衡至少有三层部署。第一层为web server或者缓存代理之上的负载均衡,第二层为数据库之上的负载均衡,第三层为存储设备之上的负载均衡。

在第一层部署中,最常使用的是硬件负载均衡器有F5 BIG-IP、Citrix NetScaler、Radware、Cisco CSS、Foundry等产品。这些产品价格不菲,高达几十万人民币。在中国大陆,采用F5Network公司的BIG-IP负载均衡交换机的网站有新浪网、雅虎、百度、搜狐、凤凰网、央视国际、中华英才网、猫扑、畅游等。之前淘宝采用 NetScaler作为其硬件负载均衡器。后来用软件负载均衡器LVS和HAproxy混合使用来代替硬件负载均衡器。硬件负载均衡器可以提供OSI参考模型的第四/七层进行负载均衡。在第七层实现负载均衡的原理是,通过检查流经的HTTP报头,根据报头内的信息来执行负载均衡任务。在第四层(网络层)实现负载均衡的DR模式的原理是,通过更改请求包的目的MAC地址来进行负载均衡。

在第一层部署中,最常用的软件负载均衡器为LVS(LinuxVirtual Server)和HAproxy。其中LVS采用基于IP负载均衡技术和基于内容请求分发技术。最常用的LVS负载均衡技术为DR负载均衡。

在第二层部署中,最常用的为mysql-proxy(后端部署必须为MySQL数据库),该代理服务器可以监测、分析或改变客户端的通信。最常用途为负载均衡,读写分离等。

在第三层部署中,最常用的存储设备都要做RAID,其中RAID0便为最基本的存储层的负载均衡。RAID0通过分带技术,将数据分割,然后并行的读写于各个磁盘上。这样实现底层存储一级的负载均衡。

 

1.2 LVS软件负载均衡器

LVS(LinuxVirtual Server)是由章文嵩博士主导开发的一款开源软件,可以实现Linux平台下的基于网络层的负载均衡软件。典型的基本架构图如图6-2-1所示。

           

                                                                            图6-2-1

LVS集群采用IP负载均衡技术和基于内容请求分发技术。

如图6-2-1所示,LVS集群采用基于IP负载均衡技术和基于内容请求分发技术。当客户端有请求时,首先将请求包传送到Load Balance,然后Load Balance从后面的Real Servers中按照一定的算法策略选取一台Real Server,比如Real Server1,然后把请求包发送给Real Server1进行处理。对所有用户而言,面向用户的服务器端IP地址,只有一台,称之为VirtualIP Address。

 

1.2.1 LVS集群中实现的三种IP负载均衡技术

VS/NAT、 VS/TUN 和VS/DR技术是LVS集群中实现的三种IP负载均衡技术。

1.2.1.1 VS/NAT技术

VS/NAT(VirtualServer via Network Address Translation)技术,主要通过网络地址转换,将一组服务器构成一个高性能的、高可用的虚拟服务器。NAT的工作原理是当内部网络中的主机要访问Internet或被Internet访问时,就需要采用网络地址转换NAT,将内部地址转化为Internet上可用的外部地址。NAT的工作原理是报文头(目标地址、源地址和端口等)被正确改写后,客户端相信他们连接到了一个IP地址,而不同的IP地址服务器组也认为他们与客户直接相连的。由此,可以用NAT方法将不同IP地址的并行网络服务变成一个IP地址上的虚拟服务。VS/NAT的体系结构如图6-2-1-1所示。

                       

                                                                                                           图6-2-1-1

客户端访问服务器的请求包和响应包变化情况如下所示:

访问Web服务的报文可能有以下的源地址和目标地址:

SOURCE

202.100.1.2:3456

DEST

202.103.106.5:80

调度器从调度列表中选出一台服务器,例如是172.16.0.3:8000。该报文会被改写为如下地址,并将它发送给选出的服务器。

SOURCE

202.100.1.2:3456

DEST

172.16.0.3:8000

从服务器返回到调度器的响应报文如下:

SOURCE

172.16.0.3:8000

DEST

202.100.1.2:3456

响应报文的源地址会被改写为虚拟服务的地址,再将报文发送给客户:

SOURCE

202.103.106.5:80

DEST

202.100.1.2:3456

这样,客户认为是从202.103.106.5:80服务得到正确的响应,而不会知道该请求是服务器172.16.0.2还是服务器172.16.0.3处理的。

1.2.1.2 VS/TUN技术

VS/TUN 的工作原理:它的连接调度和管理与VS/NAT中的一样,只是它的报文转发方法不同。调度器根据各个服务器的负载情况,动态地选择一台服务器,将请求报文封装在另一个IP报文中,再将封装后的IP报文转发给选出的服务器;服务器收到报文后,先将报文解封获得原来目标地址为VIP的报文,服务器发现VIP地址被配置在本地的IP隧道设备上,所以就处理这个请求,然后根据路由表将响应报文直接返回给客户。如图6-2-1-2所示。

                     

                                                                                      图6-2-1-2

1.2.1.3 VS/DR技术

在VS/DR中,调度器根据各个服务器的负载情况,动态地选择一台服务器,不修改也不封装IP报文,而是将数据帧的MAC地址改为选出服务器的MAC地址,再将修改后的数据帧在与服务器组的局域网上发送。因为数据帧的MAC地址是选出的服务器,所以服务器肯定可以收到这个数据帧,从中可以获得该IP报文。当服务器发现报文的目标地址VIP是在本地的网络设备上,服务器处理这个报文,然后根据路由表将响应报文直接返回给客户。如图6-2-1-3所示。

                   

                                                                                  图6-2-1-3

 

1.2.1.4 LVS的调度算法

前面几节,介绍了LVS的三种基于IP的负载均衡技术,下面简单介绍一下调度算法。调度算法的目的是解决如何合理有效的从LVS后端的RealServers中,选择一个RealServer来对请求包进行处理。在整个LVS项目中,共给出八种调度算法,主要有:

(1)轮询调度。主要指按顺序从RealServers中选择一台RealServers。

(2) 加权轮叫调度。给Real Servers设置一定权值,进行调度。

(3)最小连接调度。按照RealServers的连接情况进行调度。

(4)加权最小连接。根据设置的权值和现有的连接数进行调度。

(5)基于局部性的最小连接。主要用于增大Cache命中。

(6)代复制的基于局部性的最小连接。

(7)目标地址散列调度。

(8)源地址散列调度。

在上述八种调度算法中,最常用的调度算法是轮询调度。

 

1.3 db proxy

在大型互联网站的数据库部署中,部署最多的数据库为MySQL。随着MySQL中Innodb存储引擎对事物的支持,MySQL在互联网公司部署中,应用量越来越多。典型应用MySQL的公司有Google、Baidu、Taobao等大型互联网公司。MySQL的优势在于其高扩展性和价格优势等。实际上,MySQL可以免费应用于企业级的部署中。

在MySQL复制方式部署中,有两种部署方式:同步复制和异步复制。同步复制采用NDB 存储引擎,异步复制需要使用mysql-proxy结合master-slave实现。

异步复制主要为了解决读写分离的问题。因为用户对网站的访问有读操作多,写操作少的特点。甚至像taobao.com这样的网站读写比例高达10:1,所以采用MySQL-Proxy结合主从异步复制实现读写分离是非常重要的增快访问速度的方法。这样如果有更高的用户访问需求,通过增加slave机器,不会对现有系统提供的服务产生影响而实现很好的、很灵活的业务扩展。

1.3.1 mysql-proxy

mysql-proxy是一个MySQL的代理服务器,用户的请求先发向mysql-proxy,然后mysql-proxy对用户的数据包进行分析,从下一层的mysql 数据库中选择一台数据库,将用户的请求包交给mysql处理。

首先MySQL Proxy 以服务器的身份接受客户端的请求,根据相应配置对这些请求进行分析处理,然后以客户端的身份转发给相应的后端数据库服务器,再接受服务器的信息,然后返回给客户端。所以MySQL Proxy需要同时实现客户端和服务器的协议。由于要对客户端发送过来的SQL语句进行分析,还需要包含一个SQL解析器。MySQL Proxy通过使用lua脚本,来实现复杂的连接控制和过滤,从而实现读写分离和负载平衡。所以部署MySQL-Proxy需要安装运行Lua语言的环境。典型的MySQL-Proxy应用为实现读写分离,如图6-3-1所示。

                

                                                                                   图6-3-1

 

1.3.2 MySQL主从复制(Master-Slave Replication)

MySQL主从复制(Master-Slave Replication)是通过设置在Master MySQL上的binlog(使其处于打开状态),Slave MySQL上通过一个I/O线程从Master MySQL上读取binlog,然后传输到Slave MySQL的中继日志中,然后Slave MySQL的SQL线程从中继日志中读取中继日志,然后应用到Slave MySQL的数据库中。这样实现了数据库的复制功能。原理如图6-3-2所示:

            

                                                            图6-3-2

MySQL主从复制的作用如下:

(1)    可以作为一种备份机制。

(2)    可以用来做读写分离。

1.3.3 MySQL主从复制结合MySQL Proxy实现读写分离

通过使用MySQL-Proxy来作为代理服务器,配置MySQL Proxy,将所有的写操作,分流到master MySQL上,所有的读操作分流到slave MySQLs。      

这样就实现了读写分离。如果有新的访问需求,只需添加slave MySQL机器来解决问题。所以这样的结构扩展能力非常好。如图6-3-3所示。

                    

                                                                                       图6-3-3

 

1.4 本文小结

本文主要论述了负载均衡在大型网站后台架构中的应用。主要分析了应用层的软件负载均衡器LVS的三种负载均衡算法,简单介绍了LVS的八种调度算法。详细分析了MySQL的主从复制和读写分离的实现机制。给出了高可用网站后台的部署中解决负载均衡的方案。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_722894.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

html5 bbs网站,分享一个优秀HTML5网站的开发思路

由于网站开发的工作原因,最近一直在学习HTML5语言。没事的时候,就喜欢到处搜罗优秀的网站来看,甚至调出它的源码来研究。几个月来,个人学到了很多,在这里也想和大家分享一下自己研究过的网站,并且会给大家分…

一个网管8年来运营网站的辛酸经历

一直以来,都想写点什么,但思绪有点混乱,不知从何下笔。这要源于2015年进入股市惨败直至17年投资生意失败,三年时间耗费了所有积蓄,还倒欠了一些外债,所以无心打理其他事情,今天整理了一下心情&a…

html制作一张学生信息表格,学生个人网页制作代码,制作一个很简单网页表单代码 _ 惠州SEO...

进入下一页吗var }var url\"next.html\";//正确后转到网址function go}if(o.}document.location.reload(url);}}请输入网址学生个人网页制作代码:将以上内容复制到记事本后学生个人网页制作代码,另存为\"xxx.html\"对回答的内容有问…

大型网站背后的高性能系统架构设计

2019独角兽企业重金招聘Python工程师标准>>> 1. 性能测试 1.1. 性能指标 网站性能测试的主要指标有: 响应时间 - 响应时间(RT)是指从客户端发一个请求开始计时,到客户端接收到从服务器端返回的响应结果结束所经历的时间,响应时间由…

有哪些网站是django开发的_商城网站建设的具体开发流程有哪些

商城网站建设可以改变一家企业的营销模式,一些传统的行业在做着线下产品的销售,而有了商城之后就可以做网上销售,不过商城网站的开发比普通网站开发的难度更大,所以大家一定要认真的去了解那么商城网站建设的具体开发流程有哪些&a…

Java web speach api_HTML5 Web Speech API,让网站更有趣

Web API 变得越来越丰富,其中一个值得注意的是Web Speech API。传统的网站只能“说”,这个API的出现,让网站能“倾听”用户。这个功能已经开放了一系列的用法,非常棒。在这篇文章中,我们将看一下这项技术和建议的用法&…

seo模拟点击软件_SEO点击软件是否对网站排名有帮助

SEO点击软件是否对网站排名有帮助我们在搜索引擎搜索东西时候都是以某个关键词进行搜索,然后再更具该关键词的长尾词进行详细查找。在搜索时候我们会留意网站的展现数量,如某某网站展现量多,某某网站展现少,这些都会在我们潜意识里…

php页面怎么改造mip,代码适配的网站如何进行mip改造

最近一个小站需要进行mip改造,网站是代码适配的网站。就是电脑访问返回电脑端的页面,手机端访问返回手机端的页面。网站的url是相同的。改造后在百度提供的在线验证工具中进行了测试,全部通过测试。然后在站长后台进行了提交。提交后大概等了…

Python爬虫实战之爬取网站全部图片(二)

通过python 来爬取网站内所有的图片到本地 第三篇是动态获取参数构造图片地址实现下载图片 传送门:https://blog.csdn.net/qq_33958297/article/details/82316019 这篇文章的目的是因为上一个文章里的地址已经无法访问了 考虑到可能有的新手没有办法去实验&…

如何在微软Azure上搭建个人博客网站

手动配置服务器对很多读者来说可能并不是一件容易的事。好在在Azure中,微软已经就搭建WordPress个人博客给出了一站式的解决方案,对于零基础读者来说,在Azure上搭建WordPress即意味着你无需经历繁琐的服务器配置过程。本期的教程,…

CentOS7搭建DVWA网站

Lamp架构搭建DVWA 搭建Lamp请看:https://blog.csdn.net/qq_41709494/article/details/89430834 1.下载DVWA地址:http://www.dvwa.co.uk/ 2. 安装Lamp的所有包 [rootlocalhost ~]# yum install php php-mysql php-gd httpd mariadb mariadb-server -…

记一次网站优化---图片压缩与移动端画面缩放问题

一、背景 前段时间被人吐槽自己负责的官网访问慢 其实自己平时访问的时候是有意识到的,但是没有特别放在心上 在工作的列表中优先级排的不高 最近空闲了下来,使用性能分析工具审计了一遍网站的各项指标 发现了比较严重的问题 二、问题 1、页面内容空白时…

可以发外链的网站_外链是什么意思?发外链的技巧【经验分享.视频】

外链是什么意思?外链是指网站的外链,是指一个网站所拥有的站外推广链接。把自己的网址发布到别人的网站上,这样的链接叫做外链。(可发文章的平台,如58同城、赶集网、百姓网、等外链平台)比如我在百姓网发了…

插码统计点击次数_码迷SEO内参(15) 百度快排原理及百度第三代点击排名统计系统简析...

这是码迷SEO的第42篇原创今天讲百度第三代点击排名统计系统,顺带把百度快排深度原理也刨析一下。自从19年10月份以来,百度对快排打击丝毫没有手软的迹象,码迷发现凡是采集快排模式的网站至今无一幸免,70多天了也没有起色的现象。可…

php动态保存文件名_利用百度地图写个跑腿接单的网站菜鸟教程零基础php为主

忙了几天,终于闲下来了,接着上一篇写。上一篇说怎样在手机上搭建服务器,本篇写创建hello world,第一个页面。其实看过我上几篇教程的都知道大概怎样创建了,就是一页面法。一个主页面,其他页面用函数表示&am…

网站被挂了很多链接 源码里边看不到_网站优化的50个技巧

这次写的《网站优化50个技巧》是为了让那些没有时间深究SEO技术但又想一窥SEO真相的朋友们,希望看了这些你更懂SEO!这些经验和盘托出,希望能够帮助到朋友们!这些规则就像是交通指示灯一样,按照这些规则走的&#xff0c…

多线程导出excel_seo必备网站分析工具,关键词百度搜索结果查询导出源码

seo必备网站分析工具,关键词百度搜索结果查询导出源码两个简单的版本,关于百度搜索结果的采集抓取,可以获取到竞争对手的网站,加以分析和研究,只需输入关键词和搜索页码,即可完成对于竞争对手的获取和研究&…

html5网格布局建站,CSS网格布局的示例代码

本文介绍了CSS网格布局的示例代码,分享给大家,具体如下:浏览器兼容性可以看出CSS网格布局从Safari 10.1, Firefox 52, Chrome 60,Edge 15开始受到支持。网格布局页面基本元素:OneTwoThreeFourFive样式:.wra…

访问不了_浏览器访问不了网站??

话说,总有一些时候就是见鬼了,电脑死活上不去网~最神的操作是“重启”,十有八九会解决滴。but,如果遇到你的电脑QQ啥的还能上网,唯独浏览器(部分以前可以上的去的网站)不好使,那么你应该会百度,…

iis html asp,IIS 部署 ASP.NET 网站

1. 安装 IIS从控制面板中选择“程序和功能”,选择“打开或关闭 Windows 功能”:image_1ceiq3spb1v20r806r61huh2an9.png-156.3kB将 IIS 的选项全部勾选,需要展开子级目录一个一个点,最后的状态需要为勾选状态:image_1c…