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

LVS详细介绍,配置,用法

1.做一个靠谱,被信任的人。2.自身小事做起,勤奋,努力的态度,不计较,不抱怨,好习惯当下做起3.不要自我感觉4.把你所有的精力集中到一点,你就能成功5,集中自己的所有时间去

 

1. 做一个靠谱,被信任的人。

2. 自身小事做起,勤奋,努力的态度,不计较,不抱怨,好习惯当下做起

3. 不要自我感觉

4. 把你"所有"的精力集中到一点,你就能成功

5,集中自己的所有时间去学习


ARP协议:通过ip地址获得主机物理mac地址


32 bit的ip地址

48 bit的mac地址

ARP原理:

原理是把目的主机的32位ip地址转换成目的主机48位的以太网地址(mac地址)

ip地址是逻辑地址,而主机之间的通信是通过物理的mac地址通信的

ARP协议要求通信的主机双方必须在同一网段(即局域网环境)

arp缓存表是把双刃剑

1,有arp缓存表可以加快arp的解析速度

2,也给黑客带来了攻击服务器的风险,俗称arp欺骗和arp攻击


OSI模型把网络划分成7层,隔层之间不直接打交道,都是通过api调用。

ip地址工作在三层,mac地址在二层


ARP是三层协议,但是工作在二层



ARP欺骗原理

arp攻击就是通过伪造ip地址和mac地址对实现arp欺骗。


如何防止:

arp -s  192.168.0.11  mac


集群:一堆计算机依靠网络协同工作就是集群


java架构师:

java服务集群

j2ee程序架构

JVM底层

tomcat、java打包

程序解耦(程序设计,调优,java流程)



为什么要用集群??

性能,可用性,伸缩性,扩展性,安全

1.高性能(performance) 评价一个网站好坏的直接感触

2,价格有效性  ,小型机(IBM)特贵

3.高可用性  7*24运行  availability  

4.可伸缩性  可动态添加新机器  scalability 数据库的伸缩很困难



集群的分类:

1.LB    负载均衡集群

2.HA    高可用性集群

3.高性能计算

4.网格计算


负载均衡的作用:

(1):分担请求和数据流量,从而增加吞吐量,并发量

(2):保证集群的7*24小时服务

(3):用于web服务器,数据库的从


典型负载均衡软件:  lvs,F5 (4 osi) nginx (7osi) haproxy(4+7osi)

典型的高可用软件:  keepalived heratbeat

互联网商业集群硬件:F5 ,netscaler redware.A10





LVS:linux virtural server

LVS:

1,真正实现负载均衡功能的是ipvs

2,ipvs工作在内核层,实现调度,不能直接访问

3,ipvsadm 管理ipvs,或者用keepalived来管理ipvs


LVS 专业术语:

VIP :虚拟ip地址  virtural ip address  用于给客户端计算机提供服务的ip地址

RIP:real ip,集群下面节点使用的ip地址,物理ip地址

DIP:director ip 用于连接内外网络的ip,物理网卡上的ip地址,他是负载均衡器上的ip

CIP:client ip 客户端用户计算机请求集群服务器的ip地址,该地址用作发送给集群的请求的源ip地址 



在LVS框架中,提供了含有三种IP负载均衡技术的IP虚拟服务器软件:

IP虚拟服务器软件IPVS

基于内容请求分发的内核Layer-7交换机 KTCPVS 

集群管理软件

 


在已有的IP负载均衡技术中,IPVS软件实现了这三种IP负载均衡技术

LVS三种模式:

1,NAT()

2,TUN(TUNNELING)

3,DR(DIRECT ROUTING)

4,FULLNAT



目前最流行的模式DR熟练使用

特点:改写请求报文的目标mac地址,将请求转发给真实服务器,而真实服务器将响应后的处理直接返回给客户端使用.

此DR模式没有ip隧道的开销,对集群的真实服务器也没有必须支持ip隧道协议的要求

DR模式要求调度器LB与真实服务器RS都有一块网卡连接在同一物理网段上,即必须在同一个局域网环境




DR模式 :

工作原理:

 

关键点:

1,绑定vip到lo,避免了ip冲突问题,解决了Real server 无法识别client的报文问题


2,绑定vip会主动响应arp广播,因此要抑制arp,告诉real server 不要抢lvs的arp包,只接收包


能顺利说出秒杀5-12K左右



DR模式的总结

1,通过在调度器LB上修改数据包的目的mac地址实现转发,,注意 ,源ip仍然是cip,目的ip地址仍然是VIP

2,请求的报文经过调度器而RS响应处理后的报文无需经过调度器LB,直接返回给客户端因此,并发访问量大时候效率很高

3,因DR模式是通过MAC地址的改写机制实现的转发,因此所有RS节点和调度器LB只能在一个局域网LAN中(小缺点)

4,需要注意RS节点的vip的绑定(lo:vip.lol:vip)和arp抑制问题

5,强调:RS节点的默认网关不需要调度器LB的DIP,而直接是IDC机房分配的上级路由器的IP(这是RS带有外网ip地址的情况)

6,由于DR模式的调度器仅仅进行了目的MAC地址改写,因此,调度器LB无法改变请求报文的目的端口

7,当前调度器LB支持几乎所有的unix linux系统,但目前不支持windows,但是真实的RS可以是windows.

8.总的来说,DR模式效率很高,但是配置麻烦,因此,访问量不大的公司可以使用haproxy、nginx,这符合运维的原则:简单,易用,高效 日PV2000W,并发1W以下使用haproxy,nginx(lvs NAT模式)就好

9,直接对外的访问业务,例如web服务做RS节点,RS最好用公网ip地址(直接把请求返回给用户),如果不直接对外业务,例如mysql,存储系统,最好使用内部ip地址



NAT模式:了解即可,工作中基本使用DR模式


总结:

1,NAT技术将请求的报文(DNAT)和响应的报文(SNAT),通过调度器地址重写然后转发给内部的服务器。报文返回时候改写成原来的用户请求的地址

2,只需啊哟在调度器LB上配置WAN公网ip即可,调度器也要有似有LAN ip和内部RS节点通

3,每台内部RS节点的网关地址,必须配置成调度器LB的私有LAN内物理网卡地址

省略



 


IPVS调度器实现了如下十种负载调度算法:LVS调度算法

10种调度算法

固定调度算法:rr,wrr,dh,sh

动态调度算法:wlc,lc,lblc,lblcr,SED,NQ.

最常用的三种RR WRR WLC 

10种调度算法见下表:

rr :轮询调度,他将请求依次分配不同的RS节点,RS服务器均摊请求,这种算法比较简单,但是只适合RS节点相差性能不大的情况

wrr:加权轮询调度,它将依据不同RS节点的权值分配任务,权值高的RS将优先获得任务,并且分配的连接数比权值低的RS节点更多。相同权值的RS得到相同数目的连接数

dh:destination hashing 以目的地址为关键字查找一个静态hash表来获取需要的RS

sh:source hashing 以源地址为关键字查找一个静态hash表来获取需要的RS


动态调度算法:


wlc:加权最小连接数调度(weighted least-connection)假设各台RS的权值依次为Wi(i=1...n) 。当前的tcp连接数依次为Ti(i=1..n),依次取TI/WI为最小的RS作为下一个分配的RS

LC

LBLC

LBLCR

SED

NQ    都不常用


LVS调度算法的生产环境选型

一般的网络服务http mail mysql 常用的调度算法是rr,wrr wlc


LVS集群的特点

LVS集群的特点可以归结如下:


功能

有实现三种IP负载均衡技术和八种连接调度算法的IPVS软件。在IPVS内部实现上,采用了高效的Hash函数和垃圾回收机制,能正确处理所调度报文相 关的ICMP消息(有些商品化的系统反而不能)。虚拟服务的设置数目没有限制,每个虚拟服务有自己的服务器集。它支持持久的虚拟服务(如HTTP COOKIE和HTTPS等需要该功能的支持),并提供详尽的统计数据,如连接的处理速率和报文的流量等。针对大规模拒绝服务(Deny of Service)攻击,实现了三种防卫策略。

有基于内容请求分发的应用层交换软件KTCPVS,它也是在Linux内核中实现。有相关的集群管理软件对资源进行监测,能及时将故障屏蔽,实现系统的高可用性。主、从调度器能周期性地进行状态同步,从而实现更高的可用性。


适用性

后端服务器可运行任何支持TCP/IP的操作系统,包括Linux,各种Unix(如FreeBSD、Sun Solaris、HP Unix等),Mac/OS和Windows NT/2000等。

负载调度器能够支持绝大多数的TCP和UDP协议:

协议内 容

TCPHTTP,FTP,PROXY,SMTP,POP3,IMAP4,DNS,LDAP,HTTPS,SSMTP等

UDPDNS,NTP,ICP,视频、音频流播放协议等

无需对客户机和服务器作任何修改,可适用大多数Internet服务。


性能

LVS服务器集群系统具有良好的伸缩性,可支持几百万个并发连接。配置100M网卡,采用VS/TUN或VS/DR调度技术,集群系统的吞吐量可高达1Gbits/s;如配置千兆网卡,则系统的最大吞吐量可接近10Gbits/s。


可靠性

LVS服务器集群软件已经在很多大型的、关键性的站点得到很好的应用,所以它的可靠性在真实应用得到很好的证实。有很多调度器运行一年多,未作一次重启动。


软件许可证

LVS集群软件是按GPL(GNU Public License)许可证发行的自由软件,这意味着你可以得到软件的源代码,有权对其进行修改,但必须保证你的修改也是以GPL方式发行。


官方资料

LVS项目介绍:http://www.linuxvirtualserver.org/zh/lvs1.html

LVS集群的体系结构http://www.linuxvirtualserver.org/zh/lvs2.html

LVS集群中ip负载均衡技术http://www.linuxvirtualserver.org/zh/lvs3.html

LVS负载调度http://www.linuxvirtualserver.org/zh/lvs4.html




开始安装安装LVS

1




LVS安装小结:

1,centos 5.x 安装lvs,使用1.24版本,不要用1.2.6

2.centos6.x  安装1.26版本,并且先安装 yum install libnl*  popt* -y

3.安装LVS后,要执行ipvsadm把ip_vs模块加载到内核



手动配置LVS负载均衡服务,方便加深影响

1, 解析vip到域名www.xxxx.com   192.168.0.2002,  配置LVS虚拟ip(vip)
   ifconfig eth1:0 192.168.0.200/24
3.手动执行配置添加LVS服务增加两台RS
ipvsadm -C   clear teh whole table 
ipvsadm --set 30 5 60 set tcp tcpfin udp timeout 
 
ipvsadm -A -t vip:80 -s rr            
(add virtual service with options  -s 调度算法)
ipvsadm -a -t vip:80 -r 192.168.0.221  -g      
(-a: add real server with options)
(-g: gatewaying (direct routing) (default) LVS模式)
             
ipvsadm -a -t 192.168.200:80 -r 192.168.0.221 -g -w 1
ipvsadm -a -t 192.168.0.200:80 -r 192.168.0.222 -g -w 1
[root@localhost ~]# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.0.200:80 rr
  -> 192.168.0.221:80             Route   1      0          0         
  -> 192.168.0.222:80             Route   1      0          0

删除节点和服务:


1.删除节点[root@localhost ~]# ipvsadm -d -t 192.168.0.200:80 -r 192.168.0.222   删除节点[root@localhost ~]# ipvsadm -L -nIP Virtual Server version 1.2.1 (size=4096)Prot LocalAddress:Port Scheduler Flags  -> RemoteAddress:Port           Forward Weight ActiveConn InActConnTCP  192.168.0.200:80 rr  -> 192.168.0.221:80             Route   1    0      0    2.删除服务ipvsadm -D -t vip:80此时还无法通过vip访问到web3.手工在RS端绑定(1),每台RS端都执行以下步骤(2), 绑定vip到loifconfig lo:0 vip/32   --注意此时的mask是32位[root@localhost ~]# ifconfig lo:0 192.168.0.200/32lo:0        Link encap:Local Loopback            inet addr:192.168.0.200  Mask:0.0.0.0          UP LOOPBACK RUNNING  MTU:16436  Metric:1[root@localhost ~]# route add -host  192.168.0.200 dev lo 添加主机路由[root@localhost ~]#  route -nKernel IP routing tableDestination    Gateway  Genmask   Flags Metric Ref    Use Iface192.168.0.200   0.0.0.0  255.255.255.255 UH   0   0    0 lo0.0.0.0         192.168.0.1     0.0.0.0         UG    0      0        0 eth04.手工在RS端抑制ARPecho "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce

详细介绍arp技术参数

arp_ignore

1,表示只回答目标ip地址是来访问网络接口本地地址的arp查询请求

arp_announce :对网络接口上,本地ip地址的发出的arp回应,做出相应级别的限制

2,表示对查询目标使用最适当的本地地址,在此模式将忽略这个ip数据包的源地址




以上都是临时配置,重启失效,因为下篇文章会介绍配置文件+keepalived形式


###################LVS集群分发请求RS不均衡生产环境实战解决

生产环境中ipvsadm -L -n 发现两台RS负载不均衡,一台有很多请求,一台没有。经过测试发现没有请求的RS服务正常,lo:vip 也有,但是就是没有请求

tcp 172.168.1.50:3307 wrr presient 10172.168.1.51:3307   route 1 0   0 172.168.1.52:3307   route 1 8  12758


问题原因:

persistent 10的原因,persistent会话保持,当clientA 访问网站的时候,LVS分发给了52.,那么ClientA 再点击其他的操作请求,也会发送给52这台机器

解决办法:

到keepalived中注释掉persistent 10 然后/etc/init.d/keepalived reload  然后两边负载都会均衡


实现会话保持的方案:

http://oldboy.blog.51cto.com/2561410/1331316



############LVS故障排错原理


1,把绑定的vip做成lo配置文件(ifcfg-lo)



本文出自 “crazy_sir” 博客,请务必保留此出处http://douya.blog.51cto.com/6173221/1680692


推荐阅读
  • 作为140字符的开创者,Twitter看似简单却异常复杂。其简洁之处在于仅用140个字符就能实现信息的高效传播,甚至在多次全球性事件中超越传统媒体的速度。然而,为了支持2亿用户的高效使用,其背后的技术架构和系统设计则极为复杂,涉及高并发处理、数据存储和实时传输等多个技术挑战。 ... [详细]
  • 在Java分层设计模式中,典型的三层架构(3-tier application)将业务应用细分为表现层(UI)、业务逻辑层(BLL)和数据访问层(DAL)。这种分层结构不仅有助于提高代码的可维护性和可扩展性,还能有效分离关注点,使各层职责更加明确。通过合理的设计和实现,三层架构能够显著提升系统的整体性能和稳定性。 ... [详细]
  • 2021年Java开发实战:当前时间戳转换方法详解与实用网址推荐
    在当前的就业市场中,金九银十过后,金三银四也即将到来。本文将分享一些实用的面试技巧和题目,特别是针对正在寻找新工作机会的Java开发者。作者在准备字节跳动的面试过程中积累了丰富的经验,并成功获得了Offer。文中详细介绍了如何将当前时间戳进行转换的方法,并推荐了一些实用的在线资源,帮助读者更好地应对技术面试。 ... [详细]
  • 提升 Kubernetes 集群管理效率的七大专业工具
    Kubernetes 在云原生环境中的应用日益广泛,然而集群管理的复杂性也随之增加。为了提高管理效率,本文推荐了七款专业工具,这些工具不仅能够简化日常操作,还能提升系统的稳定性和安全性。从自动化部署到监控和故障排查,这些工具覆盖了集群管理的各个方面,帮助管理员更好地应对挑战。 ... [详细]
  • 近年来,BPM(业务流程管理)系统在国内市场逐渐普及,多家厂商在这一领域崭露头角。本文将对当前主要的BPM厂商进行概述,并分析其各自的优势。目前,市场上较为成熟的BPM产品主要分为两类:一类是综合型厂商,如IBM和SAP,这些企业在整体解决方案方面具有明显优势;另一类则是专注于BPM领域的专业厂商,它们在特定行业或应用场景中表现出色。通过对比分析,本文旨在为企业选择合适的BPM系统提供参考。 ... [详细]
  • 2019年后蚂蚁集团与拼多多面试经验详述与深度剖析
    2019年后蚂蚁集团与拼多多面试经验详述与深度剖析 ... [详细]
  • ZeroMQ在云计算环境下的高效消息传递库第四章学习心得
    本章节深入探讨了ZeroMQ在云计算环境中的高效消息传递机制,涵盖客户端请求-响应模式、最近最少使用(LRU)队列、心跳检测、面向服务的队列、基于磁盘的离线队列以及主从备份服务等关键技术。此外,还介绍了无中间件的请求-响应架构,强调了这些技术在提升系统性能和可靠性方面的应用价值。个人理解方面,ZeroMQ通过这些机制有效解决了分布式系统中常见的通信延迟和数据一致性问题。 ... [详细]
  • DAO(Data Access Object)模式是一种用于抽象和封装所有对数据库或其他持久化机制访问的方法,它通过提供一个统一的接口来隐藏底层数据访问的复杂性。 ... [详细]
  • 秒建一个后台管理系统?用这5个开源免费的Java项目就够了
    秒建一个后台管理系统?用这5个开源免费的Java项目就够了 ... [详细]
  • MySQL的查询执行流程涉及多个关键组件,包括连接器、查询缓存、分析器和优化器。在服务层,连接器负责建立与客户端的连接,查询缓存用于存储和检索常用查询结果,以提高性能。分析器则解析SQL语句,生成语法树,而优化器负责选择最优的查询执行计划。这一流程确保了MySQL能够高效地处理各种复杂的查询请求。 ... [详细]
  • B站服务器故障影响豆瓣评分?别担心,阿里巴巴架构师分享预防策略与技术方案
    13日晚上,在视频观看高峰时段,B站出现了服务器故障,引发网友在各大平台上的广泛吐槽。这一事件导致了连锁反应,大量用户纷纷涌入A站、豆瓣和晋江等平台,给这些网站带来了突如其来的流量压力。为了防止类似问题的发生,阿里巴巴架构师分享了一系列预防策略和技术方案,包括负载均衡、弹性伸缩和容灾备份等措施,以确保系统的稳定性和可靠性。 ... [详细]
  • 服务器部署中的安全策略实践与优化
    服务器部署中的安全策略实践与优化 ... [详细]
  • 在JavaWeb项目架构中,NFS(网络文件系统)的实现与优化是关键环节。NFS允许不同主机系统通过局域网共享文件和目录,提高资源利用率和数据访问效率。本文详细探讨了NFS在JavaWeb项目中的应用,包括配置、性能优化及常见问题的解决方案,旨在为开发者提供实用的技术参考。 ... [详细]
  • 第二章:Kafka基础入门与核心概念解析
    本章节主要介绍了Kafka的基本概念及其核心特性。Kafka是一种分布式消息发布和订阅系统,以其卓越的性能和高吞吐量而著称。最初,Kafka被设计用于LinkedIn的活动流和运营数据处理,旨在高效地管理和传输大规模的数据流。这些数据主要包括用户活动记录、系统日志和其他实时信息。通过深入解析Kafka的设计原理和应用场景,读者将能够更好地理解其在现代大数据架构中的重要地位。 ... [详细]
  • 本文深入探讨了 C# 中 `SqlCommand` 和 `SqlDataAdapter` 的核心差异及其应用场景。`SqlCommand` 主要用于执行单一的 SQL 命令,并通过 `DataReader` 获取结果,具有较高的执行效率,但灵活性较低。相比之下,`SqlDataAdapter` 则适用于复杂的数据操作,通过 `DataSet` 提供了更多的数据处理功能,如数据填充、更新和批量操作,更适合需要频繁数据交互的场景。 ... [详细]
author-avatar
平平安安55555_800
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有