ubuntu mysql双主热备配置_mysql学习:mysql双主热备+lvs+keepalived配置
下面要介绍的是如何通过Keepalived+LVS方式来是实现MySQL的高可用性,利用LVS实现MySQL的读写负载均衡,Keepalived避免节点出现单点故障。
此测试是在博文:mysql+keepalived双主高可用配置 的基础上进行测试的,要先将mysql主主同步环境搭建好,然后进行下面的测试
测试环境
LVS_Master: 192.168.220.72 centos7.2
LVS_Backup: 192.168.220.73 centos7.2
MySQL1 Real Server: 192.168.220.70 centos6.9
MySQL2 Real Server: 192.168.220.71 centos6.9
VIP: 192.168.220.74
采用lvs-dr模式,rr调度算法
防火墙设置:可以设置严格条件(注意多播地址),这里4台机器每台机器设置源ip为其他三台机器的都放行。lvs机器需将客户机的ip放行,允许访问
关于lvs和keepalived相关的介绍,需看前面的博文,此处只列出具体的配置,以及注意的地方
在:192.168.220.72和192.168.220.73机器上面安装好keepalived软件,此处使用rpm包安装,此处使用keepalived可抢占式配置,也可以将其都配置为backup非抢占式配置
[root@rtb-72 /etc/keepalived]#cat keepalived.conf
global_defs {
notification_email {
root@localhost
}
notification_email_from keepalived@localhost
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id lvs-mysql
vrrp_mcast_group4 224.0.100.0
}
vrrp_script chk_down {
script "[[ -f /etc/keepalived/down ]] && exit 1 || exit 0" #down文件在,返回1。不在返回0
interval 1 #1秒钟调用一次,当上面的脚本执行返回1的时候会执行下面的操作
weight -20 #当down文件存在,这个vs的节点的优先级-20,如果这个节点的优先级低于其他的vs主机,
#这个主机就会处于维护模式,ip被其他优先级高的主机夺走。
}
vrrp_instance rtb_mysql {
state MASTER
interface bond0
virtual_router_id 20
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 2345
}
virtual_ipaddress {
192.168.220.74/24 dev bond0
}
track_script {
chk_down
}
}
virtual_server 192.168.220.74 3306 {
delay_loop 3
lb_algo rr
lb_kind DR
protocol TCP
real_server 192.168.220.70 3306 {
weight 1
TCP_CHECK {
connect_timeout 1
nb_get_retry 3
delay_before_retry 1
connect_port 3306
}
}
real_server 192.168.220.71 3306 {
weight 1
TCP_CHECK {
connect_timeout 1
nb_get_retry 3
delay_before_retry 1
connect_port 3306
}
}
}
#启动keepalived
[root@rtb-72 ~]#systemctl restart keepalived
[root@rtb-72 ~]#systemctl is-enabled keepalived
disabled
[root@rtb-72 ~]#systemctl enable keepalived
Created symlink from /etc/systemd/system/multi-user.target.wants/keepalived.service to /usr/lib/systemd/system/keepalived.service.
–
[root@rtb-73 /etc/keepalived]#cat keepalived.conf
global_defs {
notification_email {
root@localhost
}
notification_email_from keepalived@localhost
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id lvs-mysql
vrrp_mcast_group4 224.0.100.0
}
vrrp_script chk_down {
script "[[ -f /etc/keepalived/down ]] && exit 1 || exit 0" #down文件在,返回1。不在返回0
interval 1 #1秒钟调用一次,当上面的脚本执行返回1的时候会执行下面的操作
weight -20 #当down文件存在,这个vs的节点的优先级-20,如果这个节点的优先级低于其他的vs主机,
#这个主机就会处于维护模式,ip被其他优先级高的主机夺走。
}
vrrp_instance rtb_mysql {
state BACKUP
interface bond0
virtual_router_id 20
priority 90
advert_int 1
authentication {
auth_type PASS
auth_pass 2345
}
virtual_ipaddress {
192.168.220.74/24 dev bond0
}
track_script {
chk_down
}
}
virtual_server 192.168.220.74 3306 {
delay_loop 3
lb_algo rr
lb_kind DR
protocol TCP
real_server 192.168.220.70 3306 {
weight 1
TCP_CHECK {
connect_timeout 1
nb_get_retry 3
delay_before_retry 1
connect_port 3306
}
}
real_server 192.168.220.71 3306 {
weight 1
TCP_CHECK {
connect_timeout 1
nb_get_retry 3
delay_before_retry 1
connect_port 3306
}
}
}
#启动keepalived
[root@rtb-73 ~]#systemctl restart keepalived
[root@rtb-73 ~]#systemctl is-enabled keepalived
disabled
[root@rtb-73 ~]#systemctl enable keepalived
Created symlink from /etc/systemd/system/multi-user.target.wants/keepalived.service to /usr/lib/systemd/system/keepalived.service.
下面是后端rs配置文件,两个rs配置相同
[root@RTB-70 /data/lvs_dr]#cat lvs_dr_slave.sh
#!/bin/bash
#
vip=192.168.220.74
mask='255.255.255.255'
gw_ip="192.168.220.1"
case $1 in
start)
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
ifconfig lo:0 $vip netmask $mask broadcast $vip up
route add -host $vip dev lo:0 #vip必须从lo网卡进来,从lo网卡出去
route del default
route add default gw $gw_ip
;;
stop)
ifconfig lo:0 down
echo 0 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 0 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 0 > /proc/sys/net/ipv4/conf/all/arp_announce
echo 0 > /proc/sys/net/ipv4/conf/lo/arp_announce
;;
*)
echo "Usage $(basename $0) start|stop"
exit 1
;;
esac
先启动后端的rs服务,lo网卡配置上vip
[root@RTB-70 /data/lvs_dr]#echo "bash /data/lvs_dr/lvs_dr_slave.sh" >> /etc/rc.d/rc.local #加入开机启动
[root@RTB-70 /data/lvs_dr]#bash lvs_dr_slave.sh start
[root@RTB-70 /data/lvs_dr]#ifconfig
eth0 Link encap:Ethernet HWaddr 00:50:56:A9:FE:EC
inet addr:192.168.220.70 Bcast:192.168.220.255 Mask:255.255.255.0
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
lo:0 Link encap:Local Loopback
inet addr:192.168.220.74 Mask:255.255.255.255
UP LOOPBACK RUNNING MTU:65536 Metric:1
[root@RTB-71 /data/lvs_dr]#echo "bash /data/lvs_dr/lvs_dr_slave.sh" >> /etc/rc.d/rc.local
[root@RTB-71 /data/lvs_dr]#bash lvs_dr_slave.sh start
[root@RTB-71 /data/lvs_dr]#ifconfig
eth0 Link encap:Ethernet HWaddr 00:50:56:A9:4A:AE
inet addr:192.168.220.71 Bcast:192.168.220.255 Mask:255.255.255.0
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
lo:0 Link encap:Local Loopback
inet addr:192.168.220.74 Mask:255.255.255.255
UP LOOPBACK RUNNING MTU:65536 Metric:1
经过测试,调度机宕机一台,可以正常访问,可以正常切换
经过测试,后端mysql宕机一台,可以正常访问,不影响业务
–
关于keepalived的实时漂移,可以通过/var/log/message文件实时查看过程,这里不再赘述,可看前面博文
lvs的调度以及连接数可以通过下面的命令查看
[root@rtb-72 ~]#ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.220.74:3306 rr
-> 192.168.220.70:3306 Route 1 0 0
-> 192.168.220.71:3306 Route 1 1 0
如果其他网段需要连接此网段的lvs上面的mysql,需要授权其他网段可以访问。
如果其他网段访问此网段lvs上的mysql,linux主机作为网关,注意设置内核参数,不然ip和mac地址对不上的包会被丢弃
[root@localhost ~]#echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter
[root@localhost ~]#echo 0 > /proc/sys/net/ipv4/conf/default/rp_filter
[root@localhost ~]#echo 0 > /proc/sys/net/ipv4/conf/eth0/rp_filter
[root@localhost ~]#echo 0 > /proc/sys/net/ipv4/conf/eth1/rp_filter
[root@localhost ~]#echo 0 > /proc/sys/net/ipv4/conf/lo/rp_filter
#0 就是对进来的包完全不作检查,这样有被dos 攻击的风险。
#1 就是严格检查,只要不是这个interface 的包,就不返回。
#2 就是不太严格,只要本机配置了这个ip ,还是可以返回的。
#对于lvs 来说,用2 也是可以的。
如果其他网段主机访问此网段的lvs上的mysql,默认网段不能出网,可能涉及到默认网关问题
可在keepalived配置文件中调用脚本来发送邮件通知或者处理其他事情
注意lvs以每个会话作为单独的调度,一个终端进入mysql后,在这个终端会话会全部调度到其中一台机器,所有操作都会在这台机器完成,所有插入语句id都是奇数。当又有一个终端会话的时候,全部调度到另外一台机器,所有操作都在这台机器完成,所有插入语句id都是偶数
当某台机器有vip的时候,不能从这台机器连接vip
未涉及到的地方,可查看前面博文或参考资料
–
–
–
ubuntu mysql双主热备配置_mysql学习:mysql双主热备+lvs+keepalived配置相关推荐
- mysql像plsql一样删除提交_MySQL学习-MySQL内置功能_事务操作
1.事务详解 1.1 事务的概念 MySQL 事务主要用于处理操作量大,复杂度高的数据.比如说,在人员管理系统中,你删除一个人员,你即需要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等 ...
- mysql64位机安装和配置_MySQL学习第二天 安装和配置mysql winx64
一.安装方式 MySQL安装文件分为两种,一种是MSI格式的,一种是ZIP格式的.下面来看看这两种方式: MSI格式的可以直接点击安装,按照它给出的安装提示进行安装,Windows操作系统下一般MyS ...
- mysql 报表统计sql使用实例_mysql 案例~mysql元数据的sql统计
一 简介:今天我们来收集下提取元数据的sql 二 前沿: information_schema 引擎 memory 元数据收集表 三 sql语句: 1#没有使用索引的表统计 SELECT t.TAB ...
- mysql cluster rpm包的作用_MySQL之——MySQL Cluster集群搭建详解(基于RPM安装包)
1.下载MySQL-cluster 7.3.7 http://dev.mysql.com/downloads/cluster/ 2.环境清理及安装 1)清理CentOS6.5自带的mysql服务,其中 ...
- mysql数据库管理系统的配置文件是_MySQL学习笔记_1_MySQL数据库管理系统概述
1. MySQL架构 C/S: client / server架构 MySQL DBMS(Data Bank Management System): 数据库管理系统 客户端 服务器 ---> ...
- mysql5.7.19解压教程_Mysql学习mysql5.7.19 winx64解压缩版安装配置教程
<MysqL学习MysqL5.7.19 winx64解压缩版安装配置教程>要点: 本文介绍了MysqL学习MysqL5.7.19 winx64解压缩版安装配置教程,希望对您有用.如果有疑问 ...
- mysql里面有没有map类型_MySQL学习(二) 数据类型
MySQL支持多种列类型:数值类型.日期/时间类型和字符串(字符)类型. 数值类型 数值类型又分为整数型与小数型 整数型 下面的表显示了需要的每个整数类型的存储和范围 创建一张表 mysql> ...
- mysql反删除恢复软件下载_MySQL Recovery(MySQL恢复软件)下载 v4.1官方版-下载啦
MySQL Recovery是一个强大好用的mysql数据库修复工具,与其他类似的程序相比,该软件具有更多更好的恢复功能,帮助用户更好地恢复MySQL数据,恢复的数据库有多种导出模式,可以同时打开多个 ...
- sql要学mysql还是php,MySQL_与MSSQL对比学习MYSQL的心得(一)--基本语法,这一期主要是学习MYSQL的基本 - phpStudy...
与MSSQL对比学习MYSQL的心得(一)--基本语法 这一期主要是学习MYSQL的基本语法,陆续还会有续期的文章,敬请期待 语法的差异 我这里主要说语法的不同 1.默认约束 区别:mysql里面DE ...
- LVS/keepalived配置
LVS/DR + keepalived配置 注意:前面虽然我们已经配置过一些操作,但是下面我们使用keepaliave操作和之前的操作是有些冲突的,所以若是之前配置过DR,请首先做如下操作:dr上执行 ...
最新文章
- arcgis合并tif影像_微图影像地图导出拼接大图的参数说明
- 让自己的开源项目支持CocoaPods集成
- android微信支付的实现
- Resource 资源 ---Day09 2014-06-13
- 微信小程序中使用圆形倒计时实例
- 我记录网站综合系统 -- 技术原理解析[0:简介(代序) 1.7Beta源代码下载开始]...
- Android之解决PC端上传http表单格式文件手机解析文件名乱码问题和PC浏览器下载文件的文件名显示乱码问题
- bmf mysql_bmf 的动态 - SegmentFault 思否
- L3-020 至多删三个字符 (30 分) DP
- 【Java从0到架构师】MyBatis - 查询
- PAT 1103 Integer Factorization[难]
- Netty 整合 MessagePack 序列化框架 + LengthFieldBasedFrameDecoder 自定义解码器
- 一只喵的西行记-12 灯火阑珊处那娃在哭
- 使用mac电脑生成 icns图标
- 【YOLOv3原文+翻译】YOLOv3:An Incremental Improvement
- ACM程序设计大赛概况
- 计算机教案课后记怎么写,教案后记怎么写
- 《数据结构》实验报告六:图的表示与遍历
- 初探USB3.0极简方案FT601Q芯片方案
- 硬盘中单击auto病毒的清理
热门文章
- 奥维中如何关闭gcj02坐标_QGIS入门知识:啥是坐标系
- kettle 下载地址
- 关于Bitmapimage图片保存(png格式)
- 内蒙古工业大学计算机好调剂吗,内蒙古工业大学信息工程学院2017硕士研究生第三次调剂公告...
- 打开gedit_使用 gedit 文本编辑器优化你的 GNOME 体验 | Linux 中国
- Hibernate方法save、update、merge、saveOrUpdate及get和load的区别
- 简单高效的短链接生成服务C#实现
- IIS 配置 PHP 环境搭建:web 文件管理器
- 整理发布一些关于VMware vSphere的文档
- mybatis-generator逆向工程生成boolean字段解决办法