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

企业—LVS的模式一:DR模式

一.LVS的基本概念 1.lvs的定义 LVS的全称是Linux virtual server,即Linux虚拟服务器,它是封装在linux的内核中的。之所以是虚拟服务器&

一.LVS的基本概念

1.lvs的定义

  • LVS的全称是Linux virtual server,即Linux虚拟服务器,它是封装在linux的内核中的。之所以是虚拟服务器,是因为LVS自身是个负载均衡器,不接受处理请求,而是将请求转发至位与它后端真正的服务器realserver上。

  • LVS是四层(传输层tcp/udp),七层(应用层)的负载均衡工具,只不过大众一般都使用它的四层负载均衡功能ipvs,而七层的内容分发负载工具ktcpvs(kernel tcp virtual server)不怎么完善,使用的人并不多。

  • ipvs是集成在内核中的框架,可以通过用户空间的程序ipvsadm工具来管理,该工具可以定义一些规则来管理内核中的ipvs。就像iptables和netfilter关系一样。

2.LVS-ipvs相关的几种IP

  • VIP:virtual IP:LVS服务器上接收外网数据包的网卡IP地址
  • DIP:director IP:LVS服务器上转发数据包到realserver的网卡IP地址
  • RIP:realserver(简称RS)上接收Director转发数据包的IP,即提供服务的服务器的IP。
  • CIP:客户端的IP

在这里插入图片描述

二.LVS模式(DR)

1.DR模式的基本概念

  • DR(Direct Routing)模式为直接路由模式
  • 调度器对数据包的处理是改写数据帧的目标MAC地址,通过链路层来负载均衡。
  • DR通过改写请求报文的目标MAC地址,将请求发送到真实服务器,而真实服务器则将响应直接返给用户。
  • 要求调度器与真实服务器都有一块网卡连在同一物理网段上,以便使用MAC地址通信转发数据包。

2.DR模式工作原理

  • (1)客户端发送请求被director接收后,director根据负载均衡算法改写数据帧的目标MAC地址为后端某RS的MAC地址,并将该数据包转发给该RS(实际上是往整个局域网发送,但只有该MAC地址的RS才不会丢弃)
  • (2)RS接收到数据包后,发现数据包的目标IP地址为VIP,而RS本身已经将VIP配置在了自身的某个接口上,因此RS会接收这个数据包并进行处理。
  • (3)处理完毕后,RS直接将响应报文响应给客户端。此时数据包源IP为VIP,目标IP为CIP。

在这里插入图片描述
3.DR模式时的基本属性和要求

  • Realserver的RIP和Director的DIP必须处于同一网段中,以便使用MAC地址进行通信。
  • realserver上必须配置VIP地址,以便接收director转发过来的数据包,以及作为响应报文的源IP。
  • realserver响应给客户端的数据包的源和目的IP为VIP—>CIP
  • director只处理入站请求,响应请求由realserver完成。

三.模拟DR模式的实现

1.实验环境

主机(IP)服务
server1(172.25.254.1)lvs调度器(Virulserver)
server2(172.25.254.2)realserver
server3(172.25.254.3)realserver

2.实现如下

server1:

  • (1)配置yum源,添加高可用的安装包

[root@server1 yum.repos.d]# vim rhel-source.repo
文件后面添加:
[LoadBalancer]
name = LoadBalancer
baseurl = http://172.25.13.250/file/LoadBalancer ##默认的安装软件是在镜像下的Package安装包里面,所以在yun源需要加入lvs的安装包
gpgcheck = 0

在这里插入图片描述
在这里插入图片描述

  • (2)安装软件lvsadm

[root@server1 yum.repos.d]# yum install -y ipvsadm
[root@server1 yum.repos.d]# ipvsadm -l ##查看策略
[root@server1 yum.repos.d]# lsmod #内核模块,如果没有该模块可以安装该模块
modprobe 模块名 #安装该模块

在这里插入图片描述
在这里插入图片描述

  • (3)添加策略

[root@server1 yum.repos.d]# ipvsadm -A -t 172.25.254.100:80 -s rr ##添加轮询策略
[root@server1 yum.repos.d]# ipvsadm -a -t 172.25.254.100:80 -r 172.25.254.2 -g ##-g表示给真实服务器添加DR策略
[root@server1 yum.repos.d]# ipvsadm -a -t 172.25.254.100:80 -r 172.25.254.3 -g
[root@server1 yum.repos.d]# /etc/init.d/ipvsadm save ##保存策略
[root@server1 yum.repos.d]# ip addr add 172.25.13.100/24 dev eth0 ##添加VIP网卡

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • (4)如果开了varnish则要关掉该服务,因为varnish使用的也是80端口,会与ipvsadm冲突
    在这里插入图片描述
    server2,server3:

server2:

  • 安装apache并且配置默认发布目录下文件要发布的内容便于检测
    在这里插入图片描述

  • 添加VIP的网卡保持与VIP处于同一网段

[root@server2 html]# ip addr add 172.25.13.100/32 dev eth0 ##设置32位是为了防止别人链接到服务器,则调度器就没有意义了

在这里插入图片描述
server3:

同server2的配置相同
在这里插入图片描述 在这里插入图片描述
3.检测如下:

  • 在server1上(ipvsadm)
    在这里插入图片描述
  • 在物理机上(IP为172.25.254.77与realserver的IP处于同一网段)

在这里插入图片描述
在这里插入图片描述
发现没有在server2,和server3上轮询。

原因如下:

a.以上情况server1,server2,server3都能被访问到
b.如果绑定i的MAC地址为server1也就是lvs服务器,则在server2,server3上轮询是没有错的
c.如果绑定的MAC地址是server2或者server3则就会出现上述情况,即在测试端不会形成论叫而是直接去了MAC绑定的后端服务器,这在企业当中也是不被允许的。


  • 上述情况为绑定MAC地址为server2的情况

a.查看发现物理机的MAC地址与server2的相同
在这里插入图片描述
3.解决绑定MAC地址只为virtualserver即只为server1如下:

(1)解决如下:

需要配置server2,server3的路由策略

  • server2

yum install arptables_jf -y #server2,server3都需要下载
#当网络1广播需要172.25.254.100时它丢弃所有的网内请求
[root@server2 html]# arptables -A IN -d 172.25.254.100 -j DROP
#当它自身需要在网内发包时,伪装为自己原来的Ip172.25.254.2
[root@server2 html]# arptables -A OUT -s 172.25.13.100 -j mangle --mangle-ip-s 172.25.13.2
[root@server2 html]# arptables -nL
[root@server2 html]# /etc/init.d/arptables_jf save#保存策略
[root@server2 html]# /etc/init.d/arptables_jf start#开启服务

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • server3

配置同server2相同
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(2)再次测试如下:

  • 在物理机上

[root@foundation13 yum.repos.d]# arp -d 172.25.254.100 #把该模式关掉
[root@foundation13 yum.repos.d]# curl 172.25.13.100 ##再次访问发现是轮询调度,并且查看MAC地址的话也是server1上的虚拟IP的MAC

在这里插入图片描述
发现在server2和server3之间轮询调度

  • 在server1上查看,发现有server2和server3的访问次数
    在这里插入图片描述
  • 物理机的MAC地址与server1的MAC地址一致
    在这里插入图片描述

推荐阅读
  • LVS-DR直接路由实现负载均衡示例
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • mac php错误日志配置方法及错误级别修改
    本文介绍了在mac环境下配置php错误日志的方法,包括修改php.ini文件和httpd.conf文件的操作步骤。同时还介绍了如何修改错误级别,以及相应的错误级别参考链接。 ... [详细]
  • PartI:取经处: http:www.ramkitech.com201210tomcat-clustering ... [详细]
  • 怎么查看linux日志里请求量最高的url访问最多的_40道Linux运维面试精华题,请收下这份跳槽秘籍!...
    过一次年,结婚、存款、父母养老,一系列向钱看的事都在碾压我们本来还挺简单的神经,但难过没有出路,唯有找到好的方法和事业方向& ... [详细]
  • varnish 缓存服务器
    varnish缓存服务器局部性:空间局部时间局部http1.1时代过期时间条件式条件式请求:客户端发请求时给缓存服务器,先查本地缓存是否命 ... [详细]
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • 本文介绍了在Linux下安装和配置Kafka的方法,包括安装JDK、下载和解压Kafka、配置Kafka的参数,以及配置Kafka的日志目录、服务器IP和日志存放路径等。同时还提供了单机配置部署的方法和zookeeper地址和端口的配置。通过实操成功的案例,帮助读者快速完成Kafka的安装和配置。 ... [详细]
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • 本文介绍了禅道作为一款国产开源免费的测试管理工具的特点和功能,并提供了禅道的搭建和调试方法。禅道是一款B/S结构的项目管理工具,可以实现组织管理、后台管理、产品管理、项目管理和测试管理等功能。同时,本文还介绍了其他软件测试相关工具,如功能自动化工具和性能自动化工具,以及白盒测试工具的使用。通过本文的阅读,读者可以了解禅道的基本使用方法和优势,从而更好地进行测试管理工作。 ... [详细]
  • 本文总结了初学者在使用dubbo设计架构过程中遇到的问题,并提供了相应的解决方法。问题包括传输字节流限制、分布式事务、序列化、多点部署、zk端口冲突、服务失败请求3次机制以及启动时检查。通过解决这些问题,初学者能够更好地理解和应用dubbo设计架构。 ... [详细]
  • Nginx Buffer 机制引发的下载故障
    Nginx ... [详细]
  • ZooKeeper 学习
    前言相信大家对ZooKeeper应该不算陌生。但是你真的了解ZooKeeper是个什么东西吗?如果别人面试官让你给他讲讲ZooKeeper是个什么东西, ... [详细]
  • 域名解析系统DNS
    文章目录前言一、域名系统概述二、因特网的域名结构三、域名服务器1.根域名服务器2.顶级域名服务器(TLD,top-leveldomain)3.权威(Authoritative)域名 ... [详细]
  • Zookeeper 总结与面试题汇总
    Zookeeper总结与面试题汇总,Go语言社区,Golang程序员人脉社 ... [详细]
  • varnish 测试
    安装通过epel源yum安装[rootlocalhostvarnish]#rpm-qlvarnishetclogrotate.dvarnishetcvarnishetcvar ... [详细]
author-avatar
伊丽汇
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有