lvs集群实验(NAT\DR\Keepalived)

本文详细描述了如何在Linux环境下构建NAT和DR模式的负载均衡集群,包括配置步骤、工具如IPVS和Keepalived的使用,以及高可用性设计。涉及的内容包括服务器环境搭建、IPVS集群配置、真实服务器接入、NAT和路由规则设置,以及Keepalived的主备切换机制。
摘要由CSDN通过智能技术生成

负载均衡集群实验

一、构建NAT模式的负载均衡集群

1、实验环境

四台服务器,一台作为负载调度器以及路由,两台作为real server,负载调度器有一个外网网卡(192.168.47.128)和一个内网ip(192.168.169.128),两个real server上只有内网ip(192.168.169.150)和(192.168.169.250),并且要把两个real server的内网网关设置为负载调度器的内网ip(192.168.169.128),外加一台测试机
在这里插入图片描述

2、实验搭建步骤

(1)两台real server 服务器安装httpd服务

yum -y install httpd

(2)修改两台real server 服务器httpd服务默认网页内容,使访问可区分开
apache服务器1

echo "for apache1" > /var/www/html/index.html

apache服务器2

echo "for apache2" > /var/www/html/index.html

(3)修改real server 服务器的内网网关,设置为负载调度器的内网IP(192.168.169.128)

vim /etc/sysconfig/network-scripts/ifcfg-ens33
GATEWAY=192.168.169.128

在这里插入图片描述
或者使用命令临时修改网关

route add default gw 192.168.169.128

(4)配置负载调度器
①查看内核是否支持IPVS

grep -i "ip_vs" /boot/config-3.10.0-957.el7.x86_64

在这里插入图片描述
②安装ipvsadm工具

yum -y install ipvsadm

③创建集群——指定vip(集群虚拟IP)

ipvsadm -A -t 192.168.47.128:80 -s rr
		-A  #创建集群
		-t   #过滤条件,是否为tcp协议
		     #判断数据包的目标IP是否为VIP,并且判断数据包的目标端口是否是TCP 的80端口

④向已存在的集群中添加真实服务器

ipvsadm -a -t 192.168.47.128:80 -r 192.168.169.150:80 -m
ipvsadm -a -t 192.168.47.128:80 -r 192.168.169.250:80 -m
		-a  #添加真实服务器
		-t 192.168.47.128:80 #指定集群
		-r 192.168.169.150:80 #指定真实服务器 #-r,--real-server server-address
		-m #Use  masquerading  (network  access translation, or NAT)#开启网络访问地址转换(NAT)

补充:
ipvsadm 命令
#是编写规则的工具命令

查看集群:
	ipvsadm -ln
		-l	#列出规则
		-n	#数字化显示
创建集群:即编写规则将多台服务器组建成一个集群
	ipvsadm -A -t 192.168.10.120:80 -s rr
		-A	#创建集群
		-t	#过滤条件,是否是tcp协议
	#判断数据包的目标IP是否是VIP,并且判断数据包的目标端口是否是TCP的80端口
向已存在的集群中添加真实服务器
	ipvsadm -a -t 192.168.10.120:80 -r 192.168.11.130:80 -m
	ipvsadm -a -t 192.168.10.120:80 -r 192.168.11.140:80 -m
		-a	#添加真实服务器
		-m	#使用LVS的NAT模式
		-w	#指定权重,只有在算法是wrr时才使用
修改集群:
	ipvsadm -E -t 192.168.10.120:80 -s wrr
		-E	#修改集群的配置,算法...
修改真实服务器:
	ipvsadm -e -t 192.168.10.120:80 -r 192.168.11.130:80 -m -w 1
删除真实服务器:
	ipvsadm -d -t 192.168.10.120:80 -r 192.168.11.130:80
删除集群:
	ipvsadm -D -t 192.168.10.120:80
	#删除整个集群,不许写算法,并且集群内的真实服务器一并删除	
备份和恢复规则:
	ipvsadm-save -n > filename
	ipvsadm-restore < filename
	#注意事项:备份规则时,一定要使用-n选项数字化保存。

⑤负载调度器开启路由转发功能

vim /etc/sysctl.conf
	net.ipv4.ip_forward = 1

#sysctl -p 重新加载配置

(5)测试机测试(实现刷新一次变一次)
#curl 192.168.47.1128
#可见访问网页内容来自两个不同real server服务器
#可在负载调度服务器上使用ipvsadm -ln 查看两台真实机处理的请求次数
在这里插入图片描述
查看real server服务器上访问日志,查看访问来源ip
#tailf /var/log/httpd/access_log
在这里插入图片描述
(6)拓展—修改算法

ipvsadm -E -t 192.168.47.128 -s wrr  #修改集群的算法为加权轮询

ipvsadm -e -t 192.168.47.128:80 -r 192.168.169.150:80 -m -w 5 #修改集群中一个节点的权重

ab -c 100 -n 1000 http://192.169.47.128/index.html
	-c  #指定并发量
	-n  #指定线程数
	 http://192.169.47.128/index.html  #指定访问的文件

二、构建DR模式的负载均衡集群

拓展:APR
arp_annouce 通告
0 将本机任何接口上的任何地址都向外通告
1 尽可能避免向目标网络通告其网络不匹配的地址信息
2 仅向目标网络通告与其网络匹配的地址信息
arp_ignore 响应
0 只要本机配置有该ip就响应
1 仅在请求的目标地址配置在请求到达的接口上时,才给予响应。

1、实验环境

Director节点: (ens33 192.168.169.128 vip ens33:0 192.168.169.140)
Real server1: (ens33 192.168.169.150 vip lo:0 192.168.169.140)
Real server2: (ens33 192.168.169.250 vip lo:0 192.168.169.140)
路由机 (ens33 192.168.47.130 ens34 192.168.169.130)
测试机 (ens33 192.168.47.xx)

2、安装和配置

(1)两个real server安装网站服务

yum -y install httpd

2、Director server安装ipvsadm

yum -y install ipvsadm

3、配置DS
①添加集群的虚拟接口VIP

cp -a /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/sysconfig/network-scripts/ifcfg-ens33:0
vim /etc/sysconfig/network-scripts/ifcfg-ens33:0
			IPADDR=192.168.169.140
			NAME=ens33:0
			DEVICE=ens33:0
ifup ens33:0
ifconfig  #查看网卡和IP信息

②优化配置(关闭路由重定向,防止向路由器发送路由表,导致访问无法在两个real server服务器之间跳转)

vim /etc/sysctl.conf
	net.ipv4.conf.all.send_redirects = 0  #所有访问路径
	net.ipv4.conf.default.send_redirects = 0
	net.ipv4.conf.ens33.send_redirects = 0			
	注:三个级别all,default以及某网卡,这里单选择all即可

在这里插入图片描述

sysctl -p  #重载配置

③配置负载调度器
检查内核是否支持IPVS

grep -i "ip_vs" /boot/config-3.10.0-957.el7.x86_64

构建集群—并添加服务器到集群中

ipvsadm -A -t 192.168.169.140:80 -s rr
ipvsadm -a -t 192.168.169.140:80 -r 192.168.169.150:80 -g
ipvsadm -a -t 192.168.169.140:80 -r 192.168.169.250:80 -g
ipvsadm ln   #查看集群配置情况

在这里插入图片描述④配置RS1
添加虚拟网卡接口

cp -a /etc/sysconfig/network-scripts/ifcfg-lo /etc/sysconfig/network-scripts/ifcfg-lo:0	
vim /etc/sysconfig/network-scripts/ifcfg-lo:0
			DEVICE=lo:0
			IPADDR=192.168.169.140
			NETMASK=255.255.255.255#使一个ip地址为一个广播域,避免与其他网卡抢IP
systemctl restart network #重启网络服务,更新网卡设置

优化配置,调整内核参数

vim/etc/sysctl.conf
net.ipv4.conf.all.arp_ignore = 1  #系统只响应目的IP为本地IP的ARP请求
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.lo.arp_ignore = 1
			 
net.ipv4.conf.all.arp_announce = 2 #系统不适用IP包的原地址来设置ARP请求的源地址,而选择发送接口的IP地址
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_announce = 2

创建首页文件

vim index.html
For apache1

⑤配置RS2
添加虚拟网卡接口

cp -a /etc/sysconfig/network-scripts/ifcfg-lo /etc/sysconfig/network-scripts/ifcfg-lo:0	
vim /etc/sysconfig/network-scripts/ifcfg-lo:0
			DEVICE=lo:0
			IPADDR=192.168.169.140
			NETMASK=255.255.255.255
			NAME=lo:0

优化配置,调整内核参数

vim /etc/sysctl.conf
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.lo.arp_ignore = 1
			 
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_announce = 2
sysctl -p

创建首页文件

vim index.html
	For apache2

⑥设置路由规则
防火墙规则:

iptables -t nat -A PREROUTING -d 192.168.10.130 -p tcp --dport 80 -j DNAT --to-destination 192.168.11.200
		位置:
			-A PREROUTING	#防火墙规则所在的位置,即从哪里过滤数据包
		条件:
			-d 192.168.10.130	#判断数据包的目标地址
			-p tcp				#判断数据包的传输协议
			--dport 80			#判断数据包的目标端口
		#注意事项:写端口作为条件时,必须先声明协议类型
		策略:
			-j DNAT --to-destination 192.168.11.200
			DNAT	#目标地址转换
			--to-destination	#声明转换对象
			
iptables -t nat -A PREROUTING -i ens33 -d 192.168.47.130(路由公网网卡IP地址) -p tcp --dport 80 -j DNAT --to-destination 192.168.169.140(集群虚拟IP地址VIP)##进站规则

在这里插入图片描述

##数据出站规则

iptables -t nat -A POSTROUTING -o ens33 -s 192.168.169.140(集群虚拟IP地址VIP) -p tcp --sport 80 -j SNAT --to-source 192.168.47.130(路由公网网卡IP地址)
位置:
	-t nat -A PREROUTING
	nat			#表
	PREROUTING	#链
规则:
	-i ens33	#匹配数据包入站网卡
	-o ens33	#匹配数据包出站网卡
Iptables -t nat -L 查看NAT防火墙规则

⑦测试机测试(访问刷新看效果)
在这里插入图片描述

三、高可用性集群

1、实验环境

	Keepalived1+lvs1(DS1):192.168.169.140
	Keepalived2+lvs2(DS2):192.168.169.140
	Real server1 :192.168.169.150
	Real server2 :192.168.169.250
	测试机

2、实验搭建

在DR集群的基础上搭建
(1)主调度器:
①主负载调度器上,配置集群
创建集群

ipvsadm -A -t 192.168.47.128:80 -s rr

-A #创建集群
-t #过滤条件,是否为tcp协议
#判断数据包的目标IP是否为VIP,并且判断数据包的目标端口是否是TCP 的80端口

向已存在的集群中添加真实服务器

ipvsadm -a -t 192.168.47.128:80 -r 192.168.169.150:80 -m
ipvsadm -a -t 192.168.47.128:80 -r 192.168.169.250:80 -m

-a #添加真实服务器
-t 192.168.47.128:80 #指定集群
-r 192.168.169.150:80 #指定真实服务器 #-r,–real-server server-address
-m #Use masquerading (network access translation, or NAT)#开启网络访问地址转换(NAT)

ipvsadm -ln 查看集群信息

a.安装gcc编译环境
b.安装支持软件kernel-devel、openssl-devel、popt-devel、ipvsadm
c.再编译安装keepalived,需指定内核路径

make&&make install
d.编辑vim /etc/keepalived/keepalived.conf

vim /etc/keepalived/keepalived.conf
global_defs {
		router_id DR1#本服务器的名称
	}
vrrp_instance VI_1 {
		state MASTER#本服务器的性质
		interface ens33#心跳监听的网卡名称 
		virtual_router_id 51#虚拟路由的ID号
		priority 100#优先级,数值越大优先级越高  
		advert_int 1
authentication {
			auth_type PASS
			auth_pass 1111
			}
virtual_ipaddress {
		192.168.169.140#指定负载调度器的VIP
			}
	}
virtual_server 192.168.169.140 80#集群的IP {
					 delay_loop 6
					lb_algo rr#负载均衡算法
					lb_kind DR#lvs的模式
					persistence_timeout 0 #连接保持时间(访问连接成功后多少秒内,收到相同请求,连接至上一访问的服务器)
					 protocol TCP#指定TCP协议
					
real_server 192.168.169.150 80#集群中RS1服务器地址 {
					weight 1
					TCP_CHECK {
					connect_timeout 3#连接检测次数
					nb_get_retry 3
					delay_before_retry 3
					    }
				}
real_server 192.168.169.250 80#集群中RS2服务器地址 {
		weight 1
		TCP_CHECK {
			connect_timeout 3
			nb_get_retry 3
			delay_before_retry 3
		}
	}
}
					

2、备份调度器–配置为负载调度器
①配置子网卡

cp -a ifcfg-ens33 ifcfg-ens33:0
vim ifcfg-ens33:0
	DEVICE=ens33:0
	IPADDR=192.168.169.140 #集群VIP

②使子网卡IP可以与主调度器子网卡同IP且可生效

vim ifup-eth

将网卡IP地址判断相同时的下一步操作注释
在这里插入图片描述
③配置内核参数

vim /etc/sysctl.conf
net.ipv4.conf.all.send_redirects = 0  #所有访问路径
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0


sysctl -p

④配置备份负载调度器
a.安装gcc编译环境
b.安装支持软件kernel-devel、openssl-devel、popt-devel、ipvsadm

yum -y install kernel-devel、openssl-devel、popt-devel、ipvsadm
		c.安装keepalived软件
yum -y install keepalived
		d.将主负载调度器的配置文件keepalived.conf传给从调度器上,然后修改
scp /etc/keepalived/keepalived.conf 192.168.169.130:/etc/keepalived/
vim /etc/keepalived/keepalived.conf
				global_defs {
				   router_id DS2
				}
				
				vrrp_instance VI_1 {
				    state SLAVE
				    interface ens33
				    virtual_router_id 51
				    priority 50
				    advert_int 1
				    authentication {
				        auth_type PASS
				        auth_pass 1111
				    }
				    virtual_ipaddress {
				        192.168.169.140
				    }
				}
				virtual_server 192.168.169.140 80 {
				    delay_loop 6
				    lb_algo rr
				    lb_kind DR
				    persistence_timeout 0
				    protocol TCP
				
				    real_server 192.168.169.150 80 {
				        weight 1
				        TCP_CHECK {
				            connect_timeout 3
				            nb_get_retry 3
				            delay_before_retry 3
				        }
				        }
				    real_server 192.168.169.250 80 {
				        weight 1
				        TCP_CHECK {
				            connect_timeout 3
				            nb_get_retry 3
				            delay_before_retry 3
				        }
				}
				}

在这里插入图片描述
3、测试机测试

curl 192.168.169.140

在这里插入图片描述
访问成功,且为轮询

补充:
身份:
MASTER #主服务器
BACKUP #备用服务器

Keepalived的工作模式:
抢占模式:(修改配置文件中的priority 50数字,修改优先级)

  1. 两台服务器都设置为MASTER状态,则取决于优先级
    优先级高的会自动认定为主(MASTER),优先级低的则认定为备(BACKUP)
    当主出现故障时,备会提升身份MASTER,当主修复后会抢回MASTER身份。
    #此种配置永远是抢占模式

  2. 两台服务器一台:MASTER,另一台是:BACKUP
    MASTER优先级高,BACKUP优先级低

  3. 两台服务器一台:MASTER,另一台是:BACKUP
    MASTER优先级低,BACKUP优先级高
    非抢占模式:

  4. 两台都是BACKUP状态时,仍旧是通过优先级进行身份认定,但故障出现和恢复后,不进行抢占
    配置文件中添加该选项:nopreempt

总结:前三种模式,均为抢占模式,第四种为非抢占模式
优先级功能实现原理:PRI(最终值)=PRI(初始值)+NI(可调整优先级)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值