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

发布于:2024-12-07 ⋅ 阅读:(93) ⋅ 点赞:(0)
一.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    
                    }
                }
            }


网站公告

今日签到

点亮在社区的每一天
去签到