Keepalived+LVS-DR 高可用负载均衡搭建

Keepalived+LVS-DR 高可用负载均衡搭建

​ 配置环境采用的是 Ubuntu 系统

LVS简介

​ LVS集群采用IP[负载均衡技术]和基于内容请求分发技术。调度器具有很好的吞吐率,将请求均衡地转移到不同的服务器上执行,且调度器自动屏蔽掉服务器的故障,从而将一组服务器构成一个高性能的、高可用的[虚拟服务器]。整个[服务器集群]的结构对客户是透明的,而且无需修改客户端和服务器端的程序。为此,在设计时需要考虑系统的透明性、可伸缩性、高可用性和易管理性。

NAT模式

​ 通过网络地址转换的方法来实现调度的。首先调度器(LB)接收到客户的请求数据包时(请求的目的IP为VIP),根据调度算法决定将请求发送给哪个后端的真实服务器(RS)。然后调度就把客户端发送的请求数据包的目标IP地址及端口改成后端真实服务器的IP地址(RIP),这样真实服务器(RS)就能够接收到客户的请求数据包了。真实服务器响应完请求后,查看默认路由(NAT模式下我们需要把RS的默认路由设置为LB服务器。)把响应后的数据包发送给LB,LB再接收到响应包后,把包的源地址改成虚拟地址(VIP)然后发送回给客户端。

TUN模式(隧道模式)

​ 调度器(LB)接收到客户请求包,进行IP Tunnel封装。即在原有的包头加上IP Tunnel的包头。然后通过IP隧道转发到真实的服务器。真实的服务器RS节点服务器根据IP Tunnel包头信息(此时就有一种逻辑上的隐形隧道,只有LB和RS之间懂)收到请求包,然后解开IP Tunnel包头信息将响应处理后的数据直接返回给客户端。

DR模式(直接路由模式)

​ DR模式是通过改写请求报文的目标MAC地址,将请求发给真实服务器的,而真实服务器响应后的处理结果直接返回给客户端用户。同TUN模式一样,DR模式可以极大的提高集群系统的伸缩性。而且DR模式没有IP隧道的开销,对集群中的真实服务器也没有必要必须支持IP隧道协议的要求。但是要求调度器LB与真实服务器RS都有一块网卡连接到同一物理网段上,必须在同一个局域网环境。

FULLNAT转发模式

​ 针对淘宝业务开发的一种转发模式,FULLNAT转发数据包是类似NAT模式,IN和OUT数据包都是经过LVS;唯一的区别:后端RealServer 或者交换机不需要做任何配置。

Keepalived 安装及配置

​ LVS安装分为LB服务器的安装,以及客户端的安装配置,其中LB服务器(主备)安装keepalived需要对主备服务器进行不同配置。

LB服务器安装 (192.168.73.120(主)192.168.73.121(备))

1、安装keepalived

sudo apt-get install keepalived

2、(LB主服务器master 配置)创建或修改配置文件/etc/keepalived/keepalived.conf

! Configuration File for keepalived
 
global_defs {					#全局配置
#	notification_email {		#指定keepalived在发生切换时需要发送email到的对象,一行一个
#          root@localhost        	#指定收件人邮箱
#	}
#	notification_email_from keepalived@localhost 	#指定发件人
#	smtp_server 127.0.0.1	    	 #指定smtp服务器地址
#	smtp_connect_timeout 30		#指定smtp连接超时时间
	router_id keepalived01 		#此处注意router_id为负载均衡标识,在局域网内应该是唯一的。
}
 
vrrp_instance VI_1 {
	state MASTER 			#指定那个为master,那个为backup,如果设置了nopreempt这个值不起作用,主备考priority决定
	interface ens33 			#设置实例绑定的网卡
	virtual_router_id 51	#VPID标记
	priority 100			#优先级,高优先级竞选为master
	advert_int 1			#检查间隔,默认1秒
	authentication {		#设置认证
		auth_type PASS
		auth_pass 111333
	}
	virtual_ipaddress {
		192.168.73.200
	}
}
 
virtual_server 192.168.73.200 80 {
    delay_loop 2
    lb_algo wrr
    lb_kind DR
    protocol TCP
 
    sorry_server 127.0.0.1 80
 
    real_server 192.168.73.128 80 {
        weight 3
        HTTP_GET {
	url {
		path /
		status_code 200
	}
        connect_timeout 1
        nb_get_retry 3
        delay_before_retry 1
        }
    }
    real_server 192.168.73.129 80 {
        weight 1
        HTTP_GET { 
        url {
                path /
                status_code 200
        }
        connect_timeout 1
        nb_get_retry 3
        delay_before_retry 1
        }
    }
 
 
}

3、(LB主服务器backup配置)创建或修改配置文件/etc/keepalived/keepalived.conf

! Configuration File for keepalived
 
global_defs {					#全局配置
#	notification_email {		#指定keepalived在发生切换时需要发送email到的对象,一行一个
#          root@localhost        	#指定收件人邮箱
#	}
#	notification_email_from keepalived@localhost 	#指定发件人
#	smtp_server 127.0.0.1	    	 #指定smtp服务器地址
#	smtp_connect_timeout 30		#指定smtp连接超时时间
	router_id keepalived01 		#此处注意router_id为负载均衡标识,在局域网内应该是唯一的。
}
 
vrrp_instance VI_1 {
	state BACKUP 			#指定那个为master,那个为backup,如果设置了nopreempt这个值不起作用,主备考priority决定
	interface ens33 			#设置实例绑定的网卡
	virtual_router_id 51	#VPID标记
	priority 90			#优先级,高优先级竞选为master,此处设置需低于master
	advert_int 1			#检查间隔,默认1秒
	authentication {		#设置认证
		auth_type PASS
		auth_pass 111333
	}
	virtual_ipaddress {
		192.168.73.200
	}
}
 
virtual_server 192.168.73.200 80 {
    delay_loop 2
    lb_algo wrr
    lb_kind DR
    protocol TCP
 
    sorry_server 127.0.0.1 80
 
    real_server 192.168.73.128 80 {
        weight 3
        HTTP_GET {
	url {
		path /
		status_code 200
	}
        connect_timeout 1
        nb_get_retry 3
        delay_before_retry 1
        }
    }
    real_server 192.168.73.129 80 {
        weight 1
        HTTP_GET { 
        url {
                path /
                status_code 200
        }
        connect_timeout 1
        nb_get_retry 3
        delay_before_retry 1
        }
    }
}

4、启动keepalived服务

service keepalived start

5、查看keepalived服务状态

service keepalived status
RS客户服务器配置

1、设置虚拟IP地址(注意客户端netmask是4个255)

sudo ifconfig lo:0 172.0.1.10 netmask 255.255.255.255 broadcast 172.0.1.10
sudo ip a (查看设置是否生效)

2、将虚拟IP添加到路由表

sudo route add -host 172.0.1.10 dev lo:0
sudo route -n  (查看设置是否生效)

3、抑制ARP抢包设置

sudo echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore
sudo echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore
sudo echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce
sudo echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce

arp_ignore 参数说明

​ 0:默认值,回应任务网络接口上对任何本地IP地址的arp查询请求

​ 1:只回答目标IP地址是来访网络接口本地地址的ARP查询请求

​ 2:只回答目标IP地址是来访网络接口本地地址的ARP查询请求,且来访IP必须在该网络接口的子网段内。

​ 3:不回应该网络界面的ARP请求,而只对设置的唯一和链接地址做出回应。

​ 4-7:保留未使用。

​ 8:不回应所有(本地地址)的arp查询。

arp_announce 参数说明

​ 对网络接口上,本地IP地址发出的ARP回应作出相应级别的限制,确定不同程度的限制,对来自本地源IP地址发出ARP请求的接口。

​ 0:默认,在任意网络接口上的任何本地地址。

​ 1:进来避免不在该网络接口子网段的本地地址作出ARP回应,当发起ARP请求的源IP地址是被设置应该经由路由达到此网络接口的时候很有用。此时会检查来访IP是否为所有接口上的子网段内IP之一。如果该来访IP不属于各网络接口上的子网段内,那么将采用级别2的方式来进行处理。

​ 2:对查询目标使用最适当的本地地址,在此模式下降忽略这个IP数据包的源地址并尝试选择能与该地址通信的本地地址,首要是选择所有的网络接口的子网中外出访问子网中包含该目标IP地址的本地地址。如果没有合适的地址呗发现,将选择当前的发送网络接口或其他的有可能接受到该ARP回应的网络接口来进行发送,限制了使用本地的VIP地址作为优先的网络接口。

4、设置开机启动虚拟IP有效(添加至 /etc/rc.local ,插入到 exit 0 之前)

ifconfig lo:0 172.0.1.10 netmask 255.255.255.255 broadcast 172.0.1.10
LVS 服务测试 (确保RS客户服务机上有web服务,且端口为80)

​ 测试web服务请在 LB服务器及RS服务器上统一安装nginx(或其他web)服务。

​ LB服务器访问返回index.html 内容设置为

​ master(192.168.73.120):【主】RS服务器已全部下线

​ backup(192.168.73.121):【备】RS服务器已全部下线

​ RS服务器访问返回index.html 内容设置为

​ RS1(192.168.73.128): RS128 服务

​ RS2(192.168.73.129): RS129 服务

独立服务器访问测试

1、测试LB服务器(主)

curl http://192.168.73.120
返回显示 : 【主】RS服务器已全部下线 
表示主LB服务器WEB服务正常

2、测试LB服务器(备)

curl http://192.168.73.120
返回显示 : 【备】RS服务器已全部下线 
表示备LB服务器WEB服务正常

3、测试RS128服务器

curl http://192.168.73.128
返回显示 : RS128 服务 
表示RS128服务器WEB服务正常

4、测试RS129服务器

curl http://192.168.73.129
返回显示 : RS129 服务 
表示RS129服务器WEB服务正常

5、测试访问虚拟IP

curl http://192.168.73.200
返回显示 : RS129 服务 
或返回显示 : RS128 服务
刷新访问地址,可见循环更换RS服务上显示的web内容
则表示lvs配置基本正常

6、深度测试虚拟IP访问

1、关闭RS128 web服务后
curl http://192.168.73.200
一直刷新访问地址
只返回显示:RS129 服务
2、继续关闭RS129 web服务
curl http://192.168.73.200
刷新访问地址
只返回显示:【主】RS服务器已全部下线 
3、继续关闭主RS keepalived服务
curl http://192.168.73.200
刷新访问地址
只返回显示:【备】RS服务器已全部下线 

。。。。
一下类似模拟测试
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值