LVS-DR集群

本文介绍LVS-DR负载均衡的工作原理及配置步骤,包括客户端请求流程、IP冲突解决方法、网络环境配置及集群创建过程。同时提供健康检查脚本确保服务器状态良好。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

DR工作原理:
1、client向调度服务器发送请求,调度服务器把数据包转发给web服务器,web服务器直接把数据返回给client。
2、client请的报文头的目的ip是lvs调度器的,web服务器给client返回的源ip不是调度器的ip,所以client会把web发来的数据包丢掉。因此需要把web服务器伪装成lvs调度器。
3、把client伪装成调度器以后会发现,一个网络中出现了好几个相同的ip,此时会出现ip冲突。因此需要把web服务器伪装调度服务器的ip给藏起来(使用lo本地回环网卡),让别的服务器只认为有一个调度服务器的ip。
4、对于lvs调度服务而言,VIP(client使用的ip)一定在副接口上,RIP(用于连接web服务器的ip)一定要在主接口上。因为当lvs把数据包转发给web服务器的时候,默认使用的是主接口的ip,如果使用192.168.4.15(VIP)向web发送数据包,就会和web服务器的192.168.4.15冲突。
LVS-DR大部分工作否是在配置网络环境,具体的集群操作很简单。
在这里插入图片描述
配置网络环境:

LVS调度器:
	使用nmcli 为主机口配置ip 192.168.4.5
	
	为网卡创建副接口:
	cp /etc/sysconfig/networl-scripts/ifcfg-eth0{,:0}
	vim /etc/sysconfig/networl-scripts/ifcfg-eth0:0
	TYPE=Ethernet
	BOOTPROTO=none
	NAME=eth0:0
	DEVICE=eth0:0
	ONBOOT=yes
	IPADDR=192.168.4.15
	PREFIX=24
	重启网卡:systemctl restart network
	# 在rhel7和centos7中,network和networkManger同时管理网卡,
	# 如果网卡重启失败,关闭其中的一个就可以了
	# systemctl stop networkManger	#关闭networkManger

为web服务器配置网络环境:
	使用nmcli为web服务配置ip 192.168.4.100
	
	伪装调度器:
	# 这里不能使用和网络连接的物理网卡,只能使用lo(本地回环网卡),
	# 因为这个网卡只能主机自己识别,不会把伪装的ip暴露给其他主机,防止ip冲突
	cp /etc/sysconfig/network-scripts/ifcfg-lo{,:0}
	vim /etc/sysconfig/network-scripts/ifcfg-lo:0
	DEVICE=lo:0
	IPADDR=192.168.4.15		#伪装调度服务器ip
	NETMASK=255.255.255.255	#子网掩码必须是4个255,让ip变为主机型ip
	NETWORK=192.168.4.15	#网卡所属的网络
	BROADCAST=192.168.4.15	#广播地址
	ONBOOT=yes				#开机启动
	NAME=lo:0

	修改内核参数:(隐藏伪装的ip)
	vim /etc/sysctl.conf
	写入:
	net.ipv4.conf.all.arp_ignore = 1	#对除了lo的所有网卡有效
	net.ipv4.conf.lo.arp_ignore = 1		#仅对lo网卡有效
	net.ipv4.conf.lo.arp_announce = 2	#对除了lo的所有网卡有效
	net.ipv4.conf.all.arp_announce = 2	#仅对lo网卡有效
	# arp_ignore:
	# 当有主机广播询问谁是192.168.4.15时,arp_ignore = 1表示不回答,(隐藏ip)
	# 当有主机广播询问谁是192.168.4.15时,arp_ignore = 0表示回答,(暴露ip)
	# 当有主机广播询问谁是192.168.4.100时,arp_ignore = 1/0,都表示回答
	# 简答来说arp_ignore = 0回答所有,arp_ignore = 1该回答的回答、不该回答的不回答

	# arp_announce:
	# arp_announce = 2 表示不向任何主机主动声称自己的ip
	# arp_announce = 0 表示主动向其他主机声称自己的ip
	# arp_announce = 1 介于0和2之间。。。
		
	刷新/etc/sysctl.conf:
	sysctl -p

创建LVS集群:

	yum -y install ipvsadm
	ipvsadm -A -t 192.168.4.15:80 -s wrr	#创建集群,使用wrr调度
	ipvsadm -a -t 192.168.4.15:80 -r 192.168.4.100:80 -w 1 #默认是dr,权值1
	ipvsadm -a -t 192.168.4.15:80 -r 192.168.4.200:80 -w 1 #默认是dr,权值1

LVS健康检查:
LVS不具有健康检查功能,如果一台real server坏掉,那么客户机发送的请求就会变得无效了。如果想要检测real server是否坏掉,就需要自己定义脚本。

#!/bin/bash
VIP=192.168.4.15
RIP1=192.168.4.100
RIP2=192.168.4.200
while:
	do
		for ip in RIP1 RIP2
		do
			curl -s http://$ip &> /dev/null
			if[ $? -eq 0 ];then		#可以连接(完好)
				ipvsadm -Ln | grep -q $ip || ipvsadm -a -t $VIP -r $ip	#不存在则添加
			else		#不可以连接(损坏)	
				ipvsadm -Ln | grep -q $ip &&  ipvsadm -d -t $VIP -r $ip	#存在则删除
			fi
		done
	sleep 1
	done

写总结的第二十七天!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值