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

服务负载之LVS

duang!duang!duang!今天开始写服务高可用之lvs。回顾一下,我们一般服务集群可分为以下三种:1.负载均衡集群,如lvs,nginx(7层负载),haproxy(4层

duang!duang!duang!今天开始写服务高可用之lvs。

回顾一下,我们一般服务集群可分为以下三种:

  1.负载均衡集群,如lvs,nginx(7层负载),haproxy(4层,7层都可以)等

  2.高可用集群,如keepalive,heartbeat组成的高可用,数据自身的主从高可用,主主高可用

  3.高性能集群,如某些运算工作站

LVSLinux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。lvs是根据TCP/IP4层协议,依赖内核的netfilter,工作在INPUT链上,实现4层负载,突破了套接字的限制,具有强大的并发能力。由于它不关心服务是否可用,在轮询等算法中,前端访问服务时,会出现固定比例的访问不可达,没有冗余功能。

lvs工作模式可分为:

  1.nat,多目标DNAT,顾名思义,目标地址转换,修改请求报文的目标地址(有时也会修改端口),转发给后端服务器。

  2.dr,直接路由,修改请求报文的目标mac地址,转发给同网段服务器。

  3.tun,隧道,不修改请求报文的IP首部,在原有的IP首部上,再封装一个IP首部,有可能会突破mut的限制,可能有一些手段限制请求包的大小。

lvs支持的算法:

  1.rr,轮询,根据ipvsadm管理表里面的次序,依次循环分配请求,绝对公平

  2.wrr,加权轮询,根据服务性能设置权重,根据权重比例分配请求,手握权重,我优先

  3.sh,源地址hash,把来自同一IP的请求始终分配同一RS主机,可以实现类似session会话保持功能

  4.dh,目标地址hash,对同一目标请求始终分配给同一RS主机,实现类似提高缓存命中功能

上面4种为静态算法。何为静态呢?是指,前端负载,不管后端服务的性能差异,始终我行我素的按照规则分配,根据现实社会规律,当人数太多,而每个人的能力强弱不一样,平均分配会使能力差的人不太公平,古人云,能者多劳。于是有了下面的算法;

  5.lc,最少链接,最少的家伙优先分配,公式:活动链接数*256+非活动链接数之和

  6.wlc,加权最少链接,lc升级版,权重大的优先分配,公式:(活动链接数*256+非活动链接数)/权重

  7.sed,最短期望延迟,公式:(活动链接数+1)*256/权重

  8.nq,按照权重大小一次分配,再按照sed算法

  9.lblc,基于本地最小链接的目标地址hash,即为动态DH算法,先LC,再DH,目前主要用于Cache集群系统

 10.lblcr,带复制功能的LBLC

ipvs管理工具:ipvsadm

常用命令: 

添加服务:ipvsadm -A -t 192.168.0.50:80 -s rr

修改服务:ipvsadm -E -t 192.168.0.50:80 -s wrr

保存服务:ipvsadm-save = ipvsadm -S

载入服务:ipvsadm-restore =ipvsadm -R

添加RS:ipvsadm -a -t 192.168.0.50:80 -r 172.16.1.90 -m -w 1 (-m为nat工作模式)

修改RS:ipvsadm -e -t 192.168.0.50:80 -r 172.16.1.90 -g -w 1 (-g为dr工作模式)

显示链接报文数: ipvsadm -L -n --stats

由于ipvs是工作在内核上的,我们只需要安装ipvsadm,往ipvs上面写规则就是了。

yum install -y ipvsadm

基于nat工作模式的lvs

在lvs服务端,清空iptables规则,准备2台httpd服务器

在服务端添加

iptables -F 

ipvsadm -A -t 172.16.2.10:80 -s rr

ipvsadm -a -t 172.16.2.10:80 -r 172.16.1.90 -g -w 1

ipvsadm -a -t 172.16.2.10:80 -r 172.16.1.91 -g -w 1


基于dr工作模式lvs

服务端配置:

iptables -F 

ifconfig eth0:0 172.16.2.10 up

route add -host 172.16.2.10 dev eth0:0

添加ipvs命令

ipvsadm -A -t 172.16.2.10:80 -s rr

ipvsadm -a -t 172.16.2.10:80 -r 172.16.1.90 -g -w 1

ipvsadm -a -t 172.16.2.10:80 -r 172.16.1.91 -g -w 1

技术分享

 

所有客户端配置:

先定义参数:

echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce

echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore

echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore

在lo上配置ip别名

ifconfiglo:0 172.16.2.10/32 broadcast 172.16.2.10 up

添加lo到网卡的路由

route add -host 172.16.2.10 dev lo:0

技术分享

服务负载之LVS


推荐阅读
  • nginx+多个tomcat
    学习nginx的时候遇到的问题:nginx怎么部署两台tomcat?upstream在网上找的资源,我在nginx配置文件(nginx.conf)中添加了两个server。结果只显 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 本文介绍了在rhel5.5操作系统下搭建网关+LAMP+postfix+dhcp的步骤和配置方法。通过配置dhcp自动分配ip、实现外网访问公司网站、内网收发邮件、内网上网以及SNAT转换等功能。详细介绍了安装dhcp和配置相关文件的步骤,并提供了相关的命令和配置示例。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 本文介绍了在mac环境下使用nginx配置nodejs代理服务器的步骤,包括安装nginx、创建目录和文件、配置代理的域名和日志记录等。 ... [详细]
  • 解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法
    本文介绍了解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法,包括检查location配置是否正确、pass_proxy是否需要加“/”等。同时,还介绍了修改nginx的error.log日志级别为debug,以便查看详细日志信息。 ... [详细]
  • 31.项目部署
    目录1一些概念1.1项目部署1.2WSGI1.3uWSGI1.4Nginx2安装环境与迁移项目2.1项目内容2.2项目配置2.2.1DEBUG2.2.2STAT ... [详细]
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • 深入解析Linux下的I/O多路转接epoll技术
    本文深入解析了Linux下的I/O多路转接epoll技术,介绍了select和poll函数的问题,以及epoll函数的设计和优点。同时讲解了epoll函数的使用方法,包括epoll_create和epoll_ctl两个系统调用。 ... [详细]
  • LVS实现负载均衡的原理LVS负载均衡负载均衡集群是LoadBalance集群。是一种将网络上的访问流量分布于各个节点,以降低服务器压力,更好的向客户端 ... [详细]
  • 本文介绍了使用AJAX的POST请求实现数据修改功能的方法。通过ajax-post技术,可以实现在输入某个id后,通过ajax技术调用post.jsp修改具有该id记录的姓名的值。文章还提到了AJAX的概念和作用,以及使用async参数和open()方法的注意事项。同时强调了不推荐使用async=false的情况,并解释了JavaScript等待服务器响应的机制。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
author-avatar
多米音乐_35677591
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有