Keepalived 在CentOS 7安装并配置监听MySQL双主

news2024/10/5 18:26:17

keepalived安装

MySQL双主配置请看这里:https://tongyao.blog.csdn.net/article/details/132016200?spm=1001.2014.3001.5502

128、129两台服务器安装步骤相同,配置文件不同,下面有介绍。

1.安装相关依赖包,并下载keepalived安装包,解压,配置,编译

[root@128 ~]# cd /opt
[root@128 opt]# yum -y install gcc openssl-devel popt-devel psmisc
[root@128 opt]# wget https://www.keepalived.org/software/keepalived-2.2.7.tar.gz
[root@128 opt]# tar -zxvf keepalived-2.2.7.tar.gz
[root@128 opt]# cd keepalived-2.2.7
[root@128 keepalived-2.2.7]# ./configure --prefix=/opt/keepalived-2.2.7
[root@128 keepalived-2.2.7]# make && make install

2.将文件复制到对应目录下

[root@128 keepalived-2.2.7]# mkdir /etc/keepalived
[root@128 keepalived-2.2.7]# cp keepalived/etc/keepalived/keepalived.conf.sample /etc/keepalived/keepalived.conf
[root@128 keepalived-2.2.7]# cp keepalived/etc/init.d/keepalived /etc/init.d/
[root@128 keepalived-2.2.7]# cp keepalived/etc/sysconfig/keepalived /etc/sysconfig/
[root@128 keepalived-2.2.7]# cp bin/keepalived /usr/sbin/

3.新建/etc/keepalived/shutdown.sh文件,内容为:

#!/bin/bash
#该脚本是在mysql服务出现异常时,将keepalived应用停止,从而使虚拟vip主机自动连接到另一台mysql上
killall keepalived

执行授权,否则在MySQL出现异常时不会关闭keepalived:

chmod 777 /etc/keepalived/shutdown.sh

4.使用ifconfig命令查看下网卡名称,本机网卡名称为ens33
在这里插入图片描述
5.修改128服务器/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 192.168.200.1
   smtp_connect_timeout 30
   router_id LVS_MASTER
   vrrp_skip_check_adv_addr
   vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}
 
vrrp_instance VI_1 {
    state MASTER
    #interface为刚才查到的本机网卡名称
    interface ens33
    #同一网段中同一组virtual_router_id值相同。不同组virtual_router_id值唯一。
    #如server-1、server-2为一组,virtual_router_id=51
    #server-3、server-4为一组,则virtual_router_id不能为51
    virtual_router_id 51
    #字数越大,优先级越高,master必须大于backup
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
       #该ip为虚拟出来的vip地址
       192.168.222.130
    }
}
 
#配置virtual_server  ip为上面配置的虚拟vip地址  端口为mysql的端口
virtual_server 192.168.222.130 3306 {
    delay_loop 6
    lb_algo rr
    lb_kind NAT
    persistence_timeout 50
    protocol TCP
    #real_server 该配置为实际物理机ip地址 以及实际物理机mysql端口
    real_server 192.168.222.128 3306 {
        #当该ip 端口连接异常时,执行该脚本
        notify_down /etc/keepalived/shutdown.sh
        TCP_CHECK {
            #实际物理机ip地址
            connect_ip 192.168.222.128
            #实际物理机port端口
            connect_port 3306
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
}

6.修改129服务器/etc/keepalived/keepalived.conf配置文件,与128的配置不同地方为real_server、connect_ip 两个配置,需要配置对应的实际主机ip,详细内容如下:

! 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 192.168.200.1
   smtp_connect_timeout 30
   router_id LVS_MASTER
   vrrp_skip_check_adv_addr
   vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}
 
vrrp_instance VI_1 {
    state BACKUP
    #interface为刚才查到的本机网卡名称
    interface ens33
    #同一网段中同一组virtual_router_id值相同。不同组virtual_router_id值唯一。
    #如server-1、server-2为一组,virtual_router_id=51
    #server-3、server-4为一组,则virtual_router_id不能为51
    virtual_router_id 51
    #字数越大,优先级越高,master必须大于backup
    priority 90
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
       #该ip为虚拟出来的vip地址
       192.168.222.130
    }
}
 
#配置virtual_server  ip为上面配置的虚拟vip地址  端口为mysql的端口
virtual_server 192.168.222.130 3306 {
    delay_loop 6
    lb_algo rr
    lb_kind NAT
    persistence_timeout 50
    protocol TCP
    #real_server 该配置为实际物理机ip地址 以及实际物理机mysql端口
    real_server 192.168.222.129 3306 {
        #当该ip 端口连接异常时,执行该脚本
        notify_down /etc/keepalived/shutdown.sh
        TCP_CHECK {
            #实际物理机ip地址
            connect_ip 192.168.222.129
            #实际物理机port端口
            connect_port 3306
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
}

详细配置参考《Keepalived 安装和配置详解》

7.将128、129服务器keepalived加入开机自启,并启动服务

[root@128 keepalived-2.2.7]# systemctl enable keepalived
[root@128 keepalived-2.2.7]# systemctl start keepalived

8.启动后keepalived状态为:active(running)则正常

在这里插入图片描述
9.启动后相当于虚拟出一个vip 192.168.222.130,可使用远程连接工具,连接该服务器,连接进去后使用ifconfig查看该虚拟vip实际上使用的实体服务器是129服务器。

在这里插入图片描述
10.将129服务器的keepalived应用停止,再次查看130服务ifconfig,可以看到,130服务器自动将实体机ip漂移到了128服务器上
在这里插入图片描述
在这里插入图片描述
至此,keepalived部署完成。

mysql双主双活+keepalived高可用整体测试

1.首先将128、129两台服务器mysql、keepalived应用全部启动,然后用mysql连接工具连接keepalived虚拟出来的192.168.222.130服务器

在这里插入图片描述
2.再130数据库test_db库t_test表插入id=3,name=‘wangwu’

在这里插入图片描述
3.此时可以查看128、129数据库,数据已同步

在这里插入图片描述
4.查看130服务器ifconfig实际使用的物理机为128,所以128服务器mysql为主数据库。

在这里插入图片描述
5.此时手动将128服务器mysql停止,keepalived检测到128服务3306端口连接失败,会执行/etc/keepalived/shutdown.sh脚本,将128服务器keepalived应用结束。

在这里插入图片描述
6.此时再连接130服务下,ifconfig查看,发现已经实际将物理机由128转移到129服务器上

在这里插入图片描述
7.再使用mysql连接工具连接130的mysql,插入一条数据id=4,name=‘zhaoliu’,测试是否将数据存入129服务器mysql中

在这里插入图片描述
8.查看129服务器mysql数据,数据已同步,说明keepalived搭建高可用成功,当128服务器mysql出现问题后keepalived自动漂移IP到实体机129服务器上,从而使129服务器mysql作为主数据库。

在这里插入图片描述
9.此时再启动128服务器mysql、keepalived应用

在这里插入图片描述
10.查看128数据库t_test表数据,数据已同步成功。

在这里插入图片描述
11.如果漂移失败,可能是virtual_router_id在同网段内重复导致。可执行命令查看是否有其他ip使用

[root@128 keepalived-2.2.7]# tcpdump -i 网卡名 vrrp -n |grep virtual_router_id值
#例如:
[root@128 keepalived-2.2.7]# tcpdump -i eno16777736 vrrp -n |grep 51

至此,mysql双主双活+keepalived高可用部署并测试完成。

文章参考:https://blog.csdn.net/a360284634/article/details/89892028,并稍做修改。

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

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

相关文章

css 利用模糊属性 制作水滴

<style>.box {background-color: #111;height: 100vh;display: flex;justify-content: center;align-items: center;/* 对比度*/filter: contrast(20);}.drop {width: 150px;height: 159px;border-radius: 50%;background-color: #fff;position: absolute;/* 模糊 */filt…

如何用12306的积分买火车票

积分买的票是不允许退票的&#xff0c;所以最好自己买票的时候用。 积分获取 是根据价格*5&#xff0c;比如我买的是100元的票就可以获得500积分。

前端学习——Vue (Day8)

Vue3 create-vue搭建Vue3项目 注意要使用nodejs16.0版本以上&#xff0c;windows升级node可以西安使用where node查看本地node位置&#xff0c;然后到官网下载msi文件&#xff0c;在本地路径下安装即可 安装完可以使用node -v检查版本信息 项目目录和关键文件 组合式API - s…

Bean的加载方式

目录 1. 基于XML配置文件 2. 基于XML注解方式声明bean 自定义bean 第三方bean 3.注解方式声明配置类 扩展1&#xff0c;FactoryBean 扩展2,加载配置类并加载配置文件&#xff08;系统迁移) 扩展3&#xff0c;proxyBeanMethodstrue的使用 4. 使用Import注解导入要注入的bean…

【Liux下6818开发板(ARM)】触摸屏

(꒪ꇴ꒪ ),hello我是祐言博客主页&#xff1a;C语言基础,Linux基础,软件配置领域博主&#x1f30d;快上&#x1f698;&#xff0c;一起学习&#xff01;送给读者的一句鸡汤&#x1f914;&#xff1a;集中起来的意志可以击穿顽石!作者水平很有限&#xff0c;如果发现错误&#x…

怎么通过通过 p 名称空间配置 bean以及怎么去引用/注入其它 bean 对象--ref和怎么去引用/注入内部 bean 对象-内部 bean 对象

&#x1f600;前言 本章是spring基于XML 配置bean系类中第2篇讲解怎么通过通过 p 名称空间配置 bean以及怎么去引用/注入其它 bean 对象–ref和怎么去引用/注入内部 bean 对象 &#x1f3e0;个人主页&#xff1a;尘觉主页 &#x1f9d1;个人简介&#xff1a;大家好&#xff0…

小白三步即可设置企业在线帮助中心?

设置企业在线帮助中心是提升客户服务质量和用户体验的重要举措。以下将介绍三个简单的步骤&#xff0c;帮助企业建立一个高效的在线帮助中心。 第一步&#xff1a;规划与设计 在设置企业在线帮助中心之前&#xff0c;需要进行一定的规划和设计工作&#xff0c;确保帮助中心能够…

MPAndroidChart学习及问题处理

1.添加依赖 项目目录->app->build.gradle dependencies {implementation com.github.PhilJay:MPAndroidChart:v3.0.3 }项目目录->app->setting.gradle dependencyResolutionManagement {repositories {maven { url https://jitpack.io }} }高版本的gradle添加依…

解决路由缓存问题

产生原因 路由只有参数发生变化时 会复用组件实例 解决 1.选择key 简单粗暴 2.选择beforeRouteUpdate钩子函数

【javaSE】 面向对象程序三大特性之继承

目录 为什么需要继承 继承的概念 继承的语法 注意事项 父类成员访问 子类中访问父类的成员变量 子类和父类不存在同名成员变量 子类和父类成员变量同名 访问原则 子类中访问父类的成员方法 成员方法名字不同 总结&#xff1a; 成员方法名字相同 总结&#xff1a; …

spider-flow可视化爬虫界面从入门到放弃

目录 下载编译部署官网地址编译部署启动 简单使用输出文件方式可以正常执行的任务 自定义任务获取小说名 总结 下载编译部署 官网地址 修改端口、数据库、存放地址、执行文件等配置&#xff08;前后端不分离&#xff0c;配置文件端口即页面登录端口&#xff09; spider-flow-w…

Vite+Vue3 开发UI组件库并发布到npm

一直对开源UI组件库比较感兴趣&#xff0c;摸索着开发了一套&#xff0c;虽然还只是开始&#xff0c;但是从搭建到发布这套流程基本弄明白了&#xff0c;现在分享给大家&#xff0c;希望对同样感兴趣的同学有所帮助。 目前我的这套名为hasaki-ui的组件库仅有两个组件&#xff0…

Meta AI研究团队新AI模型: Llama 2 大语言模型

Llama是Facebook Research团队开发的基础语言模型集&#xff0c;旨在提供广泛的语言理解能力。它基于转换器架构&#xff0c;参数范围从7B到65B。通过使用Llama模型&#xff0c;研究人员和开发人员可以构建更先进的自然语言处理系统。您可以在GitHub上找到相关的代码和资源&…

JIT 与 C#热更

JIT与AOT 一般程序运行有两种方式&#xff0c;静态编译与动态编译。 AOT: Ahead Of Time,预先&#xff08;静态&#xff09;编译 静态编译的程序&#xff0c;需要在执行之前全部翻译为机器码&#xff0c;运行前会使得程序安装时间相对较长&#xff0c;但程序运行的时候&#…

TDengine时区设置

一般来说&#xff0c;时序数据就是带有时间序列属性的数据。在处理时序数据时&#xff0c;TDengine有着自己独特的方式。但是如果没有正确理解TDengine在写入和查询上的行为&#xff0c;极可能会因为配置了错误的时区&#xff08;timezone&#xff09;&#xff0c;而导致写入和…

《怎样顺利通过答辩:论文答辩的策略与技巧》

最近在阅读《怎样顺利通过答辩这本书》&#xff0c;记录一下阅读获取的关键信息和心得。 目录 第一章 答辩是什么 在答辩前你需要做到以下几件事情&#xff0c;核查清单如下&#xff1a; 答辩根据考生及其研究的质量&#xff0c;服务于不同的目的&#xff1a; 通常意义上的…

面向对象编程三大特征

1、基本介绍 面向对象编程有三大特征&#xff1a;封装、继承和多态。 1.1封装介绍 1.2封装的理解和好处 1.3封装的实现步骤 (三步) 2、面向对象编程-继承 2.1为什么需要继承 2.2继承基本介绍和示意图 继承可以解决代码复用,让我们的编程更加靠近人类思维.当多个类存在相同的…

rtabmap 主从机 rviz 订阅 /rtabmap/mapData 时报错

在实体小车上跑rtabmap算法&#xff0c;在rviz上订阅 /rtabmap/mapData 话题时不显示建图信息并且报错&#xff1a; [ERROR] [xxxxxxxx]: Client [/rviz] wants topic /rtabmap/mapData to have datatype/md5sum [rtabmap/mapData/xxxxxxxxxxxxx], but our version has [rtabm…

【腾讯云 Cloud Studio 实战训练营】Redisgo_task 分布式锁实现

文章目录 前言问题场景腾讯云 Cloud Studio Redisgo_task长短类型分布式场景介绍Redisgo_task实现原理SetNx(valueexpire)原子性子协程Done()时间点子协程中的Ticker Redisgo_task唯一外部依赖Redisgo_task Lock结构Redisgo_task架构健壮性设计Redisgo_task可扩展性Redisgo_tas…