【实验】LVS+Keepalived实现高可用负载均衡集群(抢占模式)

一、架构图

在这里插入图片描述

二、流程分析

客户端发起访问请求到LVS集群,由经过优先级选举出来的LVS主调度器负责匹配转发策略,然后转发访问请求到Web集群;Web集群中的服务器接收到请求,然后通过路由器直接将回包发送给客户端。其实,LVS+keepalived集群的工作方式和LVS-DR模式是一样的,无非就是增加了LVS集群备份服务器,在主服务器宕机的时候由备份服务器承担调度器的作用。

三、实践

1.Web服务器集群搭建

nginx:192.168.41.45,vip:192.168.41.100
tomcat:192.168.41.46,vip:192.168.41.100
(这个之前演示太多次的,就不做过多注解了,直接罗列命令集合)

——————————————————————45服务器(DR模式)——————————————————————————————————————
yum install -y epel-release
yum install -y nginx
echo "this is nginx server" > /usr/share/nginx/html/index.html
systemctl start nginx
netstat -natp | grep 80
vim /etc/sysconfig/network-scripts/ifcfg-lo:0   #配置VIP地址的网卡文件
DEVICE=lo:0
ONBOOT=yes
IPADDR=192.168.41.100
NETMASK=255.255.255.255
#:wq保存退出
systemctl restart network
ifup lo:0   #开启lo:0网卡
ifconfig lo:0   
route add -host 192.168.41.100 dev lo:0   #添加路由信息
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
#:wq保存退出
sysctl -p   #刷新内核文件
浏览器访问测试
----------------------------------------------------------------------
——————————————————————46服务器(DR模式)——————————————————————————————————————
yum install -y httpd
echo "this is apache server" > /var/www/html/index.html
systemctl start httpd
netstat -natp | grep 80
vim /etc/sysconfig/network-scripts/ifcfg-lo:0
DEVICE=lo:0
ONBOOT=yes
IPADDR=192.168.41.100
NETMASK=255.255.255.255
systemctl restart network
ifup lo:0
ifconfig lo:0
route add -host 192.168.41.100 dev lo:0
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
sysctl -p
浏览器访问测试

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

在这里插入图片描述

在这里插入图片描述

2.LVS集群搭建

主LVS:192.168.41.43,vip:192.168.41.100
备LVS:192.168.41.44,vip:192.168.41.100

——————————————————43服务器(LVS主)————————————————————————————
yum install -y keepalived ipvsadm
vim /etc/keepalived/keepalived.conf   #编辑keepalived配置文件
global_defs {
    
    						#定义全局参数
#第10行参数为邮件服务地址,改为指向本地
	smtp_server 127.0.0.1
#第12行参数指定服务器(路由器)的名称,主备服务器名称须不同,主为LVS_ZHU,备为LVS_BEI
	router_id LVS_ZHU
#第14行注释掉,取消严格遵守VRRP协议功能,否则VIP无法被连接
#或者将包含vrrp的四行全部删掉
	#vrrp_strict
}

vrrp_instance VI_1 {
    
    				#定义VRRP热备实例参数
#第20行参数为指定热备状态,主为MASTER,备为BACKUP
    state MASTER
#第21行修改指定承载vip地址的物理接口,是ens33
    interface ens33
#第22行参数为指定虚拟路由器的ID号,每个热备组保持一致	
    virtual_router_id 10
	#nopreempt		#如果设置非抢占模式,两个节点state必须为bakcup,并加上配置 nopreempt
#第23行参数为指定优先级,数值越大优先级越高,这里设置主为100,备为90
    priority 100
    advert_int 1					#通告间隔秒数(心跳频率)
    authentication {
    
    				#定义认证信息,每个热备组保持一致
		auth_type PASS				#认证类型
#第27行参数为指定验证密码,主备服务器保持一致
        auth_pass 1111
    }
    virtual_ipaddress {
    
    				#指定群集vip地址
        192.168.41.100
    }
}
#第36行参数为指定虚拟服务器地址(VIP)、端口,定义虚拟服务器和Web服务器池参数
virtual_server 192.168.41.100 80 {
    
    
    delay_loop 6					#健康检查的间隔时间(秒)
    lb_algo rr						#指定调度算法,轮询(rr)
#第39行参数为指定群集工作模式,改为直接路由(DR)
    lb_kind DR
    persistence_timeout 0			#连接保持时间(秒)
    protocol TCP					#应用服务采用的是 TCP协议
#第43行参数为指定第一个Web节点的地址、端口
    real_server 192.168.41.45 80 {
    
    
        weight 1					#节点的权重
#第45行删除,添加以下健康检查方式		
        TCP_CHECK {
    
    
			connect_port 80			#添加检查的目标端口
			connect_timeout 3		#添加连接超时(秒)
			nb_get_retry 3			#添加重试次数
			delay_before_retry 3	#添加重试间隔
		}
	}

	real_server 192.168.41.46 80 {
    
    		#添加第二个 Web节点的地址、端口
        weight 1
        TCP_CHECK {
    
    
			connect_port 80
			connect_timeout 3
			nb_get_retry 3
			delay_before_retry 3
		}
	}
}
#删除后面多余的配置,:wq保存退出
vim /etc/sysctl.conf  #配置LVS的内核文件
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0
sysctl -p
ipvsadm-save > /etc/sysconfig/ipvsadm   #创建ipvsadm文件,为启动ipvsadm服务做准备
systemctl start {
    
    keepalived,ipvsadm}   #启动keepalived和ipvsadm服务
systemctl status {
    
    keepalived,ipvsadm}   #查看状态
ipvsadm -ln   #查看ipvsadm策略,因为keepalived是专门针对LVS所设计的软件,所以所有的配置在keepalived.conf文件中都做好了,并不需要对ipvsadm进行配置,在启动keepalived和ipvsadm服务时,ipvsadm会读取keepalived配置文件,进行相应的设置。
----------------------------------------------------------------------------------------



——————————————————44服务器(LVS备)————————————————————————————
LVS的备服务器在主服务器正常工作时,是处于待机状态的,当主宕机或者keepalived服务挂掉,会接替主的位置,
从而不会导致业务瘫痪。其具体配置和主一样,只是需要在keepalived.conf中稍作修改即可。
yum install -y keepalived ipvsadm
vim /etc/keepalived/keepalived.conf   #编辑keepalived配置文件
global_defs {
    
    						#定义全局参数
#第10行参数为邮件服务地址,改为指向本地
	smtp_server 127.0.0.1
#第12行参数指定服务器(路由器)的名称,主备服务器名称须不同,主为LVS_ZHU,备为LVS_BEI
	router_id LVS_BEI
#第14行注释掉,取消严格遵守VRRP协议功能,否则VIP无法被连接
#或者将包含vrrp的四行全部删掉
	#vrrp_strict
}

vrrp_instance VI_1 {
    
    				#定义VRRP热备实例参数
#第20行参数为指定热备状态,主为MASTER,备为BACKUP
    state BACKUP
#第21行修改指定承载vip地址的物理接口,是ens33
    interface ens33
#第22行参数为指定虚拟路由器的ID号,每个热备组保持一致	
    virtual_router_id 10
	#nopreempt		#如果设置非抢占模式,两个节点state必须为bakcup,并加上配置 nopreempt
#第23行参数为指定优先级,数值越大优先级越高,这里设置主为100,备为90
    priority 90
    advert_int 1					#通告间隔秒数(心跳频率)
    authentication {
    
    				#定义认证信息,每个热备组保持一致
		auth_type PASS				#认证类型
#第27行参数为指定验证密码,主备服务器保持一致
        auth_pass 1111
    }
    virtual_ipaddress {
    
    				#指定群集vip地址
        192.168.41.100
    }
}
#第36行参数为指定虚拟服务器地址(VIP)、端口,定义虚拟服务器和Web服务器池参数
virtual_server 192.168.41.100 80 {
    
    
    delay_loop 6					#健康检查的间隔时间(秒)
    lb_algo rr						#指定调度算法,轮询(rr)
#第39行参数为指定群集工作模式,改为直接路由(DR)
    lb_kind DR
    persistence_timeout 0			#连接保持时间(秒)
    protocol TCP					#应用服务采用的是 TCP协议
#第43行参数为指定第一个Web节点的地址、端口
    real_server 192.168.41.45 80 {
    
    
        weight 1					#节点的权重
#第45行删除,添加以下健康检查方式		
        TCP_CHECK {
    
    
			connect_port 80			#添加检查的目标端口
			connect_timeout 3		#添加连接超时(秒)
			nb_get_retry 3			#添加重试次数
			delay_before_retry 3	#添加重试间隔
		}
	}

	real_server 192.168.41.46 80 {
    
    		#添加第二个 Web节点的地址、端口
        weight 1
        TCP_CHECK {
    
    
			connect_port 80
			connect_timeout 3
			nb_get_retry 3
			delay_before_retry 3
		}
	}
}
#删除后面多余的配置,:wq保存退出
vim /etc/sysctl.conf  #配置LVS的内核文件
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0
sysctl -p
ipvsadm-save > /etc/sysconfig/ipvsadm   #创建ipvsadm文件,为启动ipvsadm服务做准备
systemctl start {
    
    keepalived,ipvsadm}   #启动keepalived和ipvsadm服务
systemctl status {
    
    keepalived,ipvsadm}   #查看状态
ipvsadm -ln   #查看ipvsadm策略,因为keepalived是专门针对LVS所设计的软件,所以所有的配置在keepalived.conf文件中都做好了,并不需要对ipvsadm进行配置,在启动keepalived和ipvsadm服务时,ipvsadm会读取keepalived配置文件,进行相应的设置。

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

3.测试

当1和2全部完成,我们首先切换到LVS主服务器
ip addr   #查看ip,此时主LVS会产生vip地址192.168.41.100
访问192.168.41.100进行测试
systemctl stop keepalived    #宕掉主的keepalived
ip addr   #再次查看,此时vip消失
切换到备服务器
ip addr   #查看备LVS的ip,会发现vip跑到了备上面
再次访问192.168.41.100进行测试,成功表示备服务器承担了调度器的作用,高可用OK

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

至此,LVS+keepalived高可用负载均衡集群的搭建完成

四、总结

  1. 注意各集群的内核文件的修改,LVS和Web集群是不一样的
  2. 各类的ip地址要在配置文件中正确使用,哪里用什么类型的地址,一定不能写错
  3. 防火墙问题

猜你喜欢

转载自blog.csdn.net/qq_40707090/article/details/124845544