zoukankan      html  css  js  c++  java
  • MySQL + KeepAlived + LVS 单点写入主主同步高可用架构实验

    分类: MySQL 架构设计 5361人阅读 评论(8) 收藏 举报

       ㈠ 实战环境


       

    服务器名· IP OS MySQL
    odd.example.com 192.168.1.116 RHEL-5.8 5.5.16
    even.example.com 192.168.1.115 RHEL-5.8 5.5.16

       ㈡ 方案优缺点
          
          优点
          
          ● 安装配置简单, 实现方便,高可用效率好,可以根据服务与系统的可用性多方面进行切换
          ● 可以将写 VIP 和读 VIP 分别进行设置,为读写分离做准备
          ● 可以在后面添加多个从服务器,并做到负载均衡
          
          缺点
          
          ● 在启动或者恢复后会立即替换掉定义的 sorry_server
             因此如果要实现指定条件替换或者不替换需要通过其他方式实现,比如:临时更改MySQL的端口等
          ● 扩展不是很方便
          ● 切换需要 1s 左右的时间


          
       
    ㈢ 方案适用场景
          
          这个方案适用于只有两台数据库服务器并且还没有实现数据库的读写分离的情况、读和写都配置 VIP
          这个方案能够便于单台数据库的管理维护以及切换工作
          比如进行大表的表结构更改、数据库的升级等都是非常方便的


          
       
    ㈣ 方案架构图


            



       ㈤ 部署步骤
       
       ⑴ MySQL 安装
       
          请查阅我之前的一篇文章:MySQL 5.5 三大安装方式:【二进制、源代码编译 和 RPM 包】 安装步骤及优缺点比较


       ⑵ MySQL主主同步配置
          
          这也请查阅我之前的文章哈:MySQL 主主同步配置


       ⑶ LVS 安装
       
         在ODD EVEN:
          
           # wget http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.24.tar.gz
           # ln -s /usr/src/kernels/2.6.18-308.el5xen-i686/  /usr/src/linux
           # tar -zxv -f ipvsadm-1.24.tar.gz
           # cd ipvsadm-1.24
           # make
           # make install
       
       ⑷ KeepAlived安装
       
          在ODD EVEN:
       
           # wget http://www.keepalived.org/software/keepalived-1.1.19.tar.gz
           # tar -zxv -f keepalived-1.1.19.tar.gz
           # cd keepalived-1.1.19
           # ./configure --prefix=/usr/local/keepalived
           # make
           # 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
           
           
       ⑸ KeepAlived配置
       
         在 ODD


    1. global_defs {  
    2.    
    3. notification_email {  
    4.                linwaterbin@gmail.com  
    5.         }  
    6.         notification_email_from bychjzh@gmail.com  
    7.         smtp_server smtp.gmail.com  
    8.         smtp_connect_timeout 30  
    9.         router_id LVS1  
    10. }  
    11.    
    12. vrrp_sync_group test {  
    13. group {  
    14.         loadbalance  
    15. }  
    16. }  
    17.    
    18. vrrp_instance loadbalance {  
    19.         state BACKUP  
    20.         interface eth0  
    21.         lvs_sync_daemon_inteface eth0  
    22.         virtual_router_id 51  
    23.         priority 150  
    24.         advert_int 1  
    25.    
    26. authentication {  
    27.         auth_type PASS  
    28.         auth_pass 1111  
    29. }  
    30.    
    31. virtual_ipaddress {  
    32.         192.168.1.128 dev eth0 label eth0:1  
    33. }  
    34. }  
    35.    
    36. virtual_server 192.168.1.128 3306 {  
    37.         delay_loop 6  
    38.         lb_algo rr  
    39.         lb_kind DR  
    40.         persistence_timeout 20  
    41.         protocol TCP  
    42.         sorry_server 192.168.1.115 3306  
    43.         real_server 192.168.1.116 3306 {  
    44.         weight 3  
    45.         TCP_CHECK {  
    46.         connect_timeout 3  
    47.         nb_get_retry 3  
    48.         delay_before_retry 3  
    49.         connect_port 3306  
    50. }  
    51. }  
    52. }  
    53.       


         在EVEN:
       
         大部分都和 ODD 一样、只有 2 处:
       
         ● state BACKUP
       
         ● priority 150


       
       ⑹ ODD EVEN 的 realsever 配置
       
         在 ODD EVEN 上


    1. #!/bin/bash  
    2. # description: Config realserver lo and apply noarp  
    3.    
    4. SNS_VIP=192.168.1.128  
    5. /etc/rc.d/init.d/functions  
    6. case "$1" in  
    7.    
    8. start)  
    9.        ifconfig lo:0 $SNS_VIP netmask 255.255.255.255 broadcast $SNS_VIP  
    10.        /sbin/route add -host $SNS_VIP dev lo:0  
    11.        echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore  
    12.        echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce  
    13.        echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore  
    14.        echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce  
    15.        sysctl -p >/dev/null 2>&1  
    16.        echo "RealServer Start OK"  
    17.        ;;  
    18.    
    19. stop)  
    20.        ifconfig lo:0 down  
    21.        route del $SNS_VIP >/dev/null 2>&1  
    22.        echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore  
    23.        echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce  
    24.        echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore  
    25.        echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce  
    26.        echo "RealServer Stoped"  
    27.        ;;  
    28.    
    29. *)  
    30.    
    31.        echo "Usage: $0 {start|stop}"  
    32.        exit 1  
    33. esac  
    34. exit 0  



       ⑺ 启动 KeepAlived和 realsever
       
          在 ODD EVEN
       
          # /etc/rc.d/init.d/realserver.sh start
          # /etc/rc.d/init.d/keepalived start
          # echo “/etc/rc.d/init.d/realserver.sh start” >> /etc/rc.local
          # echo “/etc/rc.d/init.d/keepalived start” >> /etc/rc.local
         
       配置到这边大概都已经差不多了、接下来看看测试
       
       
       
       
    ㈥ 简单测试
       
          停掉ODD MySQL Server 、看看能否自动却换到 sorry_server


    1. 停止前:  
    2.   
    3. [root@odd keepalived]# ipvsadm -ln  
    4. IP Virtual Server version 1.2.1 (size=4096)  
    5. Prot LocalAddress:Port Scheduler Flags  
    6.   -> RemoteAddress:Port           Forward Weight ActiveConn InActConn  
    7. TCP  192.168.1.128:3306 rr persistent 20  
    8.   -> 192.168.1.116:3306           Local   3      0          0         
    9.     
    10. 停止:  
    11.   
    12. [mysql@odd ~]$ mysqladmin shutdown  
    13. 130508 00:53:50 mysqld_safe mysqld from pid file /home/mysql/mysql/data/odd.example.com.pid ended  
    14. [1]+  Done                    mysqld_safe  
    15.   
    16. 停止后:  
    17.   
    18. [root@odd keepalived]# ipvsadm -ln  
    19. IP Virtual Server version 1.2.1 (size=4096)  
    20. Prot LocalAddress:Port Scheduler Flags  
    21.   -> RemoteAddress:Port           Forward Weight ActiveConn InActConn  
    22. TCP  192.168.1.128:3306 rr persistent 20  
    23.   -> 192.168.1.115:3306           Route   1      0          0          
    24.     
    25. 成功!!  



    5
    0
    主题推荐
    架构 mysql 数据库服务器 负载均衡 数据库
    猜你在找
    LINUX EVAL命令
    SLF4J 简单日志门面 介绍和使用
    在mysql的replicatin环境中masterslave常用参数
    mysq的主从复制备份还原
    利用Haffman 算法实现对ascii字符文件的压缩
    discuz X3数据库表结构
    set global sql_slave_skip_counter1
    GlusterFS RAID1+RAID0方式的搭建replicate与unify混用
    mysql做主从复制成功配置案例
    varnish配置
  • 相关阅读:
    android之app widget(二)
    使用作业异步调用存储过程的示例
    简单两步走 中兴V880获取权限方法
    3D化网页工具:Tilt
    在各种处理中应用排序规则的示例
    GreenSock推出了新一代动画引擎平台GSAP v12
    Derived_Tables_And_Correlated_Subqueries
    六大浏览器帐号管理功能大PK
    Entity Framework 5 Sample Provider简介
    中兴U880刷recovery与刷机详细教程
  • 原文地址:https://www.cnblogs.com/lixigang/p/5371854.html
Copyright © 2011-2022 走看看