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
- global_defs {
- notification_email {
- linwaterbin@gmail.com
- }
- notification_email_from bychjzh@gmail.com
- smtp_server smtp.gmail.com
- smtp_connect_timeout 30
- router_id LVS1
- }
- vrrp_sync_group test {
- group {
- loadbalance
- }
- }
- vrrp_instance loadbalance {
- state BACKUP
- interface eth0
- lvs_sync_daemon_inteface eth0
- virtual_router_id 51
- priority 150
- advert_int 1
- authentication {
- auth_type PASS
- auth_pass 1111
- }
- virtual_ipaddress {
- 192.168.1.128 dev eth0 label eth0:1
- }
- }
- virtual_server 192.168.1.128 3306 {
- delay_loop 6
- lb_algo rr
- lb_kind DR
- persistence_timeout 20
- protocol TCP
- sorry_server 192.168.1.115 3306
- real_server 192.168.1.116 3306 {
- weight 3
- TCP_CHECK {
- connect_timeout 3
- nb_get_retry 3
- delay_before_retry 3
- connect_port 3306
- }
- }
- }
在EVEN:
大部分都和 ODD 一样、只有 2 处:
● state BACKUP
● priority 150
⑹ ODD EVEN 的 realsever 配置
在 ODD EVEN 上
- #!/bin/bash
- # description: Config realserver lo and apply noarp
- SNS_VIP=192.168.1.128
- /etc/rc.d/init.d/functions
- case "$1" in
- start)
- ifconfig lo:0 $SNS_VIP netmask 255.255.255.255 broadcast $SNS_VIP
- /sbin/route add -host $SNS_VIP dev lo:0
- echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
- echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
- echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
- echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
- sysctl -p >/dev/null 2>&1
- echo "RealServer Start OK"
- ;;
- stop)
- ifconfig lo:0 down
- route del $SNS_VIP >/dev/null 2>&1
- echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore
- echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce
- echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
- echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
- echo "RealServer Stoped"
- ;;
- *)
- echo "Usage: $0 {start|stop}"
- exit 1
- esac
- 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
- 停止前:
- [root@odd keepalived]# ipvsadm -ln
- IP Virtual Server version 1.2.1 (size=4096)
- Prot LocalAddress:Port Scheduler Flags
- -> RemoteAddress:Port Forward Weight ActiveConn InActConn
- TCP 192.168.1.128:3306 rr persistent 20
- -> 192.168.1.116:3306 Local 3 0 0
- 停止:
- [mysql@odd ~]$ mysqladmin shutdown
- 130508 00:53:50 mysqld_safe mysqld from pid file /home/mysql/mysql/data/odd.example.com.pid ended
- [1]+ Done mysqld_safe
- 停止后:
- [root@odd keepalived]# ipvsadm -ln
- IP Virtual Server version 1.2.1 (size=4096)
- Prot LocalAddress:Port Scheduler Flags
- -> RemoteAddress:Port Forward Weight ActiveConn InActConn
- TCP 192.168.1.128:3306 rr persistent 20
- -> 192.168.1.115:3306 Route 1 0 0
- 成功!!
- 顶
- 5
- 踩
- 0
- 猜你在找
- LINUX EVAL命令
- SLF4J 简单日志门面 介绍和使用
- 在mysql的replicatin环境中masterslave常用参数
- mysq的主从复制备份还原
- 利用Haffman 算法实现对ascii字符文件的压缩
- discuz X3数据库表结构
- set global sql_slave_skip_counter1
- GlusterFS RAID1+RAID0方式的搭建replicate与unify混用
- mysql做主从复制成功配置案例
- varnish配置
MySQL + KeepAlived + LVS 单点写入主主同步高可用架构实验的更多相关文章
- keepalived + lvs marster 与 backup 之间的 高可用
简介 keepalived 是linux下一个轻量级的高可用解决方案,它与HACMP实现功能类似,都可以实现服务或者网络的高可用,但是又有差别:hacmp是一个专业的.功能完善的高可用软件,它提供了H ...
- Mysql双主互备+keeplived高可用架构介绍
一.Mysql双主互备+keeplived高可用架构介绍 Mysql主从复制架构可以在很大程度保证Mysql的高可用,在一主多从的架构中还可以利用读写分离将读操作分配到从库中,减轻主库压力.但是在这种 ...
- MySQL高可用架构之Keepalived+主从架构部署
针对目前公司的数据库架构要做统计规划和调整,所以针对不同的业务环境要选择合适的架构就比较重要,同时作为运维人员又要考虑到维护的便捷性(不能做过多架构维护),最终停留在mha+vip/主从+vip/my ...
- Mysql双主互备+keeplived高可用架构(部分)
一.Mysql双主互备+keeplived高可用架构介绍 Mysql主从复制架构可以在很大程度保证Mysql的高可用,在一主多从的架构中还可以利用读写分离将读操作分配到从库中,减轻主库压力.但是在这种 ...
- Oracle Compute云快速搭建MySQL Keepalived高可用架构
最近有个客户在测试Oracle Compute云,他们的应用需要使用MySQL数据库,由于是企业级应用一定要考虑高可用架构,因此有需求要在Oracle Compute云上搭建MySQL高可用集群.客户 ...
- 数据库高可用架构(MySQL、Oracle、MongoDB、Redis)
一.MySQL MySQL小型高可用架构 方案:MySQL双主.主从 + Keepalived主从自动切换 服务器资源:两台PC Server 优点:架构简单,节省资源 缺点:无法线性扩展,主从失 ...
- [转]数据库高可用架构(MySQL、Oracle、MongoDB、Redis)
一.MySQL MySQL小型高可用架构 方案:MySQL双主.主从 + Keepalived主从自动切换 服务器资源:两台PC Server 优点:架构简单,节省资源 缺点:无法线性扩展,主从失 ...
- MySQL高可用架构-MMM环境部署记录
MMM介绍MMM(Master-Master replication manager for MySQL)是一套支持双主故障切换和双主日常管理的脚本程序.MMM使用Perl语言开发,主要用来监控和管理 ...
- (5.1)mysql高可用系列——高可用架构方案概述
关键词:mysql高可用概述,mysql高可用架构 常用高可用方案 20190918 现在业内常用的MySQL高可用方案有哪些?目前来说,用的比较多的开源方案分内置高可用与外部实现,内置高可用有如下: ...
随机推荐
- Codeforces Round #430 (Div. 2) C. Ilya And The Tree
地址:http://codeforces.com/contest/842/problem/C 题目: C. Ilya And The Tree time limit per test 2 second ...
- Problem I. Increasing or Decreasing MIPT-2016 Pre-Finals Workshop, Taiwan NTU Contest, Sunday, March 27, 2016
题面: Problem I. Increasing or DecreasingInput file: standard inputOutput file: standard outputTime li ...
- AB测试的需求
一.背景 涉及到的项目是 SDK, 用户量 几千万级别,需要调整的是 订单购买整个逻辑,已经发现了低概率问题,影响到的订单不到 0.001% ,但是每周总有几个用户向客服反馈问题.整个逻辑问题,在我入 ...
- selenium+python—实现自动化测试基本思路
测试是一个贯穿于整个开发过程的连续过程,测试最基本的原理就是比较预期结果是否与实际执行结果相同,如果相同则测试成功,否则测试失败. 为了让单元测试代码能够被测试和维护人员更容易地理解,最好的解决办法是 ...
- HCNP学习笔记之PXE原理详解及实践
一.PXE简介 PXE(preboot execute environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过网络从远端服 ...
- CSS 布局 - 水平 & 垂直对齐
CSS 布局 - 水平 & 垂直对齐 一.元素居中对齐 要水平居中对齐一个元素(如 <div>), 可以使用 margin: auto;. 设置到元素的宽度将防止它溢出到容器的边缘 ...
- oracle导入时报错
之前在oracle数据库中新建了一个表空间和用户,在新建的用户下导入".dmp"文件是出现了这个错误. 解决方法: 使用管理员登陆进去,创建一个对应的表空间和用户,就OK了. (表 ...
- vim寄存器与复制粘贴的实现
对于大多数在Ubuntu下使用vim作为常用编辑器的同学来讲,他们遇到的第一个比较大的麻烦来自于vim与外部应用的复制粘贴. 当然,愿意选择ubuntu以及vim的同学肯定是google好手.不幸的是 ...
- SaltStack安装Redis-第十篇
实验环境 node1 192.168.56.11 角色 salt-master node2 192.168.56.12 角色 salt-minon 完成内容 Salt远程安装Redis ...
- Docker容器可以使用容器平台管理自动重启实现自修复吗?
容器的自修复功能是经常被吹嘘的.因为容器是衣服,人躺下了,衣服也躺下了,容器平台能够马上发现人躺下了,于是可以迅速将人重新唤醒工作. 而虚拟机是房子,人躺下了,房子还站着.因而虚拟机管理平台不知道里面 ...