MySQL + KeepAlived + LVS 单点写入主主同步高可用架构

简介: <p style="line-height:23.8px; font-family:Arial; font-size:14px; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> <span style="font-size:24px"><strong><a target="_blank" h

MySQL + KeepAlived + LVS 单点写入主主同步高可用架构



㈠ 实战环境


   

服务器名· 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


[plain]  view plain copy print ?
  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 上


[plain]  view plain copy print ?
  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


[plain]  view plain copy print ?
  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. 成功!!  
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
目录
相关文章
|
11月前
|
运维 监控 关系型数据库
MySQL高可用方案:MHA与Galera Cluster对比
本文深入对比了MySQL高可用方案MHA与Galera Cluster的架构原理及适用场景。MHA适用于读写分离、集中写入的场景,具备高效写性能与简单运维优势;而Galera Cluster提供强一致性与多主写入能力,适合对数据一致性要求严格的业务。通过架构对比、性能分析及运维复杂度评估,帮助读者根据自身业务需求选择最合适的高可用方案。
|
11月前
|
SQL 监控 关系型数据库
MySQL主从复制:构建高可用架构
本文深入解析MySQL主从复制原理与实战配置,涵盖复制架构、监控管理、高可用设计及性能优化,助你构建企业级数据库高可用方案。
|
负载均衡 算法 关系型数据库
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
本文聚焦 MySQL 集群架构中的负载均衡算法,阐述其重要性。详细介绍轮询、加权轮询、最少连接、加权最少连接、随机、源地址哈希等常用算法,分析各自优缺点及适用场景。并提供 Java 语言代码实现示例,助力直观理解。文章结构清晰,语言通俗易懂,对理解和应用负载均衡算法具有实用价值和参考价值。
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
|
10月前
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
970 6
|
关系型数据库 MySQL Shell
MySQL 备份 Shell 脚本:支持远程同步与阿里云 OSS 备份
一款自动化 MySQL 备份 Shell 脚本,支持本地存储、远程服务器同步(SSH+rsync)、阿里云 OSS 备份,并自动清理过期备份。适用于数据库管理员和开发者,帮助确保数据安全。
|
存储 SQL 关系型数据库
MySQL进阶突击系列(03) MySQL架构原理solo九魂17环连问 | 给大厂面试官的一封信
本文介绍了MySQL架构原理、存储引擎和索引的相关知识点,涵盖查询和更新SQL的执行过程、MySQL各组件的作用、存储引擎的类型及特性、索引的建立和使用原则,以及二叉树、平衡二叉树和B树的区别。通过这些内容,帮助读者深入了解MySQL的工作机制,提高数据库管理和优化能力。
|
关系型数据库 MySQL 分布式数据库
Super MySQL|揭秘PolarDB全异步执行架构,高并发场景性能利器
阿里云瑶池旗下的云原生数据库PolarDB MySQL版设计了基于协程的全异步执行架构,实现鉴权、事务提交、锁等待等核心逻辑的异步化执行,这是业界首个真正意义上实现全异步执行架构的MySQL数据库产品,显著提升了PolarDB MySQL的高并发处理能力,其中通用写入性能提升超过70%,长尾延迟降低60%以上。
|
负载均衡 算法 关系型数据库
大数据新视界--大数据大厂之MySQL数据库课程设计:MySQL集群架构负载均衡故障排除与解决方案
本文深入探讨 MySQL 集群架构负载均衡的常见故障及排除方法。涵盖请求分配不均、节点无法响应、负载均衡器故障等现象,介绍多种负载均衡算法及故障排除步骤,包括检查负载均衡器状态、调整算法、诊断修复节点故障等。还阐述了预防措施与确保系统稳定性的方法,如定期监控维护、备份恢复策略、团队协作与知识管理等。为确保 MySQL 数据库系统高可用性提供全面指导。
|
SQL 存储 缓存
MySQL的架构与SQL语句执行过程
MySQL架构分为Server层和存储引擎层,具有高度灵活性和可扩展性。Server层包括连接器、查询缓存(MySQL 8.0已移除)、分析器、优化器和执行器,负责处理SQL语句;存储引擎层负责数据的存储和读取,常见引擎有InnoDB、MyISAM和Memory。SQL执行过程涉及连接、解析、优化、执行和结果返回等步骤,本文详细讲解了一条SQL语句的完整执行过程。
697 3
|
监控 关系型数据库 MySQL
云数据库:从零到一,构建高可用MySQL集群
在互联网时代,数据成为企业核心资产,传统单机数据库难以满足高并发、高可用需求。云数据库通过弹性扩展、分布式架构等优势解决了这些问题,但也面临数据安全和性能优化挑战。本文介绍了如何从零开始构建高可用MySQL集群,涵盖选择云服务提供商、创建实例、配置高可用架构、数据备份恢复及性能优化等内容,并通过电商平台案例展示了具体应用。

热门文章

最新文章

推荐镜像

更多