linux keepalived+LVS 实现mysql 从库负载均衡
前情提要:
参考链接:
http://www.osyunwei.com/archives/7464.html
ps:以上为本次操作的主要参考资料,非常感谢此文作者的贡献,我的随笔的主要目的是
说明在使用以上资料参考部署的过程中,遇到的一些问题以及补充。
目的:
1、解决web读写分离功能缺陷,实现数据库从库负载均衡与高可用
2、简化web与主要功能模块的配置,使用vip接管
实验环境:
操作系统:redhat6.4 64位 #目前主流的版本应该在6.4以上,主要是硬件要求
DB版本:mysql5.6 #这个没什么可说的,选择版本主要看应用需求
lvs主机:192.168.1.180 #部署lvs+keepalived,用于管理VIP,并分发数据库读写请求
从库IP:192.168.20.182、192.168.20.183 #mysql_slave 一主两从
测试机:192.168.20.181 #用于测试整套架构的功能
VIP:192.168.20.253 #虚拟IP,用于请求的分发
一、环境安装配置
数据库mysql5.6安装(20.182、20.183)
rpm -ivh
MySQL-server-5.6.16-1.el6.x86_64.rpm
MySQL-devel-5.6.16-1.el6.x86_64.rpm
MySQL-shared-5.6.16-1.el6.x86_64.rpm
MySQL-client-5.6.16-1.el6.x86_64.rpm
MySQL-shared-compat-5.6.16-1.el6.x86_64.rpm
mysql5.6的安全性有所提高,安装完成后会有如下提示:
You will find that password in '/root/.mysql_secret'
cat /root/.mysql_secret
# The random password set for the root user at Mon Aug 31 08:28:44 2015 (local time): 06tIwUud
通过密码进入mysql之后:通过:SET PASSWORD = password('xxxxxx'); 重置密码即可。 其他跟正常的mysql安装相同。
数据库主从搭建(略)
恩......不是我偷懒,主要是网上这块的内容太多了,一抓一大把,没有什么可写的价值,之后如果有兴趣可能单开一个随笔,这就不写了。
大家随意的搜一下。
网络环境配置(所有机器)
由于我的生产环境有单独的思科防火墙,所以我所有的服务器的系统防火墙都是关闭的,包括selinux,不然太麻烦。
有些莫名其妙的报错可能都是iptable和selinux引起的,为了方便一般默认关闭
1、关闭selinux:
修改/etc/selinux/config文件中的SELINUX="" 为 disabled ,然后重启。
如果不想重启系统,使用命令setenforce 0
2、关闭iptables:
二、LVS+keepalive主机搭建(192.168.1.180)
1、安装LVS
2、安装keepalived
下载keeplived:http://www.keepalived.org/download.html
cd /usr/local/src
wget http://www.keepalived.org/software/keepalived-1.2.19.tar.gz
ps:由于安装时间的不同,我新的生产环境是centos6.5 而测试环境是redhat6.4,并且我的生产之前一直都是redhat系列,一直使用的都是手动rpm以及编译安装,虽然很苦逼,但是着实锻炼动手能力以及一些说不清道不明的对系统的理解能力,并且yum本身并不是非常的安全,没有手动安装那么放心(俺的感受),我的建议是如果非用不可的话,安装可以用yum,但是卸载需要手动,这是我的底线。
tar -zxvf keepalived-1.2.19.tar.gz
cd keepalived-1.2.19
./configure #配置,必须看到以下提示,说明配置正确,才能继续安装
Use IPVS Framework : Yes
IPVS sync daemon support : Yes
Use VRRP Framework : Yes
make #编辑
make install #安装
cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/
mkdir /etc/keepalived
cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/
cp /usr/local/sbin/keepalived /usr/sbin/
cp /usr/local/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/
chmod +x /etc/rc.d/init.d/keepalived #添加执行权限
chkconfig keepalived on #设置开机启动
service keepalived start #启动
service keepalived stop #关闭
service keepalived restart #重启
ps:以上直接辅助的原作者的命令,主要是没什么可写的,按照命令操作即可。
ps2:参考资料在这会安装perl的相关环境,因为他的从库状态监测脚本需要用到,但是我并没有在这添加,主要考虑到如下的情况
1、我有单独的数据库从库状态监测告警脚本(见上两篇原创随笔)
2、keeplived本身有对3306端口的检测,如果数据库出现异常可以发现并处理。
3、我希望即便从库同步出现问题,也能够继续提供服务,因为线上环境需要的是服务畅通,短暂不同步的代价我是能够接受的。
3、配置keepalived
cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf-bak
>/etc/keepalived/keepalived.conf #清空配置文件
vi /etc/keepalived/keepalived.conf #以下内容直接全部粘贴即可
三、数据库从库配置(192.168.20.182、183)
1、绑定LVS虚拟服务器(VIP):192.168.20.253到lo:0
#编辑增加如下代码:
chmod +x /etc/rc.d/init.d/realserver #添加脚本执行权限
chkconfig realserver on #添加开机启动
/etc/rc.d/init.d/realserver start #开启,参数stop为关闭
2、配置允许ARP转发
net.ipv4.conf.all.arp_ignore= 1
四、负载均衡功能测试
1、LVS主机(20.180)执行:
service keepalived start #启动keepalived
ipvsadm -Ln #检查lvs运行状态
2、数据库从库(20.182、20.183)
/etc/rc.d/init.d/realserver start
VIP已经绑定到lo:0
3、负载均衡功能测试
20.182:执行service mysql stop
在20.180(LVS主机)上执行
ipvsadm -Ln #检查lvs运行状态
可以看到20.182服务器已经被去掉。同理再次启动之后此服务器会被再次加入服务。
4、VIP数据库功能测试
在测试服务器(1.181)上执行数据库连接命令
mysql -uroot -pXXXXXX -h192.168.20.253
或者使用telnet 192.168.20.253 3306 命令去尝试连接,如果提示输入密码,说明连接正常。
FAQ:
1、能够ping通,但是telnet不通,不知道是为什么?
答:网上看到很多人,包括我自己,都遇到了这个问题,VIP能够ping通,但是telnet以及mysql连接命令不通,怎么着也找不到问题。
这个问题困扰了我很长时间,中间试验停止了两个月,因为实在找不到原因,但是后来实在是啼笑皆非,原因竟然是:没有使用测试机,
我所有的测试命令都是在LVS主机上执行的,而LVS主机上绑定了VIP,并且没有mysql服务,肯定能ping通,但是在没有转发请求的
情况下,肯定服务不通。
2、原资料中的一些命令的困扰?
答:比如ipvsadm -L 在我的服务器上是不显示具体IP的,只显示localhost,一度让我以为服务不通跟这个有联系,但实际上执行ipvsadm -Ln就ok了。
3、数据库从库状态检测脚本是否使用?
答:我觉得这个应该根据具体的业务系统的需求去考虑,我的系统要求的是能够持续提供服务,对数据一致性的要求没有那么高,所以我只需要对同步状态进行
告警,并保证能及时处理即可,并不需要停止服务这么严苛。另外脚本使用perl或者shell实际上应该没有什么不同。
ok!整个方案就这样了,中间省略了一些步骤,比如数据库主从服务的搭建,LVS高可用的搭建,这两个服务我在很久之前就搭建了无数次,实在是懒得再写,并且这种单独的服务在网上已经有了无数个攻略,写的价值不是很大,大家各种研究下吧。
另外水平有限,如果有所遗漏和错误请大家指出,我及时修改,如果有更完善的方案,大家能分享就更好了。
linux keepalived+LVS 实现mysql 从库负载均衡的更多相关文章
- haproxy实现mysql从库负载均衡
本文主要讲述通过haproxy实现mysql从库间的负载均衡,至于mysql主从的搭建,本文不再重述,可以参考我之前写的博客. 1.首先下载haproxy包 wget http://haproxy.1 ...
- Mysql双主 keepalived+lvs实现mysql高可用性
MySQL复制 能够保证数据的冗余的同时可以做读写分离来分担系统压力,如果是主主复制还可以很好的避免主节点的单点故障.但是MySQL主主复制存在一些问题无法满足我们的实际需要:未提供统一访问入口来实现 ...
- 搭建MySQL高可用负载均衡集群
1.简介 使用MySQL时随着时间的增长,用户量以及数据量的逐渐增加,访问量更是剧增,最终将会使MySQL达到某个瓶颈,那么MySQL的性能将会大大降低.这一结果也不利于软件的推广. 那么如何跨过这个 ...
- 搭建MySQL高可用负载均衡集群(转)
阅读目录 1.简介 2.基本环境 3.配置MySQL主主复制 4.中间件简述 4.1.Haproxy介绍 4.2.keepalived介绍 5.中间件的安装与配置(haproxy.keepalived ...
- [转]搭建MySQL高可用负载均衡集群
转自:http://www.cnblogs.com/phpstudy2015-6/p/6706465.html 阅读目录 1.简介 2.基本环境 3.配置MySQL主主复制 4.中间件简述 4.1.H ...
- Linux keepalived+lvs实现高可用负载均衡
LVS的具有强大的负载均衡功能,但是它缺少对负载层节点(DS)的健康状态检测功能,也不能对后端服务(RS)进行健康状态检测:keepalived是专门用来监控高可用集群架构的中各服务的节点状态,如果某 ...
- (转载)Nginx/LVS/HAProxy三种主流负载均衡软件的对比
原地址:http://www.ha97.com/5646.html PS:Nginx/LVS/HAProxy是目前使用最广泛的三种负载均衡软件,本人都在多个项目中实施过,参考了一些资料,结合自己的一些 ...
- Nginx(haproxy)+keepalived+Tomcat双主高可用负载均衡
周末的时候一个正在学Linux的朋友问我,高可用怎么玩?我和他微信了将近三个小时,把Nginx和haproxy双主高可用教给他了,今天突然想把这个给写进博客里,供给那些正在学习Linux系统的朋友们, ...
- Dubbo入门到精通学习笔记(十六):Keepalived+Nginx实现高可用Web负载均衡
文章目录 Keepalived+Nginx实现高可用Web负载均衡 Keepalived+Nginx实现高可用Web负载均衡 高可用架构篇 Keepalived + Nginx 实现高可用 Web 负 ...
随机推荐
- mysql数据库与oracle数据库的切换
1.从mysql数据库中导出ambition(数据库名)结构和数据的ambition.sql文件. 2.将ambition.sql用Power Designer转换成mysql数据模型. 给模型起个名 ...
- 004_kafka_安装运行
1.下载和安装 目前kafka的稳定版本为0.10.0.0 下载地址:http://kafka.apache.org/downloads.html 下载后解压缩安装包到系统即可完成安装 > ta ...
- UIScrollView 原理详解
转载此文章原因:web页面在ipad的app中总是有橡皮筋效果,使用iscroll虽然能解决橡皮筋想过,但是滚动层内的元素事件都无法触发.故同安卓和ios一样使用后台解决...红色的为解决方案.. S ...
- org.apache.commons.lang.StringUtils类
org.apache.commons.lang.StringUtils类 本文摘自:(http://www.blogjava.net/japper/archive/2012/05/23/378946. ...
- 使用NodeJS、GruntCLI遇到的问题
运行环境CMD NODEJS版本v0.8.4 node --version 需求:需要用到Grunt的JS编译功能,各位别笑我. 使用代理 npm config set proxy http://i ...
- apache开启.htaccess
1 . 如何让的本地APACHE开启.htaccess 如何让的本地APACHE开启.htaccess呢?其实只要简朴修改一下apache的httpd.conf设置就让APACHE.htaccess了 ...
- File缓存
/** * 保存对象 * @param ser * @param file * @throws IOException */ public b ...
- 关于DButils的简单介绍
android中的orm框架,一行代码就可以进行增删改查:支持事务,默认关闭:可通过注解自定义表名,列名,外键,唯一性约束,NOT NULL约束,CHECK约束等(需要混淆的时候请注解表名和列名)等等 ...
- 转帖不会乱码的,powershell网络蜘蛛
抓取(爬取)网上信息的脚本程序,俗称网络蜘蛛.powershell中自带了这样的两个命令,[Invoke-WebRequest]和[Invoke-RestMethod],但这两个命令有时候会乱码. 现 ...
- win7下用python3.3抓取网上图片并下载到本地
这篇文章是看了网上有人写了之后,才去试试看的,但是因为我用的是python3.3,与python2.x有些不同,所以就写了下来,以供参考. get_webJpg.py #coding=utf-8 im ...