fail 发表于 2013-7-29 09:04:50

keepalive+mysql-ha

一、MHA优缺点优点:1、MHA自动化主服务器故障转移,快速将从服务器晋级为主服务器(通常在10-30s),而不影响复制的一致性,不会有性能损耗,容易安装,不必更改现有的部署环境,适用于任何存储引擎。2、MHA提供在线主服务器切换,改变先正运行的主服务器到另外一台上,这个过程只需0.5-2s的时间,这个时间内数据无法写入。MHA Manager通过ssh连接mysql slave服务器。3、使用半同步复制,可以大大降低数据丢失的风险。MHA可以与半同步复制结合起来。如果只有一个slave已经收到了最新的二进制日志,MHA可以将最新的二进制日志应用于其他所有的slave服务器上,因此他们彼此保持一致性。缺点:1、虽然MHA试图从宕机的主服务器上保存二进制日志,但也会有问题。例如,如果主服务器硬件故障或无法通过ssh访问,MHA没法保存二进制日志,只进行故障转移而丢失最新数据。2、当主DB故障,切换到另外的服务器上后,即使恢复了原来的主DB,也不能立即加入整套MHA系统中,得重新部署。而且当发生一次切换后,管理节点的监控进程就会自动退出,需要用脚本来自动启动。另外还得删除app1.failover.complete这个文件,否则新的主DB出现问题MHA就不会切换了。二、简单的架构图MHA最少需要两台服务器组成,也就是M-S架构,并使用从DB作为监控机。本次整理的方案使用了4台虚拟机,为M-M-S加监控机的组合。Mysql请求发往VIP:10.1.1.190,当现有的主(10.1.1.191)故障,VIP会指向10.1.1.192,mysql请求也会转过去。请看简图:
一、环境搭建1、部署MHAMHA节点包含三个脚本,依赖perl模块。save_binary_logs:保存和复制当掉的主服务器二进制日志。apply_diff_relay_logs:识别差异的relay log事件,并应用于其他salve服务器。purge_relay_logs:清除relay log文件。需要在所有mysql服务器上安装MHA节点,MHA管理服务器也需要安装。MHA管理节点模块内部依赖MHA节点模块。MHA管理节点通过ssh连接管理mysql服务器和执行MHA节点脚本。MHA节点依赖perl的DBD::mysql模块。a)安装MHA Node,4台机器都需要安装yum –y install perl-DBD-MySQLwget http://mysql-master-ha.googlecode.com/files/mha4mysql-node-0.54.tar.gztar zxf mha4mysql-node-0.54.tar.gzcd mha4mysql-node-0.54perl Makefile.PLmake && make install
b)安装MHA manager,只需要安装在监控机(10.1.1.112)yum –y install perl-Config-Tiny perl-Log-Dispatch perl-Parallel-ForkManager wget http://mysql-master-ha.googlecode.com/files/mha4mysql-manager-0.54.tar.gztar zxf mha4mysql-manager-0.54.tar.gzcd mha4mysql-manager-0.54perl Makefile.PLmake && make install
需要注意的是mha-manager和mha-node版本必须一致,另外切记管理机也要安装node包。2、部署keepalive2.1在10.1.1.191和10.1.1.192上部署keepalivedwget http://www.keepalived.org/software/keepalived-1.1.17.tar.gztar zxvf keepalived-1.1.17.tar.gzcd keepalived--1.1.17.tar.gz./configure --prefix=/usr/local/keepalivedmake
make install
cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
mkdir /etc/keepalived
MASTER Keepalived的配置:cat /etc/keepalived/keepalived.conf#Configuration File for keepalivedglobal_defs {notification_email {######定义接受邮件的邮箱wangjj@hrloo.com}notification_email_from jiankong@staff.tuge.com######定义发送邮件的邮箱smtp_server mail.tuge.comsmtp_connect_timeout 10}vrrp_script check_mysql {######定义监控mysql的脚本script "/etc/keepalived/check_mysql.sh"interval 2######监控时间间隔weight 2######负载参数}vrrp_instance vrrptest {######定义vrrptest实例state MASTER######服务器状态(主为MASTER,从为BACKUP)interface eth0######使用的接口virtual_router_id 51######虚拟路由的标志,一组lvs的虚拟路由标识必须相同,这样才能切换priority 150######服务启动优先级,值越大,优先级越高,BACKUP 不能大于MASTERadvert_int 1######服务器之间的存活检查时间notify /etc/keepalived/alert.sh######keepalive发生切换的报警邮件authentication {auth_type PASS######认证类型auth_pass ufsoft######认证密码,一组lvs 服务器的认证密码必须一致}track_script {######执行监控mysql进程的脚本check_mysql}virtual_ipaddress {######虚拟IP地址10.1.1.190}}
BACKUP Keepalived的配置cat /etc/keepalived/keepalived.conf#Configuration File for keepalivedglobal_defs {notification_email {######定义接受邮件的邮箱wangjj@hrloo.com}notification_email_from jiankong@staff.tuge.com######定义发送邮件的邮箱smtp_server mail.tuge.comsmtp_connect_timeout 10}vrrp_script check_mysql {######定义监控mysql进程的脚本script "/etc/keepalived/check_mysql.sh"interval 2######监控时间间隔weight 2######负载参数}vrrp_instance vrrptest {######定义vrrptest实例state BACKUP######服务器状态(主为MASTER,从为BACKUP)interface eth0######使用的接口virtual_router_id 51######虚拟路由的标志,一组lvs的虚拟路由标识必须相同,这样才能切换priority 100######服务启动优先级,值越大,优先级越高,BACKUP 不能大于MASTERadvert_int 1######服务器之间的存活检查时间notify /etc/keepalived/alert.sh######keepalive发生切换的报警邮件authentication {auth_type PASS######认证类型auth_pass ufsoft######认证密码,一组lvs 服务器的认证密码必须一致}track_script {######执行监控NGINX进程的脚本check_mysql}virtual_ipaddress {######虚拟IP地址10.1.1.190}}
2.2监控脚本说明:2.2.1监控mysql/etc/keepalived/check_mysql.sh#!/bin/bashif [ "$(ps -ef | egrep "mysqld|mysqld_safe" | grep -v egrep )" == "" ]then/etc/init.d/keepalived stopfi
功能:判断当mysql进程不存在,则kill掉keepalive,将虚拟IP切换到BACKUP-Keepalive。
2.2.2 监控脚本/etc/keepalived/alert.sh主要是在keepalive发生切换的时候发邮件报警用的。初步的架构就这样了,具体还得调整,盼大牛指教。

yinl_li 发表于 2013-7-29 12:06:04

我不在江湖,但江湖中有我的传说。

gxh1968 发表于 2013-7-29 14:03:05

路过,支持一下啦

julley 发表于 2013-7-29 18:04:41

恋爱就是无数个饭局,结婚就是一个饭局。

shaerzzr 发表于 2013-7-30 03:19:09

沙发!沙发!

ab520025520025 发表于 2013-7-30 06:35:26

爱护环境,人人有病。

crespo09 发表于 2013-7-30 14:48:11

生活***好玩,因为生活老***玩我!
页: [1]
查看完整版本: keepalive+mysql-ha