lvs高并发机制

高并发lvs

LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一。

Lvs的思想:

比如传统的上网方式,在某片区域,有5个小区,每个小区都会买一个服务器,申请一个网络带宽。但是每个小区的上网的高峰区并不一定一致,有的小区早上是高峰期,有的小区晚上是高峰期,有的小区上午是高峰期,有的小区下午是高峰期,每个小区到了自己的上网高峰期的时候都会出现网络瓶颈,而其他小区的网络资源却属于空闲,白白浪费。这种情况就出现了lvs的负载均衡服务器,具体思路就是这五个小区只连接一个负载均衡的服务器,而这个负载均衡的服务器在连接三个网络带宽的服务器。这样的话可以为五个小区的高峰期做负载均衡,保证不会有的带宽服务器空闲浪费,有不会有的带宽服务器会资源不足。

lvs-dr模型

在这里插入图片描述
Lvs的内核模块名叫:ipvs。内核只是暴露系统调用,并没有直接暴露给用户使用的接口,这时候就需要用户空间有一个程序需要和内核模块进行交互。控制内核模块的运行。所以要安装一个ipvsadm的小程序。用ipvsadm来下发对ipvs的配置。

lvs调度方法

四种静态:

  1. rr:轮循 常用
  2. wrr:加权,根据资源的计算能力来增减权重
  3. dh:
  4. sh:

动态调度方法:

这个调度先监测状态:ip,用户,包的状态,可以根据资源的使用情况来动态分配。

  1. lc: 最少连接
  2. wlc: 加权最少连接
  3. sed: 最短期望延迟
  4. nq: never queue
  5. LBLC: 基于本地的最少连接
  6. DH:
  7. LBLCR: 基于本地的带复制功能的最少连接

默认方法:wlc

Dr模型的实现方式:在我们的内核kernel中,对arp协议进行监测干扰,在:/proc/sys/net/ipv4/conf/IF/下有文件:

Arp_ignore:
0

1代表仅在请求的目标(mac)地址配置请求到达的接口上的时候,才给予响应。

举例:假设,我有一个自己的手机号,邻班的老师也有自己的手机号,当本班同学问我邻班老师的手机号,这个时候假设1的状态的话,就不予匹配,本班同学只有问我电话的时候才会响应。如果为1的话,则会提示同学,邻班老师电话号在我这里获取不到,如果确实想要获取的话需要直接到邻班去获取。

Arp_announce:定义将自己的地址向外通告级别,0代表将本地任何接口上的任何地址想外通告,1代表试图仅向目标网络通告与其网络地址匹配的地址。2,代表仅向与本地接口上的地址匹配的网络进行通过。

解释:当网卡被激活的时候会主动向外通告,如果是0的级别,将把全部信息主动暴露。不管对方有没有向我这里发送请求。如果为2的级别,则仅向地址匹配的网络进行通告。所以这里需要设置为2.

主机名角色服务
Node01Lvs服务ipvsadm
Node02realserverHttpd80
Node03realserverHttpd80

Lvs命令

ipvs内核模块

yum install ipvsadm -y

管理集群服务

  1. 添加:-A -t|u|f service-address [-s scheduler]
  2. -t: TCP协议的集群
  3. -u: UDP协议的集群
  4. service-address: IP:PORT
  5. -f: FWM: 防火墙标记
  6. service-address: Mark Number
  7. 修改:-E
  8. 删除:-D -t|u|f service-address
  9. ipvsadm -A -t 172.16.100.1:80 -s rr
  10. -A是配置lvs监控服务的,如果配置realserver是-a
#ipvsadm -a -t 172.16.100.1:80 -r 192.168.10.8 –g
#ipvsadm -a -t 172.16.100.1:80 -r 192.168.10.9 -g

Lvs环境配置

1、启动node01,02,03三个服务器

在node01配置以下信息

先配置三台虚拟机的网段
2、配置lvs的隐藏vip=100(对外隐藏对内可见)
[root@node01 ~]# ifconfig eth0:1 192.168.43.100/24 #:1代表子接口,1-9随便配,24是255.255.255=转成二进制为24个1,也就是mask地址
在这里插入图片描述
3、配置数据包转发
[root@node01 ~]# cat /proc/sys/net/ipv4/ip_forward #查看到的结果是0,也就是默认的效果,0的意思是当服务器收到的数据包的目标地址如果不是自己就做丢弃处理,这里需要修改配置,当目标地址不是自己的时候要转发。
如果把他设置成1,就是开启转发功能。
注意修改这个文件不能用vi编辑。
[root@node01 ~]# echo 1 > /proc/sys/net/ipv4/ip_forward #由于proc目录是内核映射,所以即时生效。

在node02上配置以下信息

[root@node02 eth0]# cat /proc/sys/net/ipv4/conf/eth0/arp_ignore#默认结果是0,设置成1
[root@node02 eth0]# echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore
[root@node02 eth0]# cat /proc/sys/net/ipv4/conf/eth0/arp_announce #默认结果是0,设置成2
[root@node02 all]# echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce
[root@node02 all]# cat /proc/sys/net/ipv4/conf/all/arp_ignore
[root@node02 all]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
[root@node02 all]# cat /proc/sys/net/ipv4/conf/all/arp_announce
[root@node02 all]# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
[root@node02 all]# ifconfig lo:8 192.168.43.100 netmask 255.255.255.255#设置回环网卡,:8代表子接口,可以1-9随意。
在这里插入图片描述
[root@node02 all]# yum install httpd -y
[root@node02 html]# ll /var/www/html/
[root@node02 html]# vi index.html
from node02
[root@node02 html]# service httpd start
http://node02

在node03上配置以下信息

[root@node03 ~]# echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore
[root@node03 ~]# echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce
[root@node03 ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
[root@node03 ~]# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
[root@node03 ~]# ifconfig lo:3 192.168.43.100 netmask 255.255.255.255
[root@node03 ~]# yum install httpd -y
[root@node02 html]# ll /var/www/html/
[root@node02 html]# vi index.html
from node02
[root@node03 html]# service httpd start
http://node03/

在node01上继续配置以下信息

在将node02和node03配置好后配置以下信息:lvs
[root@node01 ~]# yum install ipvsadm -y
[root@node01 ~]# ipvsadm -A -t 192.168.43.100:80 -s rr #a设置监控t是tcp协议s是调度方式,ss是轮询方式。
[root@node01 ~]# ipvsadm -a -t 192.168.43.100:80 -r node02:80
[root@node01 ~]# ipvsadm -a -t 192.168.43.100:80 -r node03:80
[root@node01 ~]# ipvsadm -ln
在这里插入图片描述
到了这一步就配置成功了:http://192.168.43.100/
在这里插入图片描述
在这里插入图片描述
正常访问是没有问题的,但是这种效果一旦出现了单点故障的话就会出现问题,所以就有了后面要延续的技术zookeeper,高可用。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值