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

LVS负载均衡DR模式

LVS负载均衡----DR模式一:DR模式的定义直接路由(DirectRouting)​简称DR模式,采用半开放式的网络结构,与TUN模式的结构类型,但各节点并不是分散在各地,而

LVS 负载均衡 ---- DR模式


一:DR模式的定义



  • 直接路由(Direct Routing)



  • ​ 简称DR模式,采用半开放式的网络结构,与TUN模式的结构类型,但各节点并不是分散在各地,而是与调度器位于同一个物理网络; 负载调度器与各节点服务器通过本地网络连接,不需要建立专用的IP隧道。




二:LVS-DR 中的ARP问题



  • 在LVS-DR负载均衡集群中,负载均衡器与节点服务器都要配置相同的VIP地址



  • 在局域网中具有相同的IP地址,势必会造成各服务器ARP通信的紊乱



  • 当一个ARP广播发送到LVS-DR集群时,因为负载均衡器和节点服务器都是连接到相同的网络上的,它们都会接收到ARP广播



  • 此时只有前端的负载均衡器进行响应,其他节点服务器不应该响应ARP广播



  • 对节点服务器进行处理,使其不响应针对VIP的ARP请求



  • 使用虚接口lo:0 承载VIP地址



  • 设置内核参数arp_ignore=1:系统只响应目的IP为本地IP的ARP请求
    在这里插入图片描述



  • RealServer返回报文(源IP是VIP)经路由器转发,在重新封装报文时,需要先获取路由器的MAC地址



  • 发送ARP请求时,Linux默认使用IP包的源IP地址(即VIP) 作为ARP请求包中的源IP地址,而不使用发送接口(例如ens33) 的IP地址





  • 此时新来的请求报文,路由器根据ARP表项,会将该报文转发给
    RealServer, 从而导致Director的VIP失效

  • 解决方法:
    ● 对节点服务器进行处理,设置内核参数arp_ announce=2: 系统不使用IP包的源地址来设置ARP请求的源地址,而选择发送接口的IP地址
    在这里插入图片描述


三:实验配置


1、实验环境

(1)4台centos7虚拟机,2台作为调度服务器(lvs),2台作为节点服务器(web)

(2)客户端主机能够通过虚拟ip地址,访问到后台的 Web服务器的网页
在这里插入图片描述


2、实验步骤




  • 在LVS01 、LVS02 上配置



(配置都相同,就IP地址不同)


(1)修改主机名,并安装软件包

[root@localhost ~]# hostnamectl set-hostname lvs01
[root@localhost ~]# su
[root@lvs01 ~]#
[root@lvs01 ~]# yum install keepalived ipvsadm -y

(2)修改参数内核文件

[root@lvs01 ~]# vim /etc/sysctl.conf
‘末行添加’
net.ipv4.ip_forward=1 ‘启动路由转发功能’
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0 ‘关闭重定向功能’
net.ipv4.conf.ens33.send_redirects = 0[root@lvs01 ~]# sysctl -p ‘让上述配置生效’

(3)设置虚拟地址

[root@lvs01 ~]# cd /etc/sysconfig/network-scripts/
[root@lvs01 network-scripts]# ls
[root@lvs01 network-scripts]# cp -p ifcfg-ens33 ifcfg-ens33:0
[root@lvs01 network-scripts]# vim ifcfg-ens33:0
‘删除原有内容,添加虚拟地址’
DEVICE=ens33:0
OnBOOT=yes
IPADDR=192.168.100.10
NETMASK=255.255.255.0

(4)LVS服务器创建脚本便于service管理

[root@lvs01 network-scripts]# cd /etc/init.d/
[root@lvs01 init.d]# ls
functions netconsole network README
[root@lvs01 init.d]# vim dr.sh
#!/bin/bash
GW=192.168.100.1
VIP=192.168.100.10 ‘虚拟ip’
RIP1=192.168.100.201 ‘真实web服务器IP地址’
RIP2=192.168.100.202
case "$1" in
start)/sbin/ipvsadm --save > /etc/sysconfig/ipvsadm ‘保存配置’systemctl start ipvsadm ‘启动配置’/sbin/ifconfig ens33:0 $VIP broadcast $VIP netmask 255.255.255.255 broadcast $VIP up /sbin/route add -host $VIP dev ens33:0 ‘添加路由网段信息’/sbin/ipvsadm -A -t $VIP:80 -s rr ‘指定虚拟服务访问入口,指定轮询算法’/sbin/ipvsadm -a -t $VIP:80 -r $RIP1:80 -g ‘指定真实服务器,dr模式’/sbin/ipvsadm -a -t $VIP:80 -r $RIP2:80 -gecho "ipvsadm starting ---- ------[ok]";;
stop)/sbin/ipvsadm -C ‘清空缓存’systemctl stop ipvsadm ‘关闭服务’ifconfig ens33:0 down ‘关闭接口’route del $VIP ‘删除路由信息’echo "ipvsamd stoped--------------[ok]";;
status)if [ ! -e /var/lock/subsys/ipvsadm ]; then ‘判断文件存在与决定状态’echo "ipvsadm stoped----------------------"exit 1elseecho "ipvsamd Runing------------[ok]"fi;;
*)echo "Usage: $0 {start I stop I status }"exit 1
esac
exit 0[root@lvs01 init.d]# chmod +x dr.sh ‘给权限’,先不要执行脚本

(5)把网卡NAT模式改为仅主机模式,修改IP地址,重启网络

[root@lvs01 init.d]# vim /etc/sysconfig/network-scripts/ifcfg-ens33

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

[root@lvs01 init.d]# service dr.sh start ‘开启dr脚本’



  • 在web01 、web02 上配置



(配置基本相同,网页内容、IP地址需改动)


(1)修改主机名, 安装httpd

[root@localhost ~]# hostnamectl set-hostname web01
[root@localhost ~]# su
[root@web01 ~]# systemctl stop firewalld.service
[root@web01 ~]# setenforce 0
[root@web01 ~]# yum install httpd -y

(2)添加网页内容,用于之后的验证

[root@web01 ~]# cd /var/www/html
[root@web01 html]# vim index.html
‘给web01添加1行网页内容’

this is kg web‘给web02添加1行网页内容’

this is ac web



(3)设置回环地址,指定虚拟IP地址

[root@web01 html]# cd /etc/sysconfig/network-scripts/
[root@web01 network-scripts]# cp -p ifcfg-lo ifcfg-lo:0
[root@web01 network-scripts]# vim ifcfg-lo:0
‘删除原有内容,添加4行内容’
DEVICE=lo:0
IPADDR=192.168.100.10 ‘指定VIP’
NETMASK=255.255.255.0
OnBOOT=yes

(4)编写web 服务脚本

[root@web01 network-scripts]# cd /etc/init.d
[root@web01 init.d]# vim web.sh
#!/bin/bash
VIP=192.168.100.10
case "$1" instart)ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP/sbin/route add -host $VIP dev lo:0echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignoreecho "2" >/proc/sys/net/ipv4/conf/lo/arp_announceecho "1" >/proc/sys/net/ipv4/conf/all/arp_ignoreecho "2" >/proc/sys/net/ipv4/conf/all/arp_announcesysctl -p >/dev/null 2>&1echo "RealServer Start OK";;stop)ifconfig lo:0 downroute del $VIP /dev/null 2>&1echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignoreecho "0" >/proc/sys/net/ipv4/conf/lo/arp_announceecho "0" >/proc/sys/net/ipv4/conf/all/arp_ignoreecho "0" >/proc/sys/net/ipv4/conf/all/arp_announceecho "RealServer Stopd";;*)echo "Usage: $0 {start|stop}"exit 1
esac
exit 0[root@web01 init.d]# scp /etc/init.d/web.sh root@192.168.34.184:/etc/init.d/ ‘把web.sh脚本远程复制到另一台web服务器上’‘省去给另一台web的配置’

到另一台web服务器中查看下:


(5)设置网卡为仅主机模式,修改IP地址

[root@web01 init.d]# vim /etc/sysconfig/network-scripts/ifcfg-ens33

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-odffJqGC-1579240796865)(C:\Users\xumin\AppData\Roaming\Typora\typora-user-images\1579233120293.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gv1cEWbz-1579240796865)(C:\Users\xumin\AppData\Roaming\Typora\typora-user-images\1579234951440.png)]

[oot@web02 network-scripts]# service network restart ‘开启网络’
[root@web02 network-scripts]# ifconfig ‘查看地址’

(6)给权限 ,执行web.sh 脚本

root@web01 init.d]# cd /etc/init.d
[root@web01 init.d]# chmod +x web.sh ‘给web.sh 权限’
[root@web01 init.d]# service web.sh start ‘执行脚本’

(7)在两台web服务器浏览器上输入127.0.0.1 验证

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1gIRIQQ0-1579240796866)(C:\Users\xumin\AppData\Roaming\Typora\typora-user-images\1579235285563.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-82hEiEKM-1579240796866)(C:\Users\xumin\AppData\Roaming\Typora\typora-user-images\1579235336724.png)]


推荐阅读
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 本文介绍了在rhel5.5操作系统下搭建网关+LAMP+postfix+dhcp的步骤和配置方法。通过配置dhcp自动分配ip、实现外网访问公司网站、内网收发邮件、内网上网以及SNAT转换等功能。详细介绍了安装dhcp和配置相关文件的步骤,并提供了相关的命令和配置示例。 ... [详细]
  • 如何使用PLEX播放组播、抓取信号源以及设置路由器
    本文介绍了如何使用PLEX播放组播、抓取信号源以及设置路由器。通过使用xTeve软件和M3U源,用户可以在PLEX上实现直播功能,并且可以自动匹配EPG信息和定时录制节目。同时,本文还提供了从华为itv盒子提取组播地址的方法以及如何在ASUS固件路由器上设置IPTV。在使用PLEX之前,建议先使用VLC测试是否可以正常播放UDPXY转发的iptv流。最后,本文还介绍了docker版xTeve的设置方法。 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • Skywalking系列博客1安装单机版 Skywalking的快速安装方法
    本文介绍了如何快速安装单机版的Skywalking,包括下载、环境需求和端口检查等步骤。同时提供了百度盘下载地址和查询端口是否被占用的命令。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • 本文介绍了在Linux下安装和配置Kafka的方法,包括安装JDK、下载和解压Kafka、配置Kafka的参数,以及配置Kafka的日志目录、服务器IP和日志存放路径等。同时还提供了单机配置部署的方法和zookeeper地址和端口的配置。通过实操成功的案例,帮助读者快速完成Kafka的安装和配置。 ... [详细]
  • POCOCLibraies属于功能广泛、轻量级别的开源框架库,它拥有媲美Boost库的功能以及较小的体积广泛应用在物联网平台、工业自动化等领域。POCOCLibrai ... [详细]
  • 进入配置文件目录:[rootlinuxidcresin-4.0.]#cdusrlocalresinconf查看都有哪些配置文件:[rootlinuxid ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • 本文介绍了在mac环境下使用nginx配置nodejs代理服务器的步骤,包括安装nginx、创建目录和文件、配置代理的域名和日志记录等。 ... [详细]
  • mac php错误日志配置方法及错误级别修改
    本文介绍了在mac环境下配置php错误日志的方法,包括修改php.ini文件和httpd.conf文件的操作步骤。同时还介绍了如何修改错误级别,以及相应的错误级别参考链接。 ... [详细]
  • 本文介绍了5个基本Linux命令行工具的现代化替代品,包括du、top和ncdu。这些替代品在功能上进行了改进,提高了可用性,并且适用于现代化系统。其中,ncdu是du的替代品,它提供了与du类似的结果,但在一个基于curses的交互式界面中,重点关注占用磁盘空间较多的目录。 ... [详细]
  • Python项目实战10.2:MySQL读写分离性能优化
    本文介绍了在Python项目实战中进行MySQL读写分离的性能优化,包括主从同步的配置和Django实现,以及在两台centos 7系统上安装和配置MySQL的步骤。同时还介绍了创建从数据库的用户和权限的方法。摘要长度为176字。 ... [详细]
author-avatar
0.0
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有