zoukankan      html  css  js  c++  java
  • 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 statusG"| 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 在从库都发生周期性延迟后不能将读转向主库,但是很遗憾,这种的工作基本只能靠中间件这样的完成,所以我们的读写分离业务目标是可以忍受延迟的业务

  • 相关阅读:
    xss攻击和csrf攻击的定义及区别
    php中Redis的扩展
    MySQL事务特性
    PHP的设计模式
    http协议
    sql语句的优化
    mysql存储引擎
    laravel框架安装Curl扩展
    laravel框架中安装 elasticsearch 包
    docker容器配置nginx负载均衡 -----加权
  • 原文地址:https://www.cnblogs.com/danhuangpai/p/10143332.html
Copyright © 2011-2022 走看看