环境: centos6.5_x64

准备:

两台mysql机器

主1 master:  192.168.32.130

主2 backup:  192.168.32.131

VIP: 192.168.32.100

步骤:

1.配置mysql的双主架构

2.安装keepalived

keepalived-1.2.23.tar.gz

yum -y install openssl openssl-devel

wget http://www.keepalived.org/software/keepalived-1.2.23.tar.gz

tar zxvf keepalived-1.2.23.tar.gz

cd keepalived-1.2.23

./configure --prefix=/usr/local/keepalived --with-kernel-dir=/usr/src/kernels/2.6.18-164.el5-i686

make && make install

3.把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/

4.修改keepalived配置

vi /etc/keepalived/keepalived.conf  //详见.conf详细配置

vi /usr/local/keepalived/mysql.sh

#!/bin/bash

pkill keepalived

chmod +x /usr/local/keepalived/mysql.sh

/etc/init.d/keepalived start

5.测试

5.1 分别在两台mysql机器上授权, 允许用户远程登录

mysql> grant all on *.* to'kkk'@'192.168.32.%' identified by '123456';

mysql> flush privileges;

5.2 在任何一台机器上, 通过虚拟IP来连接mysql服务器

mysql -ukkk -p123456 -h192.168.32.100

5.3 停止master,看是否能正常切换到backup,然后来查看VIP在哪台服务器上

service mysqld stop

ip addr

5.4 master服务器故障恢复后,是否主动抢占资源,成为活动服务器 (取决于这个参数nopreempt)

keepalived.conf详细配置

! Configuration File for keepalived

global_defs {

   notification_email {

     acassen@firewall.loc

     failover@firewall.loc

     sysadmin@firewall.loc

   }

   notification_email_from Alexandre.Cassen@firewall.loc

   smtp_server 192.168.200.1

   smtp_connect_timeout 

   router_id LVS_DEVEL

   vrrp_skip_check_adv_addr

   vrrp_strict

   vrrp_garp_interval 

   vrrp_gna_interval 

}

vrrp_instance VI_1 {

    state BACKUP

    interface eth0

    virtual_router_id 

    priority   #优先级 (backup设置为90)

    advert_int 

    nopreempt  #不主动抢占资源,只在master这台优先级高的设置 (backup不设置) 

    authentication {

        auth_type PASS

        auth_pass 

    }

    virtual_ipaddress {

        192.168.32.100

    }

}

virtual_server  {

     delay_loop 

     #lb_algo wrr

     #lb_kind DR

     persistence_timeout 

     protocol TCP

     real_server  {  #真实mysql服务器的ip地址

         weight 

         notify_down /usr/local/keepalived/mysql.sh  #貌似没有执行脚本, why?

         TCP_CHECK {

             connect_timeout 

             nb_get_retry 

             delay_before_retry 

             connect_port 

         }

     }

;

最新文章

  1. 【PHP开发篇】一个统计客户端商机提交的获取IP地址
  2. UIDatePicker日期选取器
  3. 关于javascript模块加载技术的一些思考
  4. Socket实现仿QQ聊天(可部署于广域网)附源码(1)-简介
  5. HDU 1532 最大流模板题
  6. 原创翻译-测试驱动开发(TDD)
  7. windows下安装coreseek/sphinx
  8. [转载] Linux下高并发socket最大连接数所受的各种限制
  9. Android软键盘强制弹出,隐藏输入法.
  10. JVM学习积累
  11. 解决PowerDesigner中DBMS设置的问题(Repost)
  12. java-StringTokenizer类
  13. cocos2d-x3.2中加入Android手机震动
  14. 远程连接mysql数据库,1130问题
  15. JS和JQuery中的事件托付 学习笔记
  16. 201621123062《java程序设计》第六周作业总结
  17. 自定义GridLookUpEdit编辑器
  18. SpringBoot2.0集成FastDFS
  19. hdu 2197 求长度为n的本原串 (快速幂+map)
  20. spring的applicationContext.xml中的DBCP配置如下:

热门文章

  1. 纯手写Myatis框架
  2. 转:IAdaptable & IAdapterFactory
  3. Maven在[INFO] Generating project in Interactive mode卡住的问题解决
  4. winform程序公布后,client下载报错“您的 Web 浏览器设置不同意执行未签名的应用程序”
  5. 一波三折ST-Link
  6. vue2 axios 接口函数封装
  7. javascript获取星期
  8. 使用Apache Benchmark做压力测试遇上的5个常见问题
  9. python thrift hbase安装连接
  10. 华为p20:拍美景,听讲解,旅行更智能