Day 43 keepalived高可用集群

news2025/1/15 22:33:48

keepalived高可用集群

负载均衡 lb集群 load balance

​ 流量分发

高可用 ha集群 high availability

​ 主要是给服务器做冗余

keepalive 持久连接 保持存活

keepalived 高可用软件名称

红帽有自己的高可用集群套件:RHCS

keepalived介绍

​ keepalived是集群管理中保证集群高可用的一个服务软件,其功能类似于heartbeat,用来防止单点故障。

脑裂问题:

backup vip

master vip

解决:stonith shoot the other node in the head 爆头

重启keepalived 关闭keepalived服务

keepalived工作原理

​ keepalived是以VRRP协议为实现基础的,是实现路由器高可用的协议,VRRP全称Virtual Router Redundancy Protocol,即虚拟路由冗余协议。

面试题(keepalived的工作原理)
将N台提供相同功能的服务器组成一个服务器组,这个组里面有一个master和多个backup,master上面有一个对外提供服务的vip(该服务器所在局域网内其他机器的默认路由为该vip),master会发组播,当backup收不到vrrp包时就认为master宕掉了,这时就需要根据VRRP的优先级来选举一个backup当master

keepalived主要有三个模块,分别是core、check和vrrp。core模块为keepalived的核心,负责主进程的启动、维护以及全局配置文件的加载和解析。check负责健康检查,包括常见的各种检查方式。vrrp模块是来实现VRRP协议的。

keepalived部署

分别在Director master、Director backup 上部署浮动资源(VIP IPVS策略)
测试2个Director在DR模式下都工作正常。测试完成后都撤掉浮动资源。


关于dr网卡路由条目上下顺序问题

因为dr2是ens36在下面,ens33在上面,所以配置keepalived的时候就不行了,可尝试以下解决方案调整路由条目上下顺序(如果还不行就需要在开始规划的时候就要固定网卡固定ip规划好,其实物理服务器不会出现这个问题)

[root@server ~]# ip r l
default via 192.168.26.2 dev ens36 proto dhcp src 192.168.26.132 metric 100 
default via 192.168.26.2 dev ens33 proto dhcp src 192.168.26.131 metric 101 
192.168.26.0/24 dev ens36 proto kernel scope link src 192.168.26.132 metric 100 
192.168.26.0/24 dev ens33 proto kernel scope link src 192.168.26.131 metric 101 

[root@server ~]# ip link set ens36 down
[root@server ~]# ip r l
default via 192.168.26.2 dev ens33 proto dhcp src 192.168.26.131 metric 101 
192.168.26.0/24 dev ens33 proto kernel scope link src 192.168.26.131 metric 101 

[root@server ~]# ip link set ens36 up
[root@server ~]# ip r l
default via 192.168.26.2 dev ens33 proto dhcp src 192.168.26.131 metric 101 
default via 192.168.26.2 dev ens36 proto dhcp src 192.168.26.132 metric 102 
192.168.26.0/24 dev ens33 proto kernel scope link src 192.168.26.131 metric 101 
192.168.26.0/24 dev ens36 proto kernel scope link src 192.168.26.132 metric 102

image-20230307181508663

1. 在master上安装配置Keepalived

# yum install keepalived -y

2. 修改配置文件(清空原有配置文件)

# cd /etc/keepalived/
# vim keepalived.conf

//全局配置
! Configuration File for keepalived
global_defs {
notification_email {
root@localhost
}
notification_email_from keepalived@localhost
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id Director1 //两边是一样的
}
//局部配置
vrrp_instance VI_1 {
state MASTER //另外一台机器是BACKUP
interface eth0 //心跳网卡 DIP那一块网卡
virtual_router_id 51
priority 50 //优先级
advert_int 1 //检查间隔,单位秒
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.122.254/24 dev eth0 //VIP随便自己定义 只要是同一个网段就可以
}
}

virtual_server 192.168.122.254 80 { //LVS 配置,VIP
delay_loop 3 //服务论询的时间间隔
lb_algo rr //LVS 调度算法
lb_kind DR // LVS 集群模式
protocol TCP
real_server 192.168.122.30 80 {
weight 1
TCP_CHECK {
connect_timeout 3
}
}
real_server 192.168.122.40 80 {
weight 1
TCP_CHECK {
connect_timeout 3
}
}
}

3.在backup上安装keepalived

# yum install keepalived -y

4.拷贝master上的keepalived.conf到backup上:

# scp keepalived.conf 192.168.122.20:/etc/keepalived/

5.拷贝后,修改配置文件
state BACKUP
priority 100

6.两个Director上启动服务

# systemctl start keepalived

7.测试
1)观察lvs路由条目
2)观察vip地址在哪台机器上(有可能两台机器上都有,但是他好用没有问题即可)
3)客户端浏览器访问vip
4)关闭master上的keepalived服务,再次访问vip

实验过程总结

10.0.0.20 dr1
10.0.0.21 dr2
10.0.0.22 web1 rs1
10.0.0.23 web2 rs2

1. 设置rs的配置
1.1 安装web服务器
1.2 添加vip:10.0.0.40 lo
1.3 arp 1 2

2. dr的配置
2.1 两块网卡 两台机器上的两块网卡名称必须一样
2.2 路由条目的顺序必须一样
2.3 区分谁当dip 谁的路由条目在上面 谁当dip
2.4 dip要固定下来 20 21 ens33
2.5 vip ens37 :ip地址 有或没有都行 只要这个网卡是启动状态
如果有Ip地址,这个Ip不能是vip
2.6 安装ipvsadm

3. 安装keepalived到两台dr上
修改keepalived.conf配置文件:
设置vip
设置角色 master backup
设置realserver是谁 ip地址是多少

扩展实验-keepalived+mysql

mysql可以是以下3种情况

1、双主

2、mysql-cluster

3、gelara集群

项目环境
VIP 192.168.122.100
mysql1 192.168.122.10
mysql2 192.168.122.20
vip
主(keepalived) 主(keepalived)

实现过程概要

一、mysql 主主同步
二、在两台mysql上安装keepalived
三、keepalived 主备配置文件
四、mysql状态检测脚本/root/bin/keepalived_check_mysql.sh
五、测试及诊断
注 keepalived之间使用vrrp组播方式通信使用的IP地址是224.0.0.18
======================================
实施步骤
一、mysql 主主同步 <略>

二、安装keepalived

两台
# yum install keepalived -y

三、keepalived 主备配置文件
主备置文件不同处有 state priority


192.168.122.10 Master配置

# vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {
router_id mysql1 //两边一样
}

vrrp_script check_run { //定义配置健康检查脚本的配置名称check_run
script “/root/keepalived_check_mysql.sh”
interval 5 //执行健康检查的时间间隔 单位s
}

vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 88
priority 100
advert_int 1 //检查keepalived本身服务的时间间隔
authentication {
auth_type PASS
auth_pass 1111
}

​ track_script {
check_run //名字必须和上面的脚本配置名称一致
​ }

​ virtual_ipaddress {
192.168.122.100 dev eth0
​ }
}


192.168.122.20 Slave配置

# vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {
router_id mysql1
}

vrrp_script check_run {
script “/root/keepalived_check_mysql.sh”
interval 5
}

vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 88
priority 90
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}

​ track_script {
​ check_run
​ }

​ virtual_ipaddress {
192.168.122.100
​ }
}

四、mysql状态检测脚本

/root/keepalived_check_mysql.sh(两台MySQL同样的脚本)

版本一:简单使用:
#!/bin/bash
/usr/bin/mysql -h ip -uroot -p123 -e "show status;" &>/dev/null
if [ $? -ne 0 ] ;then
        systemctl stop keepalived
fi
# 此处的ip是本地ip

版本二:检查多次
#  vim  /root/keepalived_check_mysql.sh
#!/bin/bash
MYSQL=/usr/local/mysql/bin/mysql
MYSQL_HOST=localhost
MYSQL_USER=root
MYSQL_PASSWORD=1111
CHECK_TIME=3

#mysql  is working MYSQL_OK is 1 , mysql down MYSQL_OK is 0
MYSQL_OK=1

check_mysql_helth (){
    $MYSQL -h $MYSQL_HOST -u $MYSQL_USER -p${MYSQL_PASSWORD} -e "show status;" &>/dev/null
    if [ $? -eq 0 ] ;then
        MYSQL_OK=1
    else
        MYSQL_OK=0
    fi
    return $MYSQL_OK
}

while [ $CHECK_TIME -ne 0 ]
do
        check_mysql_helth
        if [ $MYSQL_OK -eq 1 ] ; then
                exit 0
        fi

        if [ $MYSQL_OK -eq 0 ] &&  [ $CHECK_TIME -eq 1 ];then
                /etc/init.d/keepalived stop
                exit 1
        fi
        let CHECK_TIME--
        sleep 1
done

版本三:检查多次
#  vim  /root/keepalived_check_mysql.sh
#!/bin/bash
MYSQL=/usr/local/mysql/bin/mysql
MYSQL_HOST=localhost
MYSQL_USER=root
MYSQL_PASSWORD=1111
CHECK_TIME=3

#mysql  is working MYSQL_OK is 1 , mysql down MYSQL_OK is 0
MYSQL_OK=1

check_mysql_helth (){
    $MYSQL -h $MYSQL_HOST -u $MYSQL_USER -p${MYSQL_PASSWORD} -e "show status;" &>/dev/null
    if [ $? -eq 0 ] ;then
        MYSQL_OK=1
    else
        MYSQL_OK=0
    fi
    return $MYSQL_OK
}

while [ $CHECK_TIME -ne 0 ]
do
        check_mysql_helth
        if [ $MYSQL_OK -eq 1 ] ; then
                exit 0
        fi

        let CHECK_TIME--
        sleep 1
done
/etc/init.d/keepalived stop
exit 1

# chmod 755 /root/keepalived_check_mysql.sh

两边均启动keepalived

日志查看脚本是否被执行
# tail -f /var/log/messages
Jun 19 15:20:19 xen1 Keepalived_vrrp[6341]: Using LinkWatch kernel netlink reflector...
Jun 19 15:20:19 xen1 Keepalived_vrrp[6341]: VRRP sockpool: [ifindex(2), proto(112), fd(11,12)]
Jun 19 15:20:19 xen1 Keepalived_vrrp[6341]: VRRP_Script(check_run) succeeded

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1810616.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

8.1 基本打印功能

本文仅供学习交流&#xff0c;严禁用于商业用途&#xff0c;如本文涉及侵权请及时联系本人将于及时删除 在使用“MFC应用”项目模板生成应用程序的过程中&#xff0c;如果在“高级功能”窗口中不取消对打印和打印预览的设置&#xff0c;那么应用程序就已经具备了简单的打印和打…

开源VisualFbeditor中文版,vb7 IDE,VB6升级64位跨平台开发安卓APP,Linux程序

吴涛老矣&#xff0c;社区苦无64位易语言&#xff0c;用注入DLL增强菜单&#xff0c;做成VS一样的界面 终归是治标不治本&#xff0c;一来会报毒&#xff0c;二来闭源20年没更新了 开源的VB7&#xff0c;欢迎易语言的铁粉进群&#xff1a;1032313876 【Freebasic编程语言】编绎…

细说中国自动化集成商100家

导语 大家好&#xff0c;我是社长&#xff0c;老K。专注分享智能制造和智能仓储物流等内容。 新书《智能物流系统构成与技术实践》 在当今快速发展的工业自动化领域&#xff0c;中国企业正以其卓越的技术实力和创新能力&#xff0c;在全球市场上占据着越来越重要的位置。为了更…

【MySQL】(基础篇七) —— 通配符和正则表达式

通配符和正则表达式 本章介绍什么是通配符、如何使用通配符以及怎样使用LIKE操作符进行通配搜索&#xff0c;以便对数据进行复杂过滤&#xff1b;如何使用正则表达式来更好地控制数据过滤。 目录 通配符和正则表达式LIKE操作符百分号(%)通配符下划线(_)通配符 通配符使用技巧正…

【APP逆向】央视频播放量增加,逆向全过程解密

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全…

2024北京通信展:聚焦新一代信息通信技术、产品、应用及解决方案

中国国际信息通信展览会&#xff08;PTEXPO&#xff09;作为工业和信息化部主办的ICT行业盛会&#xff0c;自1990年创办以来&#xff0c;已走过了三十多年的辉煌历程。三十余载光阴荏苒&#xff0c;PT展以其独特的魅力&#xff0c;不仅成为反映信息通信行业发展新成果的重要窗口…

【vue3|第8期】深入理解Vue 3 computed计算属性

日期&#xff1a;2024年6月10日 作者&#xff1a;Commas 签名&#xff1a;(ง •_•)ง 积跬步以致千里,积小流以成江海…… 注释&#xff1a;如果您觉得有所帮助&#xff0c;帮忙点个赞&#xff0c;也可以关注我&#xff0c;我们一起成长&#xff1b;如果有不对的地方&#xf…

邻接矩阵深度优先遍历

深度优先遍历&#xff0c;就是一条路&#xff0c;走到底&#xff0c;然后再走下一个岔路。 下面代码就主要使用递归来进行&#xff0c;当然也可以借助栈来实现。 private void traverse(char v, boolean[] visited) {int index _getIndexOfV(v);//获取v顶点在vertexS字符数组…

传感器技术

传感器技术 传感器概述传感器简介传感器的特性线性度灵敏度迟滞重复性传感器的动态特性 步进电动机步进电机的工作原理 传感器概述 传感器简介 传感器&#xff1a;能够感受被测量并按照一定规律转换成可用输出信号的器件或装置。 敏感元件&#xff1a;传感器中能直接感受或响…

Qwen 2 模型介绍及其应用探索

引言 Qwen 2 模型家族最近引起了广泛关注&#xff0c;作为继 Qwen 1.5 的升级版&#xff0c;这些模型在多语言支持、推理能力和长上下文处理等方面表现出色。本文将深入探讨 Qwen 2 模型的特点、应用场景以及具体的代码示例&#xff0c;帮助读者更好地理解和使用这些模型。 Q…

如何把java项目打包成jar包

以下就是图解过程 确定好以后 过一会就成这样了

Python 基础语法详解(四)

Python 基础语法详解&#xff08;四&#xff09; Python 条件语句最简单的 if 语句基本的 if 语句实战&#xff1a; 复杂 if 语句实战&#xff1a; 看一看 elif 的好处题目&#xff1a;代码实现&#xff1a; 三元表达式格式为&#xff1a;实操&#xff1a; Python 条件语句 在…

17个有用的CLI命令

作为前端开发工程师&#xff0c;我们需要了解哪些命令&#xff1f;如果您熟悉这些命令&#xff0c;它们将大大提高您的工作效率。 1. tree 你们知道如何列出一个目录的文件结构吗&#xff1f;它在显示文件之间的目录关系方面做得很好 commands ├── a.js ├── b.js ├── …

用GAN网络生成彩票号码

本文将详细解析如何使用生成对抗网络(GAN)来生成彩票号码。我们将介绍代码的每个部分,并给出详细注释,帮助读者理解整个过程。效果如下: 导入依赖 首先,我们需要导入所需的库。 import numpy as np import pandas as pd import torch import torch.nn as nn import t…

树莓派4B 零起点(三) 树莓派 VNC 远程桌面配置(1)

目录 一、启用树莓派4B的 VNC 服务 二、在PC的操作系统上安装VNC客户端 1、下载安装 RealVNC 2、下载安装 TigerVNC 三、登录VNC远程桌面 1、通过使用 ifconfig 查看树莓派的 IP 地址 2、启动 TigerVNC 客户端&#xff08;Windows版本演示&#xff09; 在前两章的基础下…

Java学习-MyBatis学习(一)

MyBatis MyBatis历史 MyBatis本是apache的一个开源项目iBatis&#xff0c;2010年这个项目由apache software foundation迁移到了google code&#xff0c;并且改名为MyBatis。2013年11月迁移到Github。iBATIS一词来源于“internet”和“abatis”的组合&#xff0c;是一个基于J…

全球AI速递6.11

1.快手&#xff1a;发布“可灵”视频生成大模型。 2.OPPO&#xff1a;计划让约 5 千万用户的手机搭载生成式 AI。 3.腾讯&#xff1a;发布了针对混元文生图开源大模型&#xff08;混元DiT&#xff09;加速库。 4.Stability AI&#xff1a;开源Stable Audio Open AI 模型&am…

支付交易——在线支付系统基本概念

摘要 本文聚集于实战&#xff0c;只讲解最实用的知识点&#xff0c;至于支付起源、在线支付发展历程等科普知识&#xff0c;感兴趣的读者可参考其它优秀的支付类书籍或网络上其它优秀的文章。本章内容对大部分专业概念进行了极致简化&#xff0c;以便更好地帮助读者入门。实际…

假期已结束,大家都开始上班了吗

千行赏金APP&#xff1a;一站式悬赏任务平台详解 一、功能特点 千行赏金APP&#xff0c;作为一个综合性的悬赏任务平台&#xff0c;其功能特点突出&#xff0c;为用户提供了丰富的体验。首先&#xff0c;用户可以在平台上发布各类任务&#xff0c;如填写问卷、参与调研、试玩游…

UE5.2打包安卓

目录 简介: 一. 根据官网配置 二. 手动定位SDK路径 三: 设置Android基本信息 四: 设置KeyStore 五: 开始打包 六:其他 七. 总结 简介: UE5.2 打包安卓是指将使用 Unreal Engine 5.2 开发的项目编译为可在安卓设备上运行的安装包。 以下是一般的打包步骤&#xff1a; 安装…