LVS-DR模式+keepalived

一,DR模式介绍
1,数据包流向分析

1.用户发送请求到Director Server,请求的数据报文(源IP是CIP,目标IP是VIP)到达内核空间。
2.由于DS和RS在同一个网络中,所以是通过二层数据链路层来传输。
3.内核空间判断数据包的目标IP是本机IP,此时IPVS比对数据包请求的服务是否为集群服务,若是,重新封装数据包,修改源MAC地址为DIP的MAC地址,目标MAC地址为RIP的MAC地址,源IP地址与目标IP地址没有改变,然后将数据包发送给Real Server.
4.RS发现请求报文的MAC地址是自己的MAC地址,就接收此报文,重新封装报文(源IP地址为VIP,目标IP为CIP),将响应报文通过lo接口传送给eth0网卡然后向外发出。
5.RS直接将响应报文传送到客户端。

  1. LVS-DR模型的特点
    1.RS和DS必须在同一个物理网络中。
    2.RS可以使用私有地址,也可以使用公网地址,如果使用公网地址,可以通过互联网对RIP进行直接访问。
    3.所有的请求报文经由Director。 Server,但响应报文必须不能经过Director Server。
    4.RS的网关绝不允许指向DIP(不允许数据包经过director)。
    5.RS上的lo接口配置VIP的IP地址。
    二,keepalived
    1.介绍
    keepalived是一个基于VRRP(virtual route redundent protocol)协议来实现的LVS服务高可用方案,可以利用其来避免单点故障。
    一个LVS服务会有2台 服务器运行keepalived,一台为主服务器,一台为备服务器,但对外表现一个虚拟IP。
    主服务会发送特定的消息给备服务器,当备服务器无法接收到主服务器的消息时,即认为主服务器宕机,备服务器会接管主服务器的VIP,继续提供服务,从而保证高可用性。
    2.特点
    优点: 轻量级、配置简单
    缺点:不能实现服务状态级别的高可用
    3.HA与LB的区别
    HA:实现服务的高可用
    LB:实现流量入口的最大化
    三,实验
    准备工作检查防火墙和网络
systemctl stop firewalld			##关闭防火墙
systemctl disable firewalld        
setenforce 0

主负载调度器1 #192.168.35.40
备负载调度器2#192.168.35.30
web服务器1 #192.168.35.10
lo:0 (VIP) #192.168.35.100
web服务器2 # 192.168.35.20
lo:0 (VIP) #192.168.35.100
centos客户端#192.168.35.150
centos客户端#192.168.35.160

LVS调度服务器配置(主-备)

yum -y install ipvsadm
modprobe ip_vs     #加载ip_vs模块
cat /proc/net/ip_vs  #查看ip_vs版本信

在这里插入图片描述

cd /etc/sysconfig/network-scripts/
cp -p ifcfg-ens33 ifcfg-ens33:0
vim ifcfg-ens33:0
	DEVICE=ens33:0
	ONBOOT=yes
	IPADDR=192.168.35.100
	NETMASK=255.255.255.255
ifup ens33:0
ifconfig ens33:0
systemctl restart network
vim /etc/sysctl.conf	#调整proc响应参数
	net.ipv4.ip_forward = 0	 #关闭路由转发
	net.ipv4.conf.all.send_redirects = 0	   #关闭所有重定向
	net.ipv4.conf.default.send_redirects = 0	#关闭默认重定向
	net.ipv4.conf.ens33.send_redirects = 0

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

两台LVS服务器开启ipvsadm

modprobe ip_vs
cat /proc/net/ip_vs

在这里插入图片描述
两台LVS服务器配置负载分配策略

ipvsadm-save > /etc/sysconfig/ipvsadm
systemctl start ipvsadm
systemctl status ipvsadm

在这里插入图片描述

在这里插入图片描述
编写脚本方便管理ipvsadm命令

vim /opt/dd.sh
#!/opt/dd.sh
	ipvsadm -C		##清除表中所有记录
	ipvsadm -A -t 192.168.35.100:80 -s rr	
	ipvsadm -a -t 192.168.35.100:80 -r 192.168.35.10:80 -g	##指定一条新的vip服务器真实地址为192.168.35.10,工作模式为DR
	ipvsadm -a -t 192.168.35.100:80 -r 192.168.35.20:80 -g	##指定一条新的vip服务器真实地址为192.168.35.20,工作模式为DR
	ipvsadm

在这里插入图片描述
在这里插入图片描述
web站点服务器配置
web服务器1:

cd /etc/sysconfig/network-scripts/
cp -p ifcfg-lo ifcfg-lo:0
vim ifcfg-lo:0
	DEVICE=lo:0
	ONBOOT=yes
	IPADDR=192.168.35.100
	NETMASK=255.255.255.255
ifcfg lo:0
route add -host 192.168.35.100 dev lo:0 		##禁锢路由
route -n
vim /etc/rc.local		##配置启动管理执行路由禁锢
	/sbin/route add -host 192.168.35.100 dev lo:0
yum -y install httpd

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

两台web服务器调整内核的ARP响应参数

vim /etc/sysctl.conf
	net.ipv4.conf.lo.arp_ignore = 1  ##环形接口的策略
	net.ipv4.conf.lo.arp_announce = 2		##环形接口的响应策略
	net.ipv4.conf.all.arp_ignore = 1		##所有接口的策略
	net.ipv4.conf.all.arp_announce = 2		##所有接口的响应策略

web1:

vim /var/www/html/index.html
	<html>
	<body>
	<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
	<h1>this is klkl web</h1>
	</body>
	</html>

web2:

vim /var/www/html/index.html
	<html>
	<body>
	<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
	<h1>this is zwzyt web</h1>
	</body>
	</html>

访问客户端
在这里插入图片描述
访问192.168.35.100
在这里插入图片描述
配置keepalived
两台LVS服务器安装

yum -y install keepalived
cd /etc/keepalived/
cd /etc/keepalived/
cp keepalived.conf keepalived.conf.bak

vim keepalived.conf

	global_defs {             #定义全局参数
    	  router_id lvs_01		#热备组内的设备名称不能一致
}
	vrrp_instance vi_1 {       #定义VRRP热备实例参数
    	  state MASTER         #指定热备状态,主为master,备为backup
     	 interface ens33      #指定承载vip地址的物理接口
    	  virtual_router_id 51 #指定虚拟路由器的ID号,每个热备组保持一致
   	 	  priority 110		   #指定优先级,数值越大越优先
    	  advert_int 1
      	authentication {		##加密
           auth_type PASS		
           auth_pass 6666
 }
	virtual_ipaddress {        #指定集群VIP地址
      192.168.35.100
}
}
	virtual_server 192.168.35.100 80 { 
      lb_algo rr                #指定调度算法,轮询(rr)
      lb_kind DR				#指定集群工作模式,直接路由DR
      persistence_timeout 6		#健康检查的间隔时间
      protocol TCP				#应用服务采用的是TCP协议
}
	real_server 192.168.35.10 80 {
      weight 1					#节点权重
      TCP_CHECK {
          connect_port 80		#添加检查的目标端口
          connect_timeout 3		#添加连接超时
          nb_get_retry 3		#添加重试次数
          delay_before_retry 3	#添加重试间隔
   }
}
	real_server 192.168.35.20 80 {
      weight 1
      TCP_CHECK {
          connect_port 80
          connect_timeout 3
          nb_get_retry 3
          delay_before_retry 3
   }
}
}

LVS两台服务器均开启keepalived

systemctl  start  keepalived
systemctl  status keepalived

在这里插入图片描述
查看虚拟网卡信息
在这里插入图片描述
在这里插入图片描述
验证一下
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值