文档章节

Keepalived-mysql高可用架构(主主热备)

阿dai
 阿dai
发布于 2017/09/05 10:18
字数 1186
阅读 58
收藏 1
点赞 0
评论 0

Keepalived-mysql高可用架构(主主热备)

开始搭建该架构前已安装好mysql且主主热备已搭建完成,搭建方法详见:https://my.oschina.net/u/3497124/blog/1527854

master:192.168.8.131
backup:192.168.8.132
VIP:192.168.8.100

安装Keepalived工具

分别在master和backup服务器上安装Keepalived工具:

[root@adailinux ~]# yum install -y keepalived

开始配置

配置master服务器:

配置Keepalived:

[root@adailinux ~]# vim /etc/keepalived/keepalived.conf
! Configuration File forkeepalived
global_defs {
notification_email {
adai@test.com
 }
notification_email_from  root@test.com
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id MYSQL_HA      #标识,双主相同
 }
vrrp_instance VI_1 {
 state BACKUP           #两台都设置BACKUP
 interface ens33         
 virtual_router_id 51       #主备相同
 priority 100           #优先级,backup设置90
 advert_int 1           
 nopreempt             #不主动抢占资源,只在master这台优先级高的设置,backup不设置
 authentication {      
 auth_type PASS 
 auth_pass 123456
 }
 virtual_ipaddress {
 192.168.8.100
 }
}
virtual_server 192.168.8.100 3306 {
 delay_loop 2
 #lb_algo rr              #LVS算法,用不到,我们就关闭了
 #lb_kind DR              #LVS模式,如果不关闭,备用服务器不能通过VIP连接主MySQL
 persistence_timeout 50  #同一IP的连接60秒内被分配到同一台真实服务器
 protocol TCP
 }
 real_server 192.168.8.131 3306 {   #检测本地mysql,backup也要写检测本地mysql
 weight 3
 notify_down /usr/local/sbin/keepalived/mysql.sh    #当mysq服down时,执行此脚本,杀死keepalived实现切换
 TCP_CHECK { 
 connect_timeout 3    #连接超时
nb_get_retry 3       #重试次数
 delay_before_retry 3 #重试间隔时间
  }
} 

创建mysql.sh脚本:  
[root@adailinux ~]# mkdir /usr/local/sbin/keepalived
[root@adailinux ~]# vim /usr/local/sbin/keepalived/mysql.sh
#!/bin/bash
pkill keepalived

更改文件权限:
[root@adailinux ~]# chmod  755 /usr/local/sbin/keepalived/mysql.sh

启动Keepalived:
[root@adailinux ~]# systemctl start keepalived

配置backup服务器:

配置Keepalived:

! Configuration File forkeepalived
global_defs {
notification_email {
adai@test.com
 }
notification_email_from  root@test.com
smtp_server 127.0.0.1
smtp_connect_timeout 30 
router_id MYSQL_HA      #标识,双主相同
 }
vrrp_instance VI_1 {    
 state BACKUP           #两台都设置BACKUP
 interface ens33             
 virtual_router_id 51       #主备相同
 priority 90           #优先级,backup设置90
 advert_int 1           
# nopreempt             #不主动抢占资源,只在master这台优先级高的设置,backup不设置
 authentication {
 auth_type PASS 
 auth_pass 123456
 }
 virtual_ipaddress {
 192.168.8.100
 }
}
virtual_server 192.168.8.100 3306 {
 delay_loop 2
 #lb_algo rr              #LVS算法,用不到,我们就关闭了
 #lb_kind DR              #LVS模式,如果不关闭,备用服务器不能通过VIP连接主MySQL
 persistence_timeout 50  #同一IP的连接60秒内被分配到同一台真实服务器
 protocol TCP
 }
 real_server 192.168.8.132 3306 {   #检测本地mysql,backup也要写检测本地mysql
 weight 3
 notify_down /usr/local/sbin/keepalived/mysql.sh    #当mysq服down时,执行此脚本,杀死keepalived实
现切换
 TCP_CHECK {
 connect_timeout 3    #连接超时
nb_get_retry 3       #重试次数 
 delay_before_retry 3 #重试间隔时间
  }
}

创建mysql.sh文件:
[root@adailinux ~]# mkdir /usr/local/sbin/keepalived
[root@adailinux ~]# vim /usr/local/sbin/keepalived/mysql.sh
#!/bin/bash
pkill keepalived

更改权限:
[root@adailinux ~]# chmod 755 /usr/local/sbin/keepalived/mysql.sh

启动Keepalived:  
[root@adailinux ~]# systemctl start keepalived

说明: backup服务器与master服务器Keepalived配置文件的区别:只修改priority为90、nopreempt不设置、real_server设置本地IP。

测试

如果服务器宕机,Keepalived服务肯定回停止工作,所以在此通过开/关Keepalived来模拟宕机状态:

宕机前:

查看master服务器IP状态:
[root@adailinux ~]# ip add
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:8a:1b:5c brd ff:ff:ff:ff:ff:ff
    inet 192.168.8.131/24 brd 192.168.8.255 scope global ens33
       valid_lft forever preferred_lft forever
    inet 192.168.8.100/32 scope global ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::65d2:adc:20d3:8c74/64 scope link 
       valid_lft forever preferred_lft forever

查看backup服务器IP状态:  
[root@adailinux ~]# ip add
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:af:b7:9f brd ff:ff:ff:ff:ff:ff
    inet 192.168.8.132/24 brd 192.168.8.255 scope global ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::76c1:b882:4f26:608c/64 scope link 
       valid_lft forever preferred_lft forever

说明: 此时VIP在master服务器上,说明有master对外提供服务。

master服务器宕机后:

[root@adailinux ~]# systemctl stop keepalived

查看master服务器IP:
[root@adailinux ~]# ip add
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:8a:1b:5c brd ff:ff:ff:ff:ff:ff
    inet 192.168.8.131/24 brd 192.168.8.255 scope global ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::65d2:adc:20d3:8c74/64 scope link 
       valid_lft forever preferred_lft forever

查看backup服务器IP:
[root@adailinux ~]# ip add
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:af:b7:9f brd ff:ff:ff:ff:ff:ff
    inet 192.168.8.132/24 brd 192.168.8.255 scope global ens33
       valid_lft forever preferred_lft forever
    inet 192.168.8.100/32 scope global ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::76c1:b882:4f26:608c/64 scope link 
       valid_lft forever preferred_lft forever

即,此时有backup服务器接管master服务器对外提供服务。

恢复master服务器Keepalived服务:

[root@adailinux ~]# systemctl start keepalived
[root@adailinux ~]# ip add
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:8a:1b:5c brd ff:ff:ff:ff:ff:ff
    inet 192.168.8.131/24 brd 192.168.8.255 scope global ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::65d2:adc:20d3:8c74/64 scope link 
       valid_lft forever preferred_lft forever

此时VIP并没有回到master服务器上,原因是master在进行Keepalived的时候加入了参数nopreemt。

以上服务器切换过程也可以通过查看日志/var/logs/messages来了解。

参考:
MySQL高可用性之Keepalived+Mysql:http://lizhenliang.blog.51cto.com/7876557/1362313

© 著作权归作者所有

共有 人打赏支持
阿dai
粉丝 57
博文 177
码字总数 253317
作品 0
昌平
运维
postgresql 高可用集群搭建资料

多种方案,含zookeeper方案 :PostgreSQL 流行 HA 方案 1. 自己实现高可用集群 有实例 有讲解!postgresql 高可用集群搭建 :PostgreSQLHAwithprimarystandby_2vip 2. pgpool 实现高可用集群...

刘阳0292 ⋅ 2017/10/12 ⋅ 0

MySQL共享存储主备模式利用Keepalived实现双机高可用

简单介绍 先简单说下MySQL主从复制与keepalived模式和MySQL共享存储与Keepalived模式 MySQL共享存储主备模式不同于MySQL主主复制模式,MySQL主主是利用MySQL自带的replication复制技术实现两...

HMLinux ⋅ 2017/01/22 ⋅ 0

企业中MySQL高可用集群架构三部曲之MM+keepalived

各位老铁们,老张与大家又见面了。看到各位在博客里面给我的留言和访问量的情况,我很是欣慰,也谢谢大家对我的认可。我写这些博客,就是想把自己对于MySQL数据库的一些看法和自己平时的实战...

superZS ⋅ 2017/08/03 ⋅ 0

Oracle HA双机主备基于共享存储模式并利用keepalived管理实现高可用

HA概述 HA(High Available)即由两台计算机组成并对外提供一组相同的服务,也叫做一主一备模式。正常情况下由主服务器提供服务,备服务器处于待机备用,备机可以随时接替主服务器的工作。也就...

HMLinux ⋅ 04/15 ⋅ 0

Keepalived + nginx实现高可用性和负载均衡

前几天使用了Heartbeat作为高可用服务架构的解决方案,今天有试验了一种全新的解决方案,即采用Keepalived来实现这个功能。 Keepalived 是一种高性能的服务器高可用或热备解决方案,Keepali...

tidezyc ⋅ 2013/06/19 ⋅ 21

使用keepalived打造redis双机热备

redis是非常实用的优秀nosql开源产品,在高并发的服务器环境中,可以作为缓存和队列使用.美中不足的是,到现在为止,redis并没有推出自己的集群方案,对一个完善的生产环境,负载均衡,高可用...

凯文加内特 ⋅ 2015/10/10 ⋅ 0

mysql-双主+keepalived高可用架构

在生产环境中,任何架构的建立,必须拥有防止单点故障的存在. mysql可以拥有主从,或者双主,加上keepalived的VRRP热备切换功能可以实现 还有其他的,MHA,PXC,MMM,heartbeat+DRBD等 ------------...

动力在于作 ⋅ 2017/03/31 ⋅ 0

keepalived + mysql 双主多从

keepalived 的热备可以看文档:keepalived的配置使用 mysql 的主从 的文档讲解:mysql 主从复制 keepalived的双主,就是主从的一种, 大家看一眼就懂了,为了省力, 下面的双主配置我直接网上...

LANTIANFEIYING ⋅ 2016/07/29 ⋅ 0

keepalived+nginx+tomcat的简单部署

keepalived+nginx Keepalived是一个基于VRRP协议来实现的服务高可用方案,也是一种高性能的服务器高可用或热备解决方案,可以利用其来避免IP单点故障,类似的工具还有heartbeat、corosync、p...

听雨x ⋅ 2017/09/06 ⋅ 0

LVS+Keepalived高可用群集

LVS+Keepalived高可用群集 目录 第一部分 环境准备 第二部分 使用Keepalived搭建双机热备 第三部分 配置Web节点服务器 第四部分 测试LVS+Keepalived高可用群集 第一部分 环境准备 一:调度器...

leeleeming ⋅ 05/11 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

R计算IV

参考文章 #读取文件 rawdata = read.csv("/path/to/csv/file",header=T) colnames(rawdata)[18] <- "y" //重命名因变量y #数据分区 训练集测试集 trainIdx <- sample(nrow(rawdata), round(......

火力全開 ⋅ 9分钟前 ⋅ 0

SQL老司机,在SQL中计算 array & map & json数据

摘要: 场景 通常,我们处理数据,一列数据类型要么是字符串,要么是数字,这些都是primitive类型的数据。 场景 通常,我们处理数据,一列数据类型要么是字符串,要么是数字,这些都是primi...

阿里云云栖社区 ⋅ 9分钟前 ⋅ 0

SQL老司机,在SQL中计算 array & map & json数据

摘要: 场景 通常,我们处理数据,一列数据类型要么是字符串,要么是数字,这些都是primitive类型的数据。 场景 通常,我们处理数据,一列数据类型要么是字符串,要么是数字,这些都是primi...

猫耳m ⋅ 19分钟前 ⋅ 0

关于ireport自定义变量类型为list的时候

自己摸石头过河,我真的应该去趟市中心图书馆,借本真正靠谱的教材 网上的东西,只有0.01%是有用的,还有0.99%是垃圾,剩下的99%是垃圾的复制品。。 哎!~ 问题是这样的,报表带sql,从db中获...

炑炑milina ⋅ 20分钟前 ⋅ 0

Spring mvc ContextLoaderListener 原理解析

对于熟悉Spring MVC功能,首先应从web.xml 开始,在web.xml 文件中我们需要配置一个监听器 ContextLoaderListener,如下。 <!-- 加载spring上下文信息,最主要的功能是解析applicationContex...

轨迹_ ⋅ 21分钟前 ⋅ 0

阿里云发布企业数字化及上云外包平台服务:阿里云众包平台

摘要: 阿里云正式发布旗下众包平台业务(网址:https://zhongbao.aliyun.com/),支持包括:网站定制开发,APP、电商系统等软件开发,商标、商品LOGO、VI、产品包装设计、营销推广、大数据人...

阿里云官方博客 ⋅ 22分钟前 ⋅ 0

Redis安装异常解决办法

官网地址:http://redis.io/ 官网下载地址:http://redis.io/download 1. 下载Redis源码(tar.gz),并上传到Linux 2. 解压缩包:tar zxvf redis-2.8.17.tar.gz 3. 进入解压缩后的文件夹:c...

slagga ⋅ 27分钟前 ⋅ 0

006. 深入JVM学习—年轻代

1. 年轻代图片 年轻代(Young)属于JVM堆内存空间的一个组成部分 所有使用关键字new新实例化的对象一定会在伊甸园区进行保存,而对于存活区保存的一定是已经在伊甸园区存在一段时间并且经过了...

影狼 ⋅ 28分钟前 ⋅ 0

如何成为一个合格的程序员

偶尔的,我会被人问道:如何成为一名优秀的程序员,更或者,如何成为一名程序员。每次人们问起,我都力图给出不同的答案。因此,我的答案是各种各样的。下面就是我认为的成为一名优秀的程序员...

柳猫 ⋅ 28分钟前 ⋅ 0

cups error_log日志暴增

日志内容 File \"/usr/lib/cups/notifier/dbus\" has insecure permissions 解决(未验证适用范围) sudo service cups stopsudo rm /etc/cups/subscriptions.conf*sudo rm -r /var/cac......

一介码夫_Hum ⋅ 32分钟前 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部