使用Keepalived工具实现集群节点的高可用

【Keepalived】搭建三节点、抢占式的Keepalived主备集群 非抢占式,相对于抢占式,少了一次 VIP 的切换,这是非抢占式集群的优点。所以,从性价比来看,还是抢占式的集群,更适合在生产环境部署,即两个备用节点的资源配置可以减半,甚至更低,因为只要主节点能在可控的时间内恢复,VIP就会被主节点再次抢占。2)当MASTER 节点(即192.168.223.31)系统宕掉或者服务不可用,VIP会根据节点配置的优先级,被强行迁移(即抢占)到另外两台备用节点中优先级(priority)较高的节点,即192.168.223.32。 阅读详情
  • GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源。
  • GreatSQL是MySQL的国产分支版本,使用上与MySQL一致。
  • 作者:蟹黄瓜子
  • 文章来源:社区投稿

1.前言

在集群当中离不开的一个词就是是高可用,用本文来简单聊聊Keepalived是什么、Keepalived如何实现高可用、Keepalived的使用场景。

  • 首先,假设一个应用场景,内网有一台tomcat服务器,随着业务的增加、流量的增加一台tomcat服务器就变得不够用了,因此需要增加多台tomcat服务器,他们拥有相同的业务处理能力,为了可以统一对这些tomcat的访问同时更好地调度到不同的tomcat完成业务,可以添加一台nginx服务器。它的作用是为内网中的多台tomcat服务器提供负载均衡的动态访问,通过nginx,我们可以以不同的调度方式来到不同的tomcat来进行下一步的操作。
  • 但这种模式是十分脆弱的,如果此时nginx宕机了,tomcat服务器就都访问不了了,假设也增加一台nginx赋予这台nginx相同的业务能力,那就又涉及到了这个问题,它需要一个统一的入口,如果在这两台nginx服务器的前面再放一台nginx或者是一台lvs服务器做这两台nginx的调度,只会使得这种部署方案进入一个死循环,变成一个无解的答案。
  • 可以试着换一种思路,我就让这台nginx作为主机进行工作,同时为这台nginx准备一台备机,当主机宕机了,这台备机就可以及时顶替主机的工作。当然还需要考虑到这两台服务器是不同的ip,客户访问的是主机,怎么变成访问备机呢?如果要把备机的ip“换成主机的”显然不可取,有可能主机只是过热的短暂故障,如果ip被备机使用了,主机又突然恢复了,这个时候问题又出现了,因此,我们需要使用一个虚拟ip。

因此,实现的效果应是一主一备,主机宕机备机上线提供服务,不可能同时提供服务。访问业务通过的入口为vip,因此我们引入Keepalived,让其跑在两台nginx上,达到Keepalived之间的相互通信,检测心跳,如果主机宕机,Kpalived就将主机的vip漂移到备机上,这样就可以实现不需要关注这两台nginx的具体ip地址是多少就可以实现来者之间高可用的切换。至于宕机的服务器恢复以后重新上线是否作为主机就要根据配置文件里面的优先级进行竞选。

2.Kepalived介绍

Keepalived是一款保证集群高可用的一个服务软件,用来防止单点故障。Kepalived是以VRRP(Virtual Router Redundancy Protocol)协议(虚拟路由冗余协议)为实现基础的。

虚拟路由冗余协议,可以认为是实现路由器高可用的协议,即将N台提供相同功能的路由器组成一个路由器组,这个组里面有一个master和多个backup,master上面有一个对外提供服务的vip(该路由器所在局域网内其他机器的默认路由为该vip),master会发组播,当backup收不到vrrp包时就认为master宕掉了,这时就需要根据VRRP的优先级来选举一个backup当master。这样的话就可以保证路由器的高可用了。

3.Keepalived部署

假设nginx服务器为192.168.1.1、192.168.1.2,vip为192.168.1.200:

为机子安装环境,采用yum源安装:

[root@localhost ~]# yum -y install kernel-devel*
[root@localhost ~]# yum -y install openssl-*
[root@localhost ~]# yum -y install popt-devel
[root@localhost ~]# yum -y install lrzsz
[root@localhost ~]# yum -y install openssh-clients
[root@localhost ~]# yum -y install libnl libnl-devel popt
[root@localhost ~]# yum install -y curl gcc openssl-devel libnl3-devel net-snmp-devel
  • 进入/usr/local/目录:
[root@localhost ~]# cd /usr/local/
  • 把下载“keepalived-1.2.15.tar.gz”放入目录下,解压:
[root@localhost local]# tar zxvf keepalived-1.2.15.tar.gz
  • 进入目录:
[root@localhost local]# cd keepalived-1.2.15/
[root@localhost keepalived-1.2.15]# 
  • 通过configure进行安装:
[root@localhost keepalived-1.2.15]# ./configure --prefix=/usr/local/keepalived
  • 进行编译安装:
[root@localhost keepalived-1.2.15]# make
[root@localhost keepalived-1.2.15]# make install
  • 拷贝执行文件:
[root@localhost keepalived-1.2.15]# cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
  • 将init.d文件拷贝到etc下,加入开机启动项:
[root@localhost keepalived-1.2.15]# cp /usr/local/keepalived/etc/rc.d/init.d/keepalived/etc/init.d/keepalived
  • 将keepalived文件拷贝到etc下,加入网卡配置:
[root@localhost keepalived-1.2.15]# cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
  • 创建keepalived文件夹,将keepalived配置文件拷贝到etc下:
[root@localhost keepalived-1.2.15]# mkdir -p /etc/keepalived
[root@localhost keepalived-1.2.15]# cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf
  • 添加可执行权限,同时加入开机启动:
[root@localhost keepalived-1.2.15]# chmod +x /etc/init.d/keepalived
# 添加时必须保证/etc/init.d/keepalived存在
[root@localhost keepalived-1.2.15]# chkconfig --add keepalived
[root@localhost keepalived-1.2.15]# chkconfig keepalived on
# 添加完可查询系统服务是否存在
[root@localhost keepalived-1.2.15]# chkconfig --list
  • 使用:
启动:service keepalived start
停止:service keepalived stop
重启:service keepalived restart
  • 将keepalived日志输出到local0:
[root@localhost keepalived-1.2.15]# vi /etc/sysconfig/keepalived

# 添加:
KEEPALIVED_OPTIONS="-D -d -S 0"
  • .在/etc/rsyslog.conf里添加配置:
[root@localhost keepalived-1.2.15]# vi /etc/rsyslog.conf
# 内容:
local0.*  /var/log/keepalived.log
  • 重新启动keepalived和rsyslog服务后配置防火墙通讯地址:
[root@localhost keepalived-1.2.15]# service rsyslog restart
[root@localhost keepalived-1.2.15]# service keepalived restart
  • 主机配置文件:
! Configuration File for keepalived

global_defs {
   router_id NG_DEVEL1
}

vrrp_instance NG {
    # 标示为主nginx
    state MASTER
    # HA检测端口,查看主机服务器的网卡
    interface eth33
    # 主备上的id必须相同
    virtual_router_id 51
    # 配置优先级,本示例备机比主机优先级小
    priority 100
    # VRRP Multicast 广播周期秒数
    advert_int 1
    # 定义认证
    authentication {
        # 认证方式为口令认证
        auth_type PASS
        # 定义口令
        auth_pass 1111
    }
    # 定义vip,可以设置多个
    virtual_ipaddress {
        192.168.1.200
    }
}
  • 备机配置文件:
! Configuration File for keepalived

global_defs {
   router_id NG_DEVEL2
}

vrrp_instance NG {
    # 标示为备nginx
    state BACKUP
    # HA检测端口,查看主机服务器的网卡
    interface eth33
    # 主备上的id必须相同
    virtual_router_id 51
    # 配置优先级,本示例备机比主机优先级小
    priority 50
    # VRRP Multicast 广播周期秒数
    advert_int 1
    # 定义认证
    authentication {
        # 认证方式为口令认证
        auth_type PASS
        # 定义口令
        auth_pass 1111
    }
    # 定义vip,可以设置多个
    virtual_ipaddress {
        192.168.1.200
    }
}
  • 重启服务:
[root@localhost keepalived-1.2.15]# service keepalived restart
  • 可以进行简单的测试,当主机宕机后,vip成功漂移到备机

4.结语

Keepalived的使用不止局限于nginx,他的作用是作用于服务器,去检测服务器来实现单点访问的高可用,因此可以使用keepalived的场景就十分丰富了,lvs可以使用,也可以通过keepalived来实现MySQL的双主模式切换,也可以设置多个vip绑定在不同的机器上,通过dns轮询的方式访问vip,如果发生宕机就把宕机的主机vip漂移到其他主机上。在由文章中的模拟实验环境搭建可以参考上一篇文章《搭建基于lvs+nginx的负载均衡服务集群》。

keepalived的原理其实很简单就是通过服务器上的keepalived进程进行相互通信,这个时候需要注意,假设服务器没有宕机但是服务器的业务报错了,这个时候没有实现切换,可以写相应的运维脚本,通过脚本检测当前的业务是否出现错误,出现错误就将keepalived进程kill掉来实现切换。这里就不继续展开了。


Enjoy GreatSQL 😃

关于 GreatSQL

GreatSQL是由万里数据库维护的MySQL分支,专注于提升MGR可靠性及性能,支持InnoDB并行查询特性,是适用于金融级应用的MySQL分支版本。

相关链接: GreatSQL社区 Gitee GitHub Bilibili

GreatSQL社区:

捉虫活动详情:https://greatsql.cn/thread-97-1-1.html

社区博客有奖征稿详情:https://greatsql.cn/thread-100-1-1.html

6440

keepalived + nginx 实现高可用集群方案 keepalived + nginx 实现高可用集群方案一.使用场景介绍: nginx做负载均衡,来达到分发请求的目的,但是不能很好的避免单点故障,加入nginx服务器挂点了,那么所有的服务也会跟着瘫痪,这样何来的高可用架构?,更别谈什么高扩展。keepalived+nginx,就能很好的解决这一问题。二.原理介绍: Keepalived 是一种高性能的服务器高可用或热备解决方案 阅读详情

相关推荐

keepalived+Nginx实现高可用集群

1.素材与软件版本 软件版本: IDAE:2019.2.2 VMware:12.5.2 虚拟机镜像:CentOs7.3标准版 Xshell:Xshell6 Postman:7.33.1 Tomcat:8.5.41 Nginx:1.18.0稳定版 keepalived:2.0.18 项目素材链接放上,需要的朋友请自行下载。后台项目为foodie-dev,前端项目有两...

持之以恒,方得始终 5823

kubeadm安装高可用K8S-1.19集群(外部etcd方式)

kubeadm安装高可用K8S-1.19集群<外部etcd方式>集群规划初始化工作(master01-master02-node01都须要操作)安装步骤一、安装keepalived创建VIP二、搭建高可用etcd集群三、安装 kubeadm, kubelet 和 kubectl四、初始化master五、将worker节点加入集群六、安装插件flannel、metrics-server七、测试集群 外部二进制搭建etcd集群、系统出问题后还能通过外部etcd做恢复、操作上比直接把etcd放容器内好

lswzw的博客 9023

linux集群 keepalived+nginx实现高可用集群

工作时 master会通过组播的形式向各个backup发送VRRP协议的数据包,当backup收不到master发来的VRRP数据包时,就会认为master宕机了。check模块负责健康检查;脚本返回1,表示nginx进程不存在,由于上面配置的weight为负数,priority 会减少,减少后的值 priority = priority+weight。●测试的时候,如果关闭nginx服务,虚拟ip还是在master上,那就是由于脚本的设计,关闭nginx后服务又自动起来了,可以把脚本这一行注释掉即可。

Gao0Yuu的博客 1980

使用kubeadm搭建高可用的K8s集群

使用kubeadm搭建高可用的K8s集群

程序猿张同学的博客 926

高可用集群Keepalived

vrrp 协议的软件实现,原生设计目的为了高可用 ipvs服务功能: 基于vrrp协议完成地址流动为vip地址所在的节点生成ipvs规则(在配置文件中预先定义)为ipvs集群的各RS做健康状态检测基于脚本调用接口完成脚本中定义的功能,进而影响集群事 务,以此支持nginx、haproxy等服务。

m0_68096246的博客 1058

Kubernetes 集群部署 之 多Master节点 实现高可用

目录前言一、K8s Master 高可用架构二、在单Master节点基础上搭建 多Master集群架构2.1 环境准备2.2 首先部署 Master02 节点2.3 验证三、负载均衡 集群部署安装 Nginx配置Nginx反向代理(四层)部署 keepalived 高可用 前言 之前我做过 单Master节点的二进制安装部署k8s服务。但是万一这台 Master 宕机了,整个服务就崩了,所以为了实现集群高可用,需要增加多台 Master 解决单点故障。 一、K8s Master 高可用架构 Keep

段小宝的博客 9364

Kubeadm 部署高可用 K8S 集群

阅读本文大概需要 20 分钟。作者:超级小豆丁来源:http://www.mydlq.club/article/4/超级小豆丁[-]一、kuberadm 简介1、...

982

在CentOS7上用kubeadm HAProxy Keepalived 安装多Master节点的高可用Kubernetes集群

文章目录在CentOS7上用kubeadm安装多Master节点的高可用Kubernetes集群前言部署规划资源规划集群规划部署负载均衡服务器部署第一个节点拉取k8s-deploy项目安装Kubernetes克隆服务器作为基准镜像部署第一个Master节点初始化集群安装Calico网络组件部署Worker节点部署第二个Master节点查看集群部署情况Troubleshooting用VMWare试验时怎么设置主机名和IP官方Yum源安装太慢,可使用阿里云Yum源服务器上不了网,可通过HTTP Proxy正向代

锐意工作室 3868

LVS+Keepalived 高可用集群

LVS+Keepalived 高可用集群 一、LVS+Keepalived 高可用群集 LVS提供负载均衡,keepalived提供健康检查,故障转移,提高系统的可用性!采用这样的架构以后很容易对现有系统进行扩展,只要在后端添加或者减少realserver,只要更改lvs的配置文件,并能实现无缝配置变更! 1、LVS Linux虚拟服务器(Linux Virtual Server) LVS 实际上相当于基于IP地址的虚拟化应用, 为基于IP地址和内容请求分发的负载均衡提出了一种高效的解决方法 2、Kee

qq_42941888的博客 378

基于VIP的keepalived高可用集群架构

简介 keepalived作用 检测服务器的状态,如果有一台web服务器宕机,或工作出现故障,keepalived将检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替该服务器的工作,当服务器工作正常后keepalived自动将服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障服务器。 特性 1.配置文件简单:可通过简单配置实现高可用功能。 2.稳定性...

弦月的博客 5414

Keepalived高可用集群

LB:Load Balance 负载均衡HA:High Availability 高可用集群数据库、RedisSPoF: Single Point of Failure,解决单点故障HPC:High Performance Computing 高性能集群。

2201_75739063的博客 1065

使用 Sealos 在 3 分钟内快速部署一个生产级别的 Kubernetes 高可用集群

前段时间,我们在 「使用 Kind 在 5 分钟内快速部署一个 Kubernetes 高可用集群」一文中介绍了如何使用 Kind 这个开箱即可快速部署 Kubernete...

easylife206的专栏 5201

超详细!带你学习高可用集群keepalived

官网:vrrp协议的软件实现,原生设计目的为了高可用ipvs服务功能:基于vrrp协议完成地址流动为vip地址所在的节点生成ipvs规则在配置文件中预先定义为ipvs集群的各RS做健康状态检测基于脚本调用接口完成脚本中定义的功能,进而影响集群事务,以此支持nginxhaproxy等服务vrrp_script <SCRIPT_NAME> { # 定义一个检测脚本,在 global_defs 之外配置。

2201_75769266的博客 929

K8s 搭建高可用集群、可视化管理

声明:此教程非原创、转自 【尚硅谷】java系列教程 kubeadm是官方社区推出的一个用于快速部署kubernetes集群的工具。 这个工具能通过两条指令完成一个kubernetes集群的部署: # 创建一个 Master 节点 $ kubeadm init # 将一个 Node 节点加入到当前集群中 $ kubeadm join <Master节点的IP和端口 > 1. 安装要求 在开始之前,部署Kubernetes集群机器需要满足以下几个条件: 一台或多台机器,操作系统 Cent.

SkyFlying2017 1640

PLSQL Developer14连接Oracle详细过程

下载地址:Instant Client for Microsoft Windows (x64) 64-bit | Oracle 中国解压客户端工具到一个目录(解压文件到当前目录,自动合并成一个目录)​ 电脑(右键)→属性→高级系统设置→环境变量→系统环境变量→新建变量名:NLS_LANG 变量值: AMERICAN_AMERICA.ZHS16GBK​ 变量名:TNS_ADMIN 变量值:C:\xiaxinyu\software\Oracle\instantclient_19_10​ 在Oracle客户端(C

summer_fish的专栏 3983

Cadence Virtuoso实战:用gm/Id方法搞定折叠式共源共栅放大器设计(附完整仿真流程)

本文详细介绍了在Cadence Virtuoso设计环境中,运用gm/Id方法高效设计折叠式共源共栅放大器的完整实战流程。该方法通过工艺特征曲线,将设计指标映射到晶体管尺寸与偏置,有效克服深亚微米工艺下传统方法的不足。文章以TSMC 180nm工艺为例,从指标拆解、参数查找、电路搭建、仿真验证到问题调试,提供了清晰、可复现的操作指南,并探讨了自动化脚本与版图考量,助力工程师和学生提升模拟IC设计效率与成功率。

jwt8token的博客 647

Kubernetes 高可用集群搭建说明

kubeadm join cluster-endpoint:6443 --token xxx --discovery-token-ca-cert-hash xxx --control-plane (待加入节点),如果安装过docker的话,就会存在containerd,因为containerd作为docker底层的容器运行时,其中docker仅为客户端,也可以仅安装containerd,目前没尝试过,可以自行查下资料。1)初始化主节点(在master节点执行,多master中的其中一台执行即可)

xjxy52o的博客 663

一文读懂AI大模型时代的RAG技术

RAG(Retrieval-Augmented Generation,检索增强生成) 是一种结合检索技术与生成模型的技术架构,旨在通过动态引入外部知识库增强大语言模型(LLM)的生成能力。其核心思想是通过检索系统从外部数据源(如企业知识库、实时文档等)获取相关信息,并将检索结果作为上下文输入生成模型,以提高生成答案的准确性、时效性和专业性

awei0916的专栏 2119

09--keepalived高可用集群

keepalived高可用集群,基础概念,集群配置,进阶脚本及脚本修改方式,与负载均衡配合使用操作步骤,一文详解

qq_43387908的博客 2173

哨兵一号数据snap预处理_利用SNAP软件进行Sentinel-1A卫星微波影像的预处理

利用SNAP软件对雷达影像进行预处理,主要包括热噪声去除、轨道文件校正、辐射定标、滤波校正、多普勒地形校正,最终获得入射角和后向散射信息。数据:本次实验所用数据为哨兵一号(Sentinel-1A)干涉宽幅模式(Interferometric Wideswath,IW)下经过多视处理和地距转换的GRD格式产品一般处理流程如下:0 SNAP软件安装软件安装:安装成功后打开SNAP后如图所示:1 数据...

weixin_30000407的博客 1万+

手把手教你解决Keil5安装时xerces-c_3_0.dll缺失和0xc000007b报错(附文件下载与路径设置)

本文详细解析了Keil5安装过程中常见的xerces-c_3_0.dll缺失和0xc000007b报错问题,提供了从文件获取、路径设置到系统配置的完整解决方案。同时,文章还涵盖了STM32开发环境的搭建技巧和最佳实践,帮助开发者快速构建稳定的嵌入式开发环境。

weixin_29164497的博客 600

NGINX+KEEPALIVED实现NGINX高可用集群

nginx作为一款企业级的代理服务器,在各种场景下均有广泛的使用,尤其是在前后端分离的项目中,nginx作为路由转发的功能是非常常用的。在一些流量比较大的项目中,为了应对高并发的场景,后端服务往往采用集群部署,这时候,就需要使用到nginx的负载均衡功能,从而避免应用节点的单节点故障问题。那么问题又来了,nginx的单点问题怎么解决?我们可以通过nginx+keepalived的高可用集群方案来避免nginx的单节点故障问题,从而大幅度提高nginx的稳定性和可靠性。

Wu 小杰的博客 2216

【用unity实现100个游戏之1】制作类元气骑士、挺进地牢——俯视角射击游戏多种射击效果(二)(附源码)

这篇文章我们将继续实现曲线射击与两种不需要实体子弹的射击方式 源码在文章末尾。

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 5060

docker下用keepalived+Haproxy实现高可用负载均衡集群

先记录下遇到的坑,避免之后忘了; 花时间最多去解决的一个题是:在docker下启动haproxy服务后在这个docker服务内安装keepalived无法ping通的问题,虽然最后也是莫名其妙就好了,但是加强了不少对docker的理解和还需深入学习的地方。   为什么要用keepalived+haproxy实现docker下的高可用负载均衡?在不同环境下有哪些方式可以实现高可用负载均衡? ...

布偶猫爸爸的博客 1万+

模糊控制 (Fuzzy Control) 算法详解及案例分析

模糊控制是一种基于模糊逻辑的控制策略,其核心思想是通过模糊规则和模糊推理实现对复杂系统的控制。模糊控制不依赖于精确的数学模型,而是通过模拟人类的决策过程来处理不确定性和非线性问题。

闲人编程的博客 3657

华为OD机试真题2025双机位C卷 C++ 实现【卡牌游戏】

小明正在尝试一种新的牌游戏。游戏规则只如下:首先,小明拿到一张写有数字m的牌。 然后,他会拿到另外n张牌,上面分别写有不同的数字,牌排成一排。小明的目标是从这排牌中找到一串连续的牌,这些牌上数字的总和可以被 m整除。你的任务是判断小明是否可以完成这个目标。

MISAYAONE的博客 281
上一篇: 图文结合带你搞懂MySQL日志之Error Log(错误日志)
下一篇: GreatSQL MGR 使用 IPv6 连接
GreatSQL社区
博客等级 码龄5年 1210粉丝 390原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值