一.Keepalived高可用集群,二.LVS-DR+keepalived高可用实现负载均衡web集群(通过管理虚拟ip)

一.Keepalived高可用集群

	1.Keepalived简介:
		Keepalived高可用集群是一种用于提高系统可用性和防止单点故障的技术方案,它利用VRRP(虚拟路由冗余协)实现高可用功能.
		(1)VRRP协议:解决静态路由单点故障问题的协议,它能够将多台提供相同功能的路由器组成一个路由器组,其中有一个master(主服务器)和多个backup(备用服务器)。Master上面有一个对外提供服务的VIP,当master发生故障时,backup会根据VRRP的优先级来选举一个新的master,继续提供服务。

		(2)心跳检测与切换机制:Keepalived定期向备用服务器发送心跳包,来监控集群中服务器的健康状况。当主服务器宕机后,Keepalived会根据VRRP的优先级来选举一个新的主服务器。

	2.Keepalived的工作原理
		LVS不能进行健康检查,真实业务服务器集群里面设计一个虚拟服务器,使用虚拟服务器暴露给用户,当某一台机器发生故障,自动切换其它服务器提供服务.
		
	3.Keepalived可实现的功能

		(1)基于vrrp解决单点故障(高可用)
		(2)LVS集群真实服务器状态监测
		(3)管理VIP(虚拟ip)

		
	4.Keepalived高可用的配置操作:直接以真是服务器为例

			(1)安装keepalived软件
			(2)配置文件:/etc/keepalived/keepalived.conf,应用服务器集群web1,web2
			(3)配置Keepalived关联服务
			(4)web1,web2进行相同的配置
	

			(1)安装keepalived软件

			---
			- name: install keepalive on webservers
			  hosts: webservers
			  tasks:
			    - name: install keepalived  #安装软件
			      yum:
			        name: keepalived
			        state: present
			
			(2)应用服务器集群web1,web2配置:/etc/keepalived/keepalived.conf
					web1和web2进行主从配置

				3  global_defs {
				...
				11     smtp_connect_timeout 30
				12     router_id web1           #集群节点唯一标识
				13     vrrp_iptables            #放行iptables规则
				14     vrrp_skip_check_adv_addr
				15     vrrp_strict              #这里会默认丢弃入站流量,需配置iptables 
				16     vrrp_garp_interval 0
				17     vrrp_gna_interval 0
				18  }
				20  vrrp_instance VI_1 {        #实例设备
				21      state MASTER            #主备角色状态,MASTER和BACKIP
				22      interface eth0	      #实际网卡名
				23      virtual_router_id 51    # 实例的值
				24      priority 100             #优先级值默认100
				25      advert_int 1             #心跳平率100
				26      authentication {		#主备服务器的认证方式
				27          auth_type PASS
				28          auth_pass 1111
				29      }	
				30      virtual_ipaddress {      #应用服务器集群的虚拟ip
					   192.168.88.80/24:默认为前面绑定的 eth0
				31       192.168.88.80/24 dev eth0 label eth0:1:dev,label指定设备和编号
				32      }
				33  }
			
			(3)配置Keepalived关联服务:
				比如:解决当nginx服务错误,keepalived不会自动切换

				-- 解决方案:内嵌脚本,要求是,退出码为0表示访问成功;退出码为1表示失败

				[root@web1 ~]# vim /etc/keepalived/check_http.sh 
					#!/bin/bash
					ss -antpul | grep -q nginx && exit 0 || exit 1

					chmod +x check_http.sh 

				-- 配置Keepalived关联服务
				1  ! Configuration File for keepalived
				2
				...
				18  }
				19
				20  vrrp_script chk_http_port {     #定义监控监本,手工编辑本段内容
				21          script "/etc/keepalived/check_http.sh"  #定义检测脚本位置
				22          interval 2                              #定义脚本执行时间
				23  }
				24
				25  vrrp_instance VI_1 {
				26      state MASTER
				27      interface eth0
				28      virtual_router_id 51
				29      priority 100
				30      advert_int 1
				31      authentication {
				32          auth_type PASS
				33          auth_pass 1111
				34      }
				35      virtual_ipaddress {
				36          192.168.88.80/24 dev eth0 label eth0:1
				37      }
				38      track_script {      #引用脚本,这里的脚本执行结果影响vrrp状态
				39          chk_http_port
				40      }
				41  }
				Keepalived会监控这个脚本的返回状态,并根据配置中的规则来调整VRRP实例的优先级或触发状态切换(通常是0表示成功,1表示失败)
				
				--web2进行相同的配置


二.LVS-DR+keepalived高可用实现负载均衡web集群(通过管理虚拟ip)

	1.实验环境准备
		client1:eth0->192.168.88.10
		lvs1:eth0->192.168.88.5
		lvs2:eth0->192.168.88.6
		web1:eth0->192.168.88.100
		web2:eth0->192.168.88.200
	
	2.LVS-DR模式+keepalived高可用配置步骤(keepalived通过服务方式管理LVS-DR)
		
		(1)lvs1和lvs2节点安装ipvsadm和Keepalived软件

		(2)配置web1,web2的共享ip(使用该共享ip作为虚拟ip)
				lvs1,lvs2的通过keepalived配置	

		(3)web1,web2调整内核参数设置是否接收ARP请求
		
		(4)lvs1,lvs2进行Keepalived高可用配置,以及服务搭建=ipvsadm 
			(keepalived通过服务方式管理LVS-DR)
			
				lvs1.5
	client    --->    (虚拟ip.15)   ---> web1,web2(虚拟ip.15)
				lvs2.6
		
			[root@lvs1 ~]# vim /etc/keepalived/keepalived.conf 
			[root@lvs1 ~]# cat /etc/keepalived/keepalived.conf 
			global_defs {
			   router_id lvs1           #集群节点唯一标识
			   vrrp_iptables            #放行防火墙规则
			   vrrp_strict              #严格遵守VRRP规则
			}
			
			vrrp_instance VI_1 {
			    state MASTER            #状态
			    interface eth0          #网卡
			    virtual_router_id 51    #虚拟路由唯一标识符
			    priority 100            #优先级
			    advert_int 1            #心跳包间隔时间
			    authentication {        #认证方式
			        auth_type PASS      #密码认证
			        auth_pass 1111      #集群密码
			    }
			    virtual_ipaddress {     #定义VIP
			        192.168.88.15/24 dev eth0 label eth0:0  #这里是之前的共享ip
			    }
			}
			
			//配置文件的这部分=ipvsadm命令的配置 
			virtual_server 192.168.88.15 80 {   #定义LVS虚拟服务器
			    delay_loop 6                    #健康检查延时6s开始
			    lb_algo wrr                     #调度算法
			    lb_kind DR                      #LVS工作模式
			    persistence_timeout 50          #50s内相同客户端发起请求由同一服务器处理
			    protocol TCP                    #虚拟服务器协议
			
			    real_server 192.168.88.100 80 { #定义真实服务器
			        weight 1                    #权重
			        TCP_CHECK {                 #健康检查方式
			            connect_timeout 3       #连接超时时间为3s
			            nb_get_retry 3          #连续3次访问失败则认为真实服务器故障
			            delay_before_retry 3    #健康检查包时间间隔
			        }
			    }
			
			    real_server 192.168.88.200 80 {
			        weight 2                    
			        TCP_CHECK {                
			            connect_timeout 3	   
			            nb_get_retry 3	         
			            delay_before_retry 3    
			        }
			    }
			}

一.Keepalived高可用集群

1.Keepalived简介:

Keepalived高可用集群是一种用于提高系统可用性和防止单点故障的技术方案,它利用VRRP(虚拟路由冗余协)实现高可用功能.

(1)VRRP协议:解决静态路由单点故障问题的协议,它能够将多台提供相同功能的路由器组成一个路由器组,其中有一个master(主服务器)和多个backup(备用服务器)。Master上面有一个对外提供服务的VIP,当master发生故障时,backup会根据VRRP的优先级来选举一个新的master,继续提供服务。

(2)心跳检测与切换机制:Keepalived定期向备用服务器发送心跳包,来监控集群中服务器的健康状况。当主服务器宕机后,Keepalived会根据VRRP的优先级来选举一个新的主服务器。

2.Keepalived的工作原理

LVS不能进行健康检查,真实业务服务器集群里面设计一个虚拟服务器,使用虚拟服务器暴露给用户,当某一台机器发生故障,自动切换其它服务器提供服务.

3.Keepalived可实现的功能

(1)基于vrrp解决单点故障(高可用)

(2)LVS集群真实服务器状态监测

(3)管理VIP(虚拟ip)

4.Keepalived高可用的配置操作:直接以真是服务器为例

(1)安装keepalived软件

(2)配置文件:/etc/keepalived/keepalived.conf,应用服务器集群web1,web2

(3)配置Keepalived关联服务

(4)web1,web2进行相同的配置

(1)安装keepalived软件


  • name: install keepalive on webservers

hosts: webservers

tasks:

  • name: install keepalived #安装软件

yum:

name: keepalived

state: present

(2)应用服务器集群web1,web2配置:/etc/keepalived/keepalived.conf

web1和web2进行主从配置

3 global_defs {

...

11 smtp_connect_timeout 30

12 router_id web1 #集群节点唯一标识

13 vrrp_iptables #放行iptables规则

14 vrrp_skip_check_adv_addr

15 vrrp_strict #这里会默认丢弃入站流量,需配置iptables

16 vrrp_garp_interval 0

17 vrrp_gna_interval 0

18 }

20 vrrp_instance VI_1 { #实例设备

21 state MASTER #主备角色状态,MASTER和BACKIP

22 interface eth0 #实际网卡名

23 virtual_router_id 51 # 实例的值

24 priority 100 #优先级值默认100

25 advert_int 1 #心跳平率100

26 authentication { #主备服务器的认证方式

27 auth_type PASS

28 auth_pass 1111

29 }

30 virtual_ipaddress { #应用服务器集群的虚拟ip

192.168.88.80/24:默认为前面绑定的 eth0

31 192.168.88.80/24 dev eth0 label eth0:1:dev,label指定设备和编号

32 }

33 }

(3)配置Keepalived关联服务:

比如:解决当nginx服务错误,keepalived不会自动切换

-- 解决方案:内嵌脚本,要求是,退出码为0表示访问成功;退出码为1表示失败

[root@web1 ~]# vim /etc/keepalived/check_http.sh

#!/bin/bash

ss -antpul | grep -q nginx && exit 0 || exit 1

chmod +x check_http.sh

-- 配置Keepalived关联服务

1 ! Configuration File for keepalived

2

...

18 }

19

20 vrrp_script chk_http_port { #定义监控监本,手工编辑本段内容

21 script "/etc/keepalived/check_http.sh" #定义检测脚本位置

22 interval 2 #定义脚本执行时间

23 }

24

25 vrrp_instance VI_1 {

26 state MASTER

27 interface eth0

28 virtual_router_id 51

29 priority 100

30 advert_int 1

31 authentication {

32 auth_type PASS

33 auth_pass 1111

34 }

35 virtual_ipaddress {

36 192.168.88.80/24 dev eth0 label eth0:1

37 }

38 track_script { #引用脚本,这里的脚本执行结果影响vrrp状态

39 chk_http_port

40 }

41 }

Keepalived会监控这个脚本的返回状态,并根据配置中的规则来调整VRRP实例的优先级或触发状态切换(通常是0表示成功,1表示失败)

--web2进行相同的配置

二.LVS-DR+keepalived高可用实现负载均衡web集群(通过管理虚拟ip)

1.实验环境准备

client1:eth0->192.168.88.10

lvs1:eth0->192.168.88.5

lvs2:eth0->192.168.88.6

web1:eth0->192.168.88.100

web2:eth0->192.168.88.200

2.LVS-DR模式+keepalived高可用配置步骤(keepalived通过服务方式管理LVS-DR)

(1)lvs1和lvs2节点安装ipvsadm和Keepalived软件

(2)配置web1,web2的共享ip(使用该共享ip作为虚拟ip)

lvs1,lvs2的通过keepalived配置

(3)web1,web2调整内核参数设置是否接收ARP请求

(4)lvs1,lvs2进行Keepalived高可用配置,以及服务搭建=ipvsadm

(keepalived通过服务方式管理LVS-DR)

lvs1.5

client ---> (虚拟ip.15) ---> web1,web2(虚拟ip.15)

lvs2.6

[root@lvs1 ~]# vim /etc/keepalived/keepalived.conf

[root@lvs1 ~]# cat /etc/keepalived/keepalived.conf

global_defs {

router_id lvs1 #集群节点唯一标识

vrrp_iptables #放行防火墙规则

vrrp_strict #严格遵守VRRP规则

}

vrrp_instance VI_1 {

state MASTER #状态

interface eth0 #网卡

virtual_router_id 51 #虚拟路由唯一标识符

priority 100 #优先级

advert_int 1 #心跳包间隔时间

authentication { #认证方式

auth_type PASS #密码认证

auth_pass 1111 #集群密码

}

virtual_ipaddress { #定义VIP

192.168.88.15/24 dev eth0 label eth0:0 #这里是之前的共享ip

}

}

//配置文件的这部分=ipvsadm命令的配置

virtual_server 192.168.88.15 80 { #定义LVS虚拟服务器

delay_loop 6 #健康检查延时6s开始

lb_algo wrr #调度算法

lb_kind DR #LVS工作模式

persistence_timeout 50 #50s内相同客户端发起请求由同一服务器处理

protocol TCP #虚拟服务器协议

real_server 192.168.88.100 80 { #定义真实服务器

weight 1 #权重

TCP_CHECK { #健康检查方式

connect_timeout 3 #连接超时时间为3s

nb_get_retry 3 #连续3次访问失败则认为真实服务器故障

delay_before_retry 3 #健康检查包时间间隔

}

}

real_server 192.168.88.200 80 {

weight 2

TCP_CHECK {

connect_timeout 3

nb_get_retry 3

delay_before_retry 3

}

}

}

相关推荐
难以触及的高度4 分钟前
linux下MySQL的数据存放
linux·运维·mysql
筑梦之路5 分钟前
深入了解磁盘IO —— 筑梦之路
linux·运维
s_little_monster7 分钟前
【Linux】Linux常见指令(上)
linux·运维·服务器·经验分享·笔记·学习·centos
Linux运维老纪11 分钟前
MySQL常用命令之汇总(Summary of Commonly Used Commands in MySQL)
服务器·数据库·计算机网络·mysql·云计算·运维开发
Damon小智12 分钟前
C#进阶-在Ubuntu上部署ASP.NET Core Web API应用
linux·nginx·c#·asp.net·.net·.net core
mikey棒棒棒12 分钟前
微服务-网关、配置热更新、动态路由
服务器·网关·微服务·nacos·路由·动态路由·动态配置
半卷书生30 分钟前
将node节点加入k8s集群
linux·docker·kubernetes
淡黄的Cherry34 分钟前
OOM排查思路
linux·docker·kubernetes
AKA小徐37 分钟前
超简单,使用Kube-Vip实现K8s高可用VIP详细教程
linux·kubernetes·kube-vip
初学者丶一起加油1 小时前
C语言基础:野指针、空指针、空悬指针
java·linux·c语言·开发语言·数据结构·算法·vim