Keepalived+LVS负载均衡

2023-09-18 19:42:22

Keepalived 是一个用于实现高可用性的开源软件,它基于 VRRP(Virtual Router Redundancy Protocol)协议,允许多台服务器协同工作,以确保在某个服务器出现故障时服务的连续性。Keepalived 的核心思想是将多台服务器配置成主服务器(MASTER)和备份服务器(BACKUP),它们共享一个虚拟 IP 地址(VIP),并使用 VRRP 协议来协调主备之间的状态。

以下是 Keepalived 的主要模块及其作用的介绍:

  1. Core 模块

    • Core 模块是 Keepalived 的核心部分,负责主进程的启动、维护以及全局配置文件的加载和解析。
    • 它负责处理配置文件中定义的主备服务器角色、虚拟 IP 地址、VRRP 参数等重要信息。
    • Core 模块还管理着 VRRP 模块和 Check 模块的运行,并协调它们之间的工作。
  2. VRRP 模块

    • VRRP 模块是 Keepalived 中非常重要的组成部分,用于实现 VRRP 协议。
    • VRRP 协议允许主备服务器之间协调工作,以确保主服务器的高可用性。
    • 主要功能包括:
      • 虚拟 IP 的创建和管理:VRRP 模块负责创建和维护虚拟 IP 地址,该虚拟 IP 地址会漂移到备份服务器当主服务器不可用时。
      • VRRP 通告的发送和接收:主服务器定期发送 VRRP 通告消息,备份服务器监听这些消息以检测主服务器的状态。
      • 自动故障切换:当备份服务器检测到主服务器不可用时,它会接管虚拟 IP,确保服务的连续性。
      • 配置和状态同步:VRRP 模块确保主备服务器之间的配置和状态保持同步,以便顺利进行主备切换。
  3. Check 模块

    • Check 模块负责执行健康检查,以确定主服务器和备份服务器的状态。
    • 健康检查可以采用多种方式,包括端口检查、URL 检查等。
    • 健康检查的目的是确保主服务器正常运行,如果主服务器出现问题,备份服务器可以接管服务。
    • Check 模块会定期检查服务器的可用性,并将检查结果传递给 VRRP 模块,以影响主备切换的决策。

Keepalived 的工作流程如下:

  1. 主服务器和备份服务器都运行 Keepalived,并通过配置文件指定自己的角色和虚拟 IP 地址。
  2. 主服务器定期发送 VRRP 通告消息,备份服务器监听这些消息以检测主服务器的状态。
  3. 同时,Check 模块会执行健康检查,确保主服务器的可用性。
  4. 如果主服务器出现故障或不可用,备份服务器会接管虚拟 IP 地址,继续提供服务。
  5. 当主服务器恢复正常时,它可以再次接管虚拟 IP 地址,恢复为主服务器的角色。

Keepalived 提供了一个强大的工具,可用于确保基于 LVS 的服务在面临硬件或软件故障时保持高可用性。它在数据中心和网络环境中广泛使用,用于构建可靠的负载均衡和高可用解决方案。通过合理配置和使用 Keepalived,可以降低单点故障的风险,提高系统的可用性和稳定性。

keepalived+LVS负载均衡

这次实验使用LVS的DR模式
主DR 服务器:192.168.2.14
备DR 服务器:192.168.2.15
Web 服务器1:192.168.2.12
Web 服务器2:192.168.2.13
vip:192.168.2.188
1配置主DR服务器
安装 ipvsadm软件和keepalived软件

yum -y install ipvsadm keepalived

启动ip_vs模块

modprobe ip_vs

(1)配置keeplived(主、备DR 服务器上都要设置)

vim keepalived.conf
! Configuration File for keepalived

global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id LVS_01
   vrrp_skip_check_adv_addr
#  vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}

vrrp_instance VI_1 {
    state MASTER
    interface ens33
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.2.188
    }
}

virtual_server 192.168.2.188 80 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
    persistence_timeout 50
    protocol TCP

    real_server 192.168.2.12 80 {
        weight 1
 TCP_CHECK {
                        connect_port 80
                        connect_timeout 3
                        nb_get_retry 3
                        delay_before_retry 3
                }
        }


         real_server 192.168.2.13 80 {
        weight 1
        TCP_CHECK {
                        connect_port 80
                        connect_timeout 3
                        nb_get_retry 3
                        delay_before_retry 3
                }
        }
}

配置完成
查验是否配置成功

ip add 

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

配置成功

scp /etc/keepalived/keepalived.conf 192.168.2.15:/etc/keepalived/keepalived.conf

从服务器上

vim   /etc/keepalived/keepalived.conf
! Configuration File for keepalived

global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id LVS_02
   vrrp_skip_check_adv_addr
#  vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}

vrrp_instance VI_1 {
    state BUCKUP
    interface ens33
    virtual_router_id 51
    priority 90
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.2.188
    }
}

virtual_server 192.168.2.188 80 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
    persistence_timeout 50
    protocol TCP

    real_server 192.168.2.12 80 {
        weight 1
         TCP_CHECK {
                        connect_port 80
                        connect_timeout 3
                        nb_get_retry 3
                        delay_before_retry 3
                }
        }


         real_server 192.168.2.13 80 {
        weight 1
        TCP_CHECK {
                        connect_port 80
                        connect_timeout 3
                        nb_get_retry 3
                        delay_before_retry 3
                }
        }
}

在这里插入图片描述

检查是否配置成功 关闭主服务器keepalived
在这里插入图片描述
在这里插入图片描述
配置成功
节点服务器参考上一篇博客的配置

更多推荐

Python学习之——str/unicode/bytes

Python学习之——str/unicode/bytes参考字符串和字节串区分Unicode和Encodingspython2python3一个典型的问题参考Pythonstrvsunicodetypes谈谈python2,3中的str、unicodeUnicode编码及UTF-32,UTF-16和UTF-8https

【Oracle】Oracle系列之二--Oracle数据字典

文章目录往期回顾前言1.什么是Oracle数据字典2.数据字典的内容(1)X$表(2)数据字典表、数据字典视图(3)动态性能视图3.数据字典应用示例(1)查询表的信息(2)查询索引的信息(3)查询用户的信息(4)查询表空间的信息(5)查询数据文件的信息(6)查询数据库的性能数据往期回顾【Oracle】Oracle系列–

【腾讯云 Cloud Studio 实战训练营】快速构建React完成点餐H5页面

一,前言1.1相关链接官网地址:CloudStudio官方文档地址:CloudStudio(云端IDE)简介|CloudStudio1.2CloudStudio(云端IDE)简介CloudStudio是基于浏览器的集成式开发环境(IDE),用户在使用CloudStudio时无需安装,随时随地打开浏览器就能在线编程,给开

React进阶

TODO1组件生命周期React组件生命周期|菜鸟教程(runoob.com)https://www.runoob.com/react/react-component-life-cycle.html什么是组件生命周期在React中,组件生命周期是指组件从创建到销毁期间经历的一系列阶段。在每个阶段,React给予我们不同

vue页面嵌入飞书网页组件,用于在类似ERP,OA等系统中展示在线文档

先展示最终效果(就是在vue页面中,内嵌了一块ifream页面):1.注册进入飞书开放平台,地址为:飞书开放平台2.进入开放平台后,选择--创建企业自建应用--创建网页应用,然后在主页面记住该应用的appId和appSecret参数,后面要用3.然后注意一点的是,因为后面的授权等逻辑我们一般用我们自己的文档做测试,但是

React antd Select 无法在disabled状态下选择并复制输入框内的内容情况分析及解决方案

文章目录背景问题分析解决思路一:会不会是由于在选择框内hover的时候出现的那个图标导致的解决思路二:会不会是这个span禁止复制解决思路三:去看看antd具体实现最终解决方案其他版本的解决方案antd3.*antd5.*背景在React项目开发中,我们经常会用到antd内的Select组件。有时候我们会在disabl

Eureka注册中心

文章目录1.Eureka的结构与作用2.搭建eureka-server服务3.注册service服务4.服务发现1.Eureka的结构与作用在Eureka架构中,微服务角色有两类:lEurekaServer:服务端,注册中心记录服务信息u心跳监控lEurekaClient:客户端Provider:服务提供者注册自己的信

数据结构前瞻

集合框架JAVA的集合框架是定义在java.util包下的一组接口和实现类,用于将多个元素置于一个单元中,对这些元素进行快速,便捷的存储,减速和管理,即增删查改下面的格子,黄色代表接口,蓝色代表抽象类,棕色代表类是动态数组(顺序表)优先级队列是双向列表底层就是一颗红黑树重要的四个接口算法效率时间复杂度即算法中基本操作的

2022年贵州省职业院校技能大赛中职组网络安全赛项规程

2022年贵州省职业院校技能大赛中职组网络安全赛项规程一、赛项名称赛项名称:网络安全赛项归属:信息技术类二、竞赛目的为检验中职学校网络信息安全人才培养成效,促进网络信息安全专业教学改革,培养大批既满足国家网络安全战略需要有具备世界水平的优秀技能人才,在社会上营造“技能改变命运、匠心成就人生”的崇尚技能的氛围,国家教育部

深入理解WPF中MVVM的设计思想

近些年来,随着WPF在生产,制造,工业控制等领域应用越来越广发,很多企业对WPF开发的需求也逐渐增多,使得很多人看到潜在机会,不断从Web,WinForm开发转向了WPF开发,但是WPF开发也有很多新的概念及设计思想,如:数据驱动,数据绑定,依赖属性,命令,控件模板,数据模板,MVVM等,与传统WinForm,ASP.

Redis实现Session持久化

Redis实现Session持久化1.前言直接使用Session存储用户登录信息,此时的会话信息是存储在内中的,只要项目重启存储的Session信息就会丢失。而使用Redis存储Session的话就不会存在这种情况,即使项目重启也并不影响,也无需用户重新登录。使用Redis存储Session,还能让项目支持分布式的,比

热文推荐