zoukankan      html  css  js  c++  java
  • 阿里云ECS服务器上搭建keepalived+mha+mysql5.6+gtid+一主两从+脚本判断架构踩的坑

        最近,公司项目搭建了一套后端数据库架构,不是在RDS,是在阿里云的ECS服务器上搭建keepalived、mha、mysql5.6、gtid、一主两从架构,目前还没有实现读写分离,以后架构升级,可能代码里会实现读写分离,或者加入入mycat等中间件,也可能进行分库分表;架构不是最新,很多工具大家都见过,只是在不同的环境,不同的情况下,遇上的问题不同,也踩了很多坑,如有些可能没在阿里云上,有的可能数据库版本不一样等,所以更大家分享一下经验。

    遇到的问题较多,主要问题是:

    1、mha必须是0.56版本才支持GTID

    2、阿里云ECS不支持浮动IP

    3、阿里云服务器上keepalived只能设置单播

    4、keepalived配置文件里加脚本判断mysql是否启动需要首尾写好配置文件

    5、注意keepalived的配置文件,以防主库恢复后IP漂移回去

    大概架构:

    1、在三台服务器上安装mysql主从复制

    主从复制一主两从,用GTID特性,半同步复制能保证一致性好点,和主从复制方便点。

    a、配置每个节点配置文件my.cnf
    添加如下
    log-bin=mysql-bin
    server-id=3
    gtid_mode=ON
    log_slave_updates
    enforce_gtid_consistency
    (注:除了server-id每个节点不一样,其它都一样,也必须加,以一般主从复制区别,多了下面的3个参数)
    b、主节点添加复制账号
    grant replication slave  on *.* to 'backup'@'192.168.10.%'identified by'backup';
    c、从节点执行
    change master  to  master_host='192.168.10.142', master_user='backup', master_password='backup',master_port=3306,master_auto_position=1;
    start slave;

    2、在三台服务器上安装mha node 在第三台服务器上安装mha master

    下载链接:链接:http://pan.baidu.com/s/1c2lKbOs 密码:bfqd

    安装方式参照:http://www.cnblogs.com/galengao/p/5764163.html

    3、在主库和备库上面安装keepalived

     安装方式参照:http://www.cnblogs.com/galengao/p/5764163.html

    可以选择安装最新版本

    安装依赖包
    yum install popt-static kernel-devel make gcc openssl-devel lftp libnl* popt*
    
    安装keepalived
    wget  http://www.keepalived.org/software/keepalived-1.2.4.tar.gz
    tar zxvf keepalived-1.2.4.tar.gz
    cd keepalived-1.2.4
    ./configure --prefix=/usr/local/keepalived
    make
    make install
    
    将keepalived做成启动服务,方便管理
    cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
    cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
    mkdir /etc/keepalived/
    cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
    cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
    
    service keepalived start

    踩到的问题处理

    1、mha必须是0.56版本才支持GTID

    从我给的链接下载0.56的版本,或者网上找的来安装

    2、阿里云ECS不支持浮动IP

    要注意:阿里云的上ECS服务器跟我们自己的虚拟机不一样,它不支持浮动IP的

    a、阿里云上提工单,让其开通havip,高可用虚拟ip

    b、到专有VPC网络的高可用虚拟IP,点击创建高可用虚拟IP出现如下图

    如何在出现的虚拟ip点管理,把你要漂移的那两台服务器绑定在上面:

    3、阿里云服务器上keepalived只能设置单播

    按照上面模式做了keepalived还是不能正常运行,因为在阿里云私有网络里只能设置单播,如下配置文件里的红字,画了的是IP地址,从哪台飘到哪台,另外一台的配置IP是相反的:

    4、keepalived配置文件里加脚本判断mysql是否启动需要首尾写好配置文件

    因为我们不但是服务器死了进行IP漂移,还要即使数据库死了也要漂移,所以只能写脚本去判断,脚本在配置文件里要注意格式:末尾还有一个模块,那个模块是在vrrp_instance VI_1的模块里的,及check_mysql和后面的花括号有一个空格:

    5、注意keepalived的配置文件,以防主库恢复后IP漂移回去

    我在配置文件里改成非抢占模式nopreempt 和主备的state都改成BACKUP,这样当主库挂了,IP漂移过去后重新启动主库,但数据库还没修复时不会漂移过来,如果需要漂移过来需要手动先关闭备库的keepalived,让其漂移过来。

    问题形形色色,不同环境不同需求会遇上不同问题,慢慢摸索慢慢发掘。

  • 相关阅读:
    js最佳实践
    js图片库 案例
    DOM
    js语法
    导航栏的ul中的li设置问题
    wDatepicker97的用法(点击事件联动)
    jqueyr validtion的使用
    哥哥写的例子(后台没有进行排序分组的时候,前台进行自己分组)
    关于require js加载的时候报错的问题
    一些简单的三目运算的使用(举例购物车)
  • 原文地址:https://www.cnblogs.com/galengao/p/7417520.html
Copyright © 2011-2022 走看看