三、LVS及实践

LVS

一、简介

  • 概念

    LVS(Linux Virtual Server)即Linux虚拟服务器,是由章文嵩博士主导的开源负载均衡项目,目前LVS已经被集成到Linux内核模块中

  • 特点

    1. 数据包转发级别(特别快)
    2. 不会和客户端握手
    3. 后端服务器必须是镜像的
    4. 负载均衡服务器拥有偷窥能力并且记录,3次握手连接+1,四次挥手连接-1
  • 比较

    1. LVS-用于hold住流量(只要网速够快,就没有上限)
    2. nginx 用于hold 住握手(7层,但有负载上线)
  • 工作模式

    1. NAT模式
    2. DR模式
    3. TUN模式

    详情见https://blog.csdn.net/qq_43583755/article/details/121504437?spm=1001.2014.3001.5501

二、隐藏VIP方法

  • 特点

    对外隐藏,对内可见

  • kernel parameter

    目标mac地址为全F,交换机触发广播

    在linux系统中一切皆文件,在该目录**/proc/sys/net/ipv4/conf/IF/**可以修改内核设置,但不能直接vi修改,只能通过echo修改

    1. arp_ignore
      • 0:只要本地配置的有相应地址,就给予响应
      • 1:仅在请求的目标(MAC)地址配置请求到达接口上的时候,才给予响应
    2. arp_announce
      • 0:将本地任何接口上的任何地址向外通告
      • 1:试图仅向目标网络通告与其网络匹配的地址
      • 2:仅向与本地接口上地址匹配的网络进行通告

    为了方便理解,举一个例子:
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-j5n9Y98x-1637735790186)(LVS及LVS_DR模型实践.assets/1637723796676.png)]
    情景:

    1. arp_ignore(响应-被动)

      • 0 某人问我爱人电话号码-告诉他
      • 1 某人问我爱人电话号码-不告诉他
    2. arp_announce(通告-主动)

      一个网卡上可以有多个ip地址也就是一个人可以有多个手机号(公用,私用)

      • 0 电话都告诉某人
      • 1 只告诉某人公用的(网络号不同)
      • 2 都不告诉

    结论:如果要配隐藏VIP,那么就要配arp设置和添加虚拟ip到环回接口上

  • 调度算法

    1. 静态
      • rr 轮询
      • wrr 加权轮询
      • dh 目标地址散列调度
      • sh 源地址散列调度
    2. 动态
      • Ic:最少连接
      • Wic:加权最少连接
      • sed:最短期望延迟
      • nq:never queue
      • dblc:基于本地的最少连接
      • DH 目标地址散列调度
      • LBLCR:基于本地的带复制功能的最少连接

    问题引入:

    负载均衡服务器如何知道最少连接的是哪台服务器,如何知道它连接的服务器的信息?

    ​ 负载均衡服务器拥有偷窥能力并且记录

    client发送sync数据包,经过负载均衡服务器,该服务器会看sync中的信息(ip,port)并记录,当client或者server发送ack确认的时候,会在server上握手连接+1,这里四次挥手连接-1同理

    TIP:

    ​ 如果我们要操作lvs内核设置,需要安装一个ipvs内核模块 ipvsadm(对于大多数程序来说)

    下图为可能用到的命令,在实践的时候会进行详细的说明.

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-non0tmIb-1637735790189)(LVS及LVS_DR模型实践.assets/1637733236890.png)]

三、DR模型(LVS)实践

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MNF8z2eE-1637735790202)(LVS及LVS_DR模型实践.assets/1637733360419.png)]

在准备服务器的时候会遇到一些问题:

  • 配置三台node服务器

    https://www.jb51.net/article/115686.html

  • Centos 6无法使用yum解决办法

    https://www.xmpan.com/944.html

1.LVS
node01:
	添加网卡-ifconfig  eth0:8 192.168.150.100/24 (这里的24代表255.255.255.0)
	删除网卡-ifconfig  eth0:2 down
node02~node03:
	1)修改内核:
		echo 1  >  /proc/sys/net/ipv4/conf/eth0/arp_ignore 
		echo 1  >  /proc/sys/net/ipv4/conf/all/arp_ignore 
		echo 2  >   /proc/sys/net/ipv4/conf/eth0/arp_announce 
		echo 2  >   /proc/sys/net/ipv4/conf/all/arp_announce 
	2)设置隐藏的vip:
		ifconfig  lo:3  192.168.150.100  netmask 255.255.255.255

问题:
1.为什么添加lo:2时,子网掩码是255.255.255.255而不是255.255.255.0?
如果是255.255.255.0,它的IP和MASK进行与运算和eth0走的是同一个网络号,又因为物理网卡(eth0)和虚拟网卡(lo:2)之间虚拟网卡更近,所以会优选虚拟网卡,换回接口将数据又发给自己,这样就死循环了,数据就发不出去了所以会出现如下情况:

  1. 若 ping 192.168.188.1, 则数据会发不出去(因为如果是255.255.255.255那么它会先将IP和MASK进行与运算,获得网络号192.168.188.100)
  2. 若 ping 192.168.188.1, 则走eth0,数据能发出去
2.RS中的服务
node02~node03:
	yum install httpd -y
	service httpd start
	vi   /var/www/html/index.html
		from 192.168.150.1x
	这里主要是看效果,所以写的不一样
3.LVS服务配置
如果我们要操作lvs内核设置,需要安装一个ipvs内核模块 ipvsadm(对于大多数程序来说)
node01:
		yum install ipvsadm 
	ipvsadm -A  -t  192.168.150.100:80  -s rr
	ipvsadm -a  -t 192.168.150.100:80  -r  192.168.150.12 -g -w 1
	ipvsadm -a  -t 192.168.150.100:80  -r  192.168.150.13 -g -w 1
	ipvsadm -ln
4.验证
验证:
	浏览器访问  192.168.150.100   看到负载  疯狂F5
	node01:
		netstat -natp   结论看不到socket连接
	node02~node03:
		netstat -natp   结论看到很多的socket连接
	node01:
		ipvsadm -lnc    查看偷窥记录本
		TCP 00:57  FIN_WAIT    192.168.150.1:51587 192.168.150.100:80 192.168.150.12:80
		FIN_WAIT: 连接过,偷窥了所有的包
		SYN_RECV: 基本上lvs都记录了,证明lvs没事,一定是后边网络层出问题
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值