热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Linux学习(第十四周)

第十四周学习内容:lvs和nginx第十四周作业:1、简述LVS调度方案及应用场景。      LVS的调度方案根据其调度时是否考虑服务器当前的负载情况可分为静态和动态。搭建环境,

第十四周学习内容:lvs和nginx

第十四周作业:

1、简述LVS调度方案及应用场景 。

      LVS的调度方案根据其调度时是否考虑服务器当前的负载情况可分为静态和动态。搭建环境,共三台主机,其中一台主机运行LVS作为调度器,另外两台作为RS。为了方便起见,模式就使用LVS-NAT,准备完毕后,访问RS主页情况如下。

      image.png

      静态,仅根据算法本身进行调度。所使用的调度规则有:RR(轮询),按顺序一个包一个主机的分配。

      image.png

      image.png

      WRR(加权轮询),在RR的基础上加上了权重的概念,权重大的被分配的多,权重小的被分配的少。

      image.png

      image.png

      SH(源哈希),不管什么用户都根据源地址将其绑定在某台主机上,当用户第一次请求时依然会以轮询的方式将其分配到某台主机,同时会将用户IP地址做哈希计算,将值与服务器的IP地址绑定记于一张哈希表中,以后该用户再访问时,就将被固定分配到那台主机上了。

      image.png

      image.png

      DH(目的哈希),原理和SH一样,只是将目标地址做哈希计算,并将其与服务器绑定,经常用于正向代理的情况,众多客户使用多台正向代理服务器访问外网,为了提高缓存命中率就将目标地址绑定在某台正向代理服务器上,效果显著。

      image.png

      image.png

      动态,根据后端服务器的负载状态进行分配,负载值被称为overhoad:LC(最少连接),overhoad=活动连接数*256+非活动连接数,负载值小的被分配。

      WLC(加权最少连接),overhoad=(活动*256+非活动)/权重,也是越小越容易被分配,这也是LVS默认的调度规则。

      SED(最短期望延迟),overhoad=(活动+1)*256/权重,已不在考虑费活动连接数,并且把0活动连接数的情况考虑进去了。

      NQ(不排队),SED的升级版,从SED的公式可以看出,有可能会出现负载值差距很大的情况。基于这个问题,NQ就是在SED的基础上,先以轮询的方式一个一个分配,然后再看overhead,尽量不要造成排队的情况。

      除此之外,还有两种动静结合的调度规则LBLC,把动态和DH相结合;LBLCR,带复制功能的LBLC,可以吧忙的服务器上的绑定移一部分到空闲服务器上。

      动态的调度规则不是很好测试。

2、详细描述nginx模块并举例说明。

      上一周的作业中已经介绍过了,nginx作为http服务的常用模块,这里写一下nginx作为反代所使用的模块。

      nginx的静态反代:利用了ngx_http_proxy_module模块。有许多配置指令,最基础的是proxy_pass,将其放在location中表示将此location匹配到的请求反代给后端服务器,在反代的过程中会转换其源目IP地址,所在在跨越网络的环境中也依然可以正常使用。搭建环境:两台主机,一台运行nginx作为反代服务器,一台运行httpd作为web服务器,要求所有对反代服务器的访问会被反代至web服务器。

      定义nginx配置文件,为了不产生冲突,换一个监听端口。表示所有对xiaomao2主机8080端口的访问,都会被反代至身后web服务器主机。

      image.png

      image.png

      再增加一台主机,提供.txt文件。通过配置文件,让反代服务器将.txt结尾的请求反代至这台新的服务器上。

      image.png

      image.png

      可以通过proxy_set_header命令修改发往后端主机的请求报文中的某项请求首部的值,约定俗成的两个可添加的首部为X-Real-IP,表示真正的用户主机IP地址和X-Forwarded-For表示转发主机的IP地址。

      image.png

      再在后端web服务器上,修改日志格式,使其能够记录X-Real-IP这个值。

      image.png

      真正的用户主机IP地址就被记录下来了。

      image.png

      可以通过proxy_cache定义缓存,在http配置段中使用proxy_cache_path定义缓存路径,并且要设置三级目录;keys_zone定义缓存名字和哈希表占内存大小;max_size定义缓存大小;inactive定义缓存项的非活动时间,被定义为非活动的缓存将被自动清除。在server配置段中使用proxy_cache加上缓存名字表示启用缓存;proxy_cache_key表示应用缓存的键,也就是遇到哪种报文使用缓存,后面可以跟$request_uri表示遇到请求报文调用缓存;proxy_cache_methods表示遇到哪种方法会调用缓存;proxy_cache_min_uses表示非活动时间最少活动次数。

      image.png

      image.png

      nginx的动态反代:nginx和httpd一样,自身只能处理静态资源,要响应动态请求需要借助工具,其无法像httpd那样把php做成模块,所以只能用反代的方式,把动态资源请求反代到fpm服务器。这要用到fastcgi模块,配置指令是fastcgi_pass。搭建环境,一台主机运行nginx作为反代服务器,一台主机运行php-fpm作为fpm服务器,并准备好一个php测试页。

      image.png

      image.png

      配置文件添加fastcgi_pass指令,将对.php资源的访问反代至fpm服务器;还有include fastcgi_params,这是个非常重要的配置文件,表示反代时要把部分参数传递给后端fpm服务器,此配置文件的大多数配置选项使用默认即可,个别要改的可单独列出,也可以直接在配置文件中修改,位置是/etc/nginx/fastcgi_params;必须改的一条是fastcgi_param SCRIPT_FILENAME+php文件所在路径。

      image.png

      image.png

      此配置即是使用nginx完成动静分离的操作。

      nginx的七层负载均衡:前面所说的是nginx的反代功能,真正要实现负载均衡,还要借助upstream模块。依靠定义upstream组,将多台服务器放入组中,这个组有组名、调度规则等,然后在使用反代命令时,后面跟上的是upstream组,而不是主机名,就可以实现负载均衡集群了。搭建环境:一台主机运行nginx作为反代服务器,两台主机作为web服务器,并做负载均衡集群。

      配置nginx配置文件

      image.png

      image.png

      在server配置命令后还可以添加指令:(1)weight:指明权重,默认为1,一旦配置了权重规则就自然变为wrr,否则就是rr;(2)max-conns:指明最大并发连接数;(3)max-fails和fail-timeout:用来做健康状态检测,表示失败几次和失败多久则判定其为故障不可用,默认为1此和10秒且开启;(4)backup:在组内其他主机都down掉时,由带有此选项的主机提供web服务,一般用作报错页面;(5)down:在做新版本发布时,要让集群中某台主机慢慢下线,可以把权重设为0,也可以用此选项。

      image.png

      image.png

      在upstream配置段中还可以添加指令:(1)ip_hash:类似sh调度规则,基于ip地址做用户与后端主机的绑定;(2)hash+键:以哪个参数为键做绑定,如:hash $COOKIE,以COOKIE作绑定用户与后端主机;hash $remote_addr,以ip地址做绑定,效果与ip_hash一样;hash $request_uri,表示无论那个用户的请求,只要是相同的URI都绑定到固定的后端服务器上,也就是DH调度规则;(3)keepalive:由于nginx基于7层,也就是要通过套接字进行负载均衡,所以响应速度会慢一些,使用此配置可以做到,无论哪个用户请求,调到后台某主机只使用一个连接,而这个值定义得失最多可维持多少个长连接;(4)least_conn:表示使用lc调度规则,server后加了weight的话就是wlc。

      image.png

      image.png

      nginx的四层负载均衡:四层的负载均衡是lvs的长项,nginx是初涉此领域。要使用nginx的stream模块,因为是四层的负载均衡,所以http配置段就可以不用了,取而代之的是stream配置段。其中依然由server段来做面向客户的配置,要指明监听在哪个端口,代理至哪个upstream组。搭建环境:依然是一台主机运行nginx作为反代服务器,两台主机作为web服务器,并做负载均衡集群。

      配置nginx配置文件

      image.png

      作为四层反代就成功了

      image.png

      当然upstream的指令也都可以使用,可以调整为不同调度规则。

      

      

      

      



推荐阅读
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • 在重复造轮子的情况下用ProxyServlet反向代理来减少工作量
    像不少公司内部不同团队都会自己研发自己工具产品,当各个产品逐渐成熟,到达了一定的发展瓶颈,同时每个产品都有着自己的入口,用户 ... [详细]
  • 解决Sharepoint 2013运行状况分析出现的“一个或多个服务器未响应”问题的方法
    本文介绍了解决Sharepoint 2013运行状况分析中出现的“一个或多个服务器未响应”问题的方法。对于有高要求的客户来说,系统检测问题的存在是不可接受的。文章详细描述了解决该问题的步骤,包括删除服务器、处理分布式缓存留下的记录以及使用代码等方法。同时还提供了相关关键词和错误提示信息,以帮助读者更好地理解和解决该问题。 ... [详细]
  • 本文介绍了在rhel5.5操作系统下搭建网关+LAMP+postfix+dhcp的步骤和配置方法。通过配置dhcp自动分配ip、实现外网访问公司网站、内网收发邮件、内网上网以及SNAT转换等功能。详细介绍了安装dhcp和配置相关文件的步骤,并提供了相关的命令和配置示例。 ... [详细]
  • t-io 2.0.0发布-法网天眼第一版的回顾和更新说明
    本文回顾了t-io 1.x版本的工程结构和性能数据,并介绍了t-io在码云上的成绩和用户反馈。同时,还提到了@openSeLi同学发布的t-io 30W长连接并发压力测试报告。最后,详细介绍了t-io 2.0.0版本的更新内容,包括更简洁的使用方式和内置的httpsession功能。 ... [详细]
  • Python瓦片图下载、合并、绘图、标记的代码示例
    本文提供了Python瓦片图下载、合并、绘图、标记的代码示例,包括下载代码、多线程下载、图像处理等功能。通过参考geoserver,使用PIL、cv2、numpy、gdal、osr等库实现了瓦片图的下载、合并、绘图和标记功能。代码示例详细介绍了各个功能的实现方法,供读者参考使用。 ... [详细]
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • Vagrant虚拟化工具的安装和使用教程
    本文介绍了Vagrant虚拟化工具的安装和使用教程。首先介绍了安装virtualBox和Vagrant的步骤。然后详细说明了Vagrant的安装和使用方法,包括如何检查安装是否成功。最后介绍了下载虚拟机镜像的步骤,以及Vagrant镜像网站的相关信息。 ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了软件测试知识点之数据库压力测试方法小结相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 全面介绍Windows内存管理机制及C++内存分配实例(四):内存映射文件
    本文旨在全面介绍Windows内存管理机制及C++内存分配实例中的内存映射文件。通过对内存映射文件的使用场合和与虚拟内存的区别进行解析,帮助读者更好地理解操作系统的内存管理机制。同时,本文还提供了相关章节的链接,方便读者深入学习Windows内存管理及C++内存分配实例的其他内容。 ... [详细]
  • Centos下安装memcached+memcached教程
    本文介绍了在Centos下安装memcached和使用memcached的教程,详细解释了memcached的工作原理,包括缓存数据和对象、减少数据库读取次数、提高网站速度等。同时,还对memcached的快速和高效率进行了解释,与传统的文件型数据库相比,memcached作为一个内存型数据库,具有更高的读取速度。 ... [详细]
  • 深入解析Linux下的I/O多路转接epoll技术
    本文深入解析了Linux下的I/O多路转接epoll技术,介绍了select和poll函数的问题,以及epoll函数的设计和优点。同时讲解了epoll函数的使用方法,包括epoll_create和epoll_ctl两个系统调用。 ... [详细]
author-avatar
ytm5295526049760
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有