Day 43 keepalived高可用集群

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 ] ;thensystemctl 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=1check_mysql_helth (){$MYSQL -h $MYSQL_HOST -u $MYSQL_USER -p${MYSQL_PASSWORD} -e "show status;" &>/dev/nullif [ $? -eq 0 ] ;thenMYSQL_OK=1elseMYSQL_OK=0fireturn $MYSQL_OK
}while [ $CHECK_TIME -ne 0 ]
docheck_mysql_helthif [ $MYSQL_OK -eq 1 ] ; thenexit 0fiif [ $MYSQL_OK -eq 0 ] &&  [ $CHECK_TIME -eq 1 ];then/etc/init.d/keepalived stopexit 1filet 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=1check_mysql_helth (){$MYSQL -h $MYSQL_HOST -u $MYSQL_USER -p${MYSQL_PASSWORD} -e "show status;" &>/dev/nullif [ $? -eq 0 ] ;thenMYSQL_OK=1elseMYSQL_OK=0fireturn $MYSQL_OK
}while [ $CHECK_TIME -ne 0 ]
docheck_mysql_helthif [ $MYSQL_OK -eq 1 ] ; thenexit 0filet 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.rhkb.cn/news/346705.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【浏览器清空证书】

chrome://net-internals/#hsts 在地址栏输入并访问&#xff1a;chrome://net-internals/#hsts

[AI Omost] 革命性AI图像合成技术,让你的创意几乎一触即发!

介绍 Omost 是一个创新的项目&#xff0c;它利用大型语言模型&#xff08;LLM&#xff09;的编码能力来生成图像&#xff0c;特别是通过图像合成技术。项目的名称“Omost”发音类似于“almost”&#xff0c;寓意着使用该项目后&#xff0c;用户的图像生成工作几乎可以完成。同…

bbbike下载OSM路网数据后使用GraphHopper离线进行路径规划

一、bbbike下载OSM路网数据 BBBike extracts OpenStreetMap (OSM, Garmin, Shapefile etc.) 二、GraphHopper离线搭建 GraphHopper是一种快速且内存有效的Java导航引擎&#xff0c;默认使用OSM和GTFS数据&#xff0c;也可导入其他的数据源。支持CH&#xff08;Contraction Hi…

如何提高逻辑性?(小妙招)

在现代社会中&#xff0c;逻辑性是一种至关重要的思维能力。不论是在工作、学习还是生活中&#xff0c;逻辑清晰的人总能更好地解决问题和做出决策。然而&#xff0c;如何提高逻辑性却是许多人头疼的问题。本文将从六个方面详细探讨如何提升逻辑性&#xff0c;包括细心态度、逼…

网页宽度现在右侧有一个竖条空白,怎么啦车网站都没办法完全铺满宽度,怎么回事怎么解决

问: 网页宽度怎么设置全覆盖 回答: 经过检查,发现 是这个网站的最外层html标签设置了宽度,所以导致,当我们删除html的宽度后就解决了这个问题.

大模型基础——从零实现一个Transformer(1)

一、Transformer模型架构图 主要模块&#xff1a; embedding层&#xff1a; Input/Output Embedding&#xff1a; 将每个标记(token)转换为对应的向量表示。 Positional Encoding&#xff1a;由于没有时序信息&#xff0c;需要额外加入位置编码。 N个 block堆叠: Multi-Head …

Spring Boot 使用自定义注解和自定义线程池实现异步日志记录

&#x1f604; 19年之后由于某些原因断更了三年&#xff0c;23年重新扬帆起航&#xff0c;推出更多优质博文&#xff0c;希望大家多多支持&#xff5e; &#x1f337; 古之立大事者&#xff0c;不惟有超世之才&#xff0c;亦必有坚忍不拔之志 &#x1f390; 个人CSND主页——Mi…

树-二叉树的最大路径和

一、问题描述 二、解题思路 因为各个节点的值可能为负数&#xff0c;初始化res(最大路径和)的值为最小整数&#xff1a;Integer.MIN_VALUE 我们这里使用深度遍历&#xff08;递归&#xff09;的方法&#xff0c;先看某一个子树的情况&#xff1a; 这里有一个技巧&#xff0c;…

纷享销客安全体系:安全运维运营

安全运维运营(Security Operations,SecOps)是指在信息安全管理中负责监控、检测、响应和恢复安全事件的一系列运营活动。它旨在保护组织的信息系统和数据免受安全威胁和攻击的损害。 通过有效的安全运维运营&#xff0c;组织可以及时发现和应对安全威胁&#xff0c;减少安全事…

【Linux文件篇】系统文件、文件描述符与重定向的实用指南

W...Y的主页 &#x1f60a; 代码仓库分享&#x1f495; 前言&#xff1a;相信大家对文件都不会太陌生、也不会太熟悉。在没有学习Linux操作系统时&#xff0c;我们在学习C或C时都学过如何去创建、打开、读写等待文件的操作&#xff0c;知道一些语言级别的一些接口与函数。但…

【Pytorch】一文向您详细介绍 torch.tensor() 的常见用法

【Pytorch】一文向您详细介绍 torch.tensor() 的常见用法 下滑即可查看博客内容 &#x1f308; 欢迎莅临我的个人主页 &#x1f448;这里是我静心耕耘深度学习领域、真诚分享知识与智慧的小天地&#xff01;&#x1f387; &#x1f393; 博主简介&#xff1a;985高校的普通…

盲盒小程序推广与运营策略的挑战

随着盲盒经济的兴起&#xff0c;越来越多的商家开始关注并尝试开发盲盒小程序。然而&#xff0c;在推广和运营盲盒小程序的过程中&#xff0c;我们也不可避免地会遇到一些挑战。下面&#xff0c;我将就用户获取、留存以及活跃度提升等方面&#xff0c;探讨这些挑战及可能的应对…

【Linux】生产者消费者模型——阻塞队列BlockQueue

> 作者&#xff1a;დ旧言~ > 座右铭&#xff1a;松树千年终是朽&#xff0c;槿花一日自为荣。 > 目标&#xff1a;理解【Linux】生产者消费者模型——阻塞队列BlockQueue。 > 毒鸡汤&#xff1a;有些事情&#xff0c;总是不明白&#xff0c;所以我不会坚持。早安!…

【网络安全】网络安全基础精讲 - 网络安全入门第一篇

目录 一、网络安全基础 1.1网络安全定义 1.2网络系统安全 1.3网络信息安全 1.4网络安全的威胁 1.5网络安全的特征 二、入侵方式 2.1黑客 2.1.1黑客入侵方式 2.1.2系统的威胁 2.2 IP欺骗 2.2.1 TCP等IP欺骗 2.2.2 IP欺骗可行的原因 2.3 Sniffer探测 2.4端口扫描技术…

知识付费小程序源码系统 一键拥有属于自己的知识店铺 带完整的安装代码包以及搭建教程

系统概述 在数字化时代&#xff0c;知识已成为最具价值的资产之一。随着互联网技术的飞速发展&#xff0c;知识付费市场迎来了前所未有的发展机遇。为了帮助广大内容创作者、教育机构及个人轻松搭建专属的知识店铺&#xff0c;一款高效、易用的知识付费小程序源码系统应运而生…

架构设计-用户信息及用户相关的密码信息设计

将用户的基本信息和用户密码存放在不同的数据库表中是一种常见的安全做法&#xff0c;这种做法旨在增强数据的安全性和管理的灵活性。以下是这种做法的几个关键原因&#xff1a; 安全性增强&#xff1a; 当用户密码被单独存放在一个表中时&#xff0c;可以使用更强大的加密和哈…

超详解——Python模块文档——基础篇

目录 1. Unix起始行 示例&#xff1a; 2. 对象和类型 示例&#xff1a; 3. 一切都是对象 示例&#xff1a; 4. 理解对象和引用 示例&#xff1a; 5. 理解对象和类型 示例&#xff1a; 6. 标准类型 示例&#xff1a; 7. 其他内建类型 示例&#xff1a; 8. 类型的类…

东南亚电商Tiki、Qoo10:如何用自养号测评提升产品曝光和销量

随着互联网的普及和全球化的推进&#xff0c;跨境电商在东南亚地区日益繁荣。Tiki、Qoo10作为该地区的电商巨头&#xff0c;不仅吸引了大量消费者&#xff0c;也成为了卖家竞相角逐的战场。为了在这场竞争中脱颖而出&#xff0c;卖家们纷纷采用测评这一方式来提升产品销量。本文…

弱智吧”,人类抵御AI的最后防线

“写遗嘱的时候错过了deadline怎么办&#xff1f;” “怀念过去是不是在时间的长河里刻舟求剑&#xff1f;” “英语听力考试总是听到两个人在广播里唠嗑&#xff0c;怎么把那两个干扰我做题的人赶走&#xff1f;” 以上这些饱含哲学但好像又莫名其妙的问题&#xff0c;出自…

MySQL复习题(期末考试)

MySQL复习题&#xff08;期末考试&#xff09; 1.MySQL支持的日期类型&#xff1f; DATE,DATETIME,TIMESTAMP,TIME,TEAR 2.为表添加列的语法&#xff1f; alter table 表名 add column 列名 数据类型; 3.修改表数据类型的语法是&#xff1f; alter table 表名 modify 列名 新…