keepalived高可用系列~keepalived+mysql
一 简介:建立读写分离模式
二 keepalived相关配置
vrrp_instance VI_1 {
state MASTER // 可修改
interface eth0
virtual_router_id //两边必须一样
priority 100 //主比从高
advert_int 1
authentication {
auth_type PASS
auth_pass 123456
}
virtual_ipaddress {
VIP/24
}
}
virtual_server VIP 3306 {
delay_loop 10
lb_kind DR
nat_mask 255.255.255.0
protocol TCP
real_server REL-IP 3306 {
weight 1
TCP_CHECK {
connect_port 3306
connect_timeout 10
nb_get_retry 3
delay_before_retry 5
}
MISC_CHECK {
misc_path "/etc/keepalived/check_mysql.sh"//检测脚本
misc_dynamic
}
}
三 mysql监控脚本
实现功能 1 检测mysql down+slave stop
#!/bin/sh
function sql_sqlthread()
{
STATUS=`/usr/local/mysql/bin/mysql -S /tmp/mysql.sock -uroot -ppassword -e "show slave status\G"| grep Running`
IO_env=`echo $STATUS | grep IO | awk -F " " '{print $2}'`
SQL_env=`echo $STATUS | grep IO | awk -F " " '{print $4}'`
if [ "$IO_env" == "No" ] || [ "$SQL_env" == "No" ];then
/etc/init.d/keepalived stop
exit 1;
else
echo "nihao";
fi
}
function mysql_test()
{
STATUS=`/usr/local/mysql/bin/mysqladmin -ppassword -S /tmp/mysql.sock ping | awk '{print $3}'`
if [ "$STATUS" == "alive" ];then
echo "nihao"
sql_sqlthread
else
/etc/init.d/keepalived stop
exit 1;
fi
}
mysql_test
四 进行测试
五 总结
架构优势
1 节省机器,直接在从库进行高可用读,当MHA进行切换到新主后或者复制进程发生错误时,进行切换
2 采用中间层lvs+keepalived 后端负载mysql从库虽然可以实现负载均衡,但是有一个问题,DR模式需要同一网段,如果数据库机器都在不同网段,那么所需要的lvs专门机器会越来越多
3 采用中间件问题会有2个问题 1 性能损耗 2中间件稳定性
架构缺点
1 只能单台从库读,不能实现负载均衡 原因有几点 1 另一台从库为研发服务和做一些备份工作 2 当MHA切换时 不能把读的压力给新主
2 在从库都发生周期性延迟后不能将读转向主库,但是很遗憾,这种的工作基本只能靠中间件这样的完成,所以我们的读写分离业务目标是可以忍受延迟的业务
keepalived高可用系列~keepalived+mysql的更多相关文章
- keepalived高可用系列~ keepalived+proxysql
一 简介:介绍下高可用通用的方案 二 目的:一个中间件提供服务,故障后,另一个中间件提供服务 三 手段: 应用keepalived的vrrp_scripts服务 四 具体配置 global_defs ...
- keepalived高可用系列~通用基础
简介:今天咱们来聊聊keepalived一 keepalived 架构 1 标准架构: keepalived+lvs/haproxy+后端 real server(mysql从库,nginx.myc ...
- MySQL的keepalived高可用监控脚本
MySQL的keepalived高可用监控脚本 MySQL(或者其它服务)的keepalived高可用监控脚本 开发脚本需求 :我们知道,keepalive是基于虚拟ip的存活来判断是否抢占maste ...
- 22.LVS+Keepalived 高可用群集
LVS+Keepalived 高可用群集 目录 LVS+Keepalived 高可用群集 keepalived工具介绍 Keepalived实现原理剖析 VRRP(虚拟路由冗余协议) VRRP 相关术 ...
- mysql主主、mysql-proxy读写分离、keepalived高可用完美组合
配置mysql主主复制 服务器A:172.16.100.9 服务器B:172.16.100.10 首先在服务器A和服务器B上各安装好单机版mysql5.7,安装好后,再继续下面的操作. 在服务器A和服 ...
- Oracle Compute云快速搭建MySQL Keepalived高可用架构
最近有个客户在测试Oracle Compute云,他们的应用需要使用MySQL数据库,由于是企业级应用一定要考虑高可用架构,因此有需求要在Oracle Compute云上搭建MySQL高可用集群.客户 ...
- Nginx知多少系列之(十四)Linux下.NET Core项目Nginx+Keepalived高可用(主从模式)
目录 1.前言 2.安装 3.配置文件详解 4.工作原理 5.Linux下托管.NET Core项目 6.Linux下.NET Core项目负载均衡 7.负载均衡策略 8.加权轮询(round rob ...
- MySQL主主模式+Keepalived高可用
今天闲来无事,打算搭建一个MySQL的高可用架构,采用的是MySQL的主主结构,再外加Keepalived,对外统一提供虚IP.先来说说背景吧,现在的项目为了高可用性,都是避免单节点的存在的,比如,我 ...
- centos7.4安装高可用(haproxy+keepalived实现)kubernetes1.6.0集群(开启TLS认证)
目录 目录 前言 集群详情 环境说明 安装前准备 提醒 一.创建TLS证书和秘钥 安装CFSSL 创建 CA (Certificate Authority) 创建 CA 配置文件 创建 CA 证书签名 ...
随机推荐
- plink:ped格式转换为bed格式
命令行如下: plink --file FILENAME --make-bed --out FILENAME 第一个FILENAME的后缀为.ped和.map,生成的第二个FILENAME的后缀为.b ...
- MySQL填充字符串函数 LPAD(str,len,padstr),RPAD(str,len,padstr)
转: MySQL填充字符串函数 LPAD(str,len,padstr),RPAD(str,len,padstr) LPAD(str,len,padstr) 用字符串 padstr对 str进行左边填 ...
- Day16--Python--初识面向对象
今日主要内容一. 面向对象思想 1. 面向过程. 重点在'过程'. 按照事物迭代发展流程. 优点: 简单,流水线式的操作 缺点: 可扩展性差.可维护性差. 2. 面向对象. 对象是属性和动作的集合体. ...
- python之路入门篇
一. Python介绍 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,Guido开始写能够解释Python语言语法的解释器.Python这个名字,来 ...
- POJ 3713 Transferring Sylla (三联通分量)
Transferring Sylla Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 3533 Accepted: 988 ...
- 高级组件——弹出式菜单JPopupMenu
弹出式菜单JPopupMenu,需要用到鼠标事件.MouseListener必须要实现所有接口,MouseAdapter是类,只写你关心的方法,即MouseAdapter实现了MouseListene ...
- qml:基本知识记录
1. property信号处理函数: 在qml中,通过property可以定义属性,这些属性自带信号处理函数,例如: property string szTitle: “hello wor ...
- JDBC-DbUtils
依赖 pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns=" ...
- Selenium模块的使用
Selenium是一个Web的自动化测试工具,最初是为网站自动化测试而开发的,类型像我们玩游戏用的按键精灵,可以按指定的命令自动操作,不同是Selenium 可以直接运行在浏览器上,它支持所有主流的浏 ...
- python js(JavaScript)初识
####################总结############## 引入: 可以在body标签中放入<script type=”text/javascript”></scrip ...