利用LVS+Keepalived搭建Mysql双主复制高可用负载均衡环境
应用背景:
MySQL复制(主主,主从...)能在保证数据的备份的同时也能够做读写分离分摊系统压力,但是发生单点故障时,需要手动
切换到另外一台主机。LVS和Keppalived可以设定一个VIP来实现统一访问入口,实现单点故障时,VIP自动切换至另外一台
主机上达到高可用效果,同时LVS可以提供多种调度算法来实现负载均衡机制。
测试环境:
MySQL主主复制,利用Keepalived控制LVS的高可用,在利用LVS的某种调度算法对2台MySQL实现负载均衡。
操作步骤:
1. MySQL复制(双主)
略
2. 安装LVS和Keepalived(在两台LVS上操作)
- [root@server-8 ~]# yum install epel-release -y
- [root@server-8 ~]# yum install ipvsadm keepalived -y
- [root@server-8 ~]# echo "" > /etc/keepalived/keepalived.conf
- [root@server-8 ~]# vim /etc/keepalived/keepalived.conf
- ! Configuration File for keepalived
- global_defs {
- router_id LVS1 #另外一台就写LVS2
- }
- vrrp_instance VI_1 {
- state MASTER #指定instance初始状态,当前是主MASTER,另外一节点填BACKUP
- interface eth0 #请查看网卡名,CentOS6和7命名不一样
- virtual_router_id #VRID,相同VRID为一个组,决定多播MAC地址,重要!主备一致
- priority #优先级,另一台改为低一点,比如90
- advert_int #检查间隔
- authentication {
- auth_type PASS #认证方式,可以是pass或ha
- auth_pass #认证密码
- }
- virtual_ipaddress {
- 138.138.82.222 #VIP
- }
- }
- virtual_server 138.138.82.222 {
- delay_loop #服务轮询的时间间隔
- lb_algo wlr #加权最小连接调度算法,LVS调度算法 rr|wrr|lc|wlc|lblc|lblcr|sh|dh|sed|nq
- lb_kind DR #LVS集群模式 NAT|DR|TUN,其中DR模式要求负载均衡器网卡必须有一块与物理网卡在同一个网段
- persistence_timeout #会话保持时间
- protocol TCP #健康检查协议
- #=== Real Server设置,3306就是MySQL连接端口 ===#
- real_server 138.138.82.10 {
- weight #权重
- TCP_CHECK {
- connect_timeout
- nb_get_retry
- delay_before_retry
- connect_port
- }
- }
- real_server 138.138.82.11 {
- weight
- TCP_CHECK {
- connect_timeout
- nb_get_retry
- delay_before_retry
- connect_port
- }
- }
- }
保存,退出;
另外一台LVS主机的Keepalived配置同上,修改上面的提到的router_id,state,priority值即可,不在赘述;
接下来启动Keepalived
- [root@server-8 ~]# service keepalived start
- [root@server-9 ~]# service keepalived start
- [root@server-8 ~]# ip a
- [root@server-8 ~]# ipvsadm -ln
目前VIP只在MASTER上,如果MASTER节点挂了,VIP自动飘到BACKUP节点上;
3. 配置两台MySQL所需脚本(在两台MySQL上操作)
- [root@server-10 ~]# vim lvs.sh
- #!/bin/bash
- VIP=138.138.82.222
- case "$1" in
- start)
- echo "start LVS of RealServer DR"
- /sbin/ifconfig lo: $VIP broadcast $VIP netmask 255.255.255.255 up
- /sbin/route add -host $VIP dev lo:
- echo "" >/proc/sys/net/ipv4/conf/lo/arp_ignore
- echo "" >/proc/sys/net/ipv4/conf/lo/arp_announce
- echo "" >/proc/sys/net/ipv4/conf/all/arp_ignore
- echo "" >/proc/sys/net/ipv4/conf/all/arp_announce
- ;;
- stop)
- /sbin/ifconfig lo: down
- echo "close LVS of RealServer DR"
- echo "" >/proc/sys/net/ipv4/conf/lo/arp_ignore
- echo "" >/proc/sys/net/ipv4/conf/lo/arp_announce
- echo "" >/proc/sys/net/ipv4/conf/all/arp_ignore
- echo "" >/proc/sys/net/ipv4/conf/all/arp_announce
- ;;
- *)
- echo "Usage: $0 {start|stop}"
- exit
- esac
- exit
保存,退出;
启动脚本:
- [root@server-10 ~]# sh lvs.sh start
- [root@server-10 ~]# ip a
另一台MySQL操作如上(脚本内容一致)。
- [root@server-11 ~]# ip a
这样,两台mysql会通过各自的loopback接口与这个VIP通信。
直此,客户端就可以通过统一个接口IP(138.138.82.222)来访问数据了。
关于LVS的10种调度算法介绍
官网:http://www.linuxvirtualserver.org/docs/scheduling.html
参考:https://blog.csdn.net/scape1989/article/details/21085659
结束.
利用LVS+Keepalived搭建Mysql双主复制高可用负载均衡环境的更多相关文章
- keepalived+mysql双主复制高可用方案
MySQL双主复制,即互为Master-Slave(只有一个Master提供写操作),可以实现数据库服务器的热备,但是一个Master宕机后不能实现动态切换.而Keepalived通过虚拟IP,实现了 ...
- 基于keepalived搭建mysql双主高可用
目录 概述 环境准备 keepalived搭建 mysql搭建 mysql双主搭建 mysql双主高可用搭建 概述 传统(不借助中间件)的数据库主从搭建,如果主节点挂掉了,从节点只能读取无法写入,只能 ...
- Nginx+Keepalived(双机热备)搭建高可用负载均衡环境(HA)
原文:https://my.oschina.net/xshuai/blog/917097 摘要: Nginx+Keepalived搭建高可用负载均衡环境(HA) http://blog.csdn.ne ...
- Nginx+Keepalived(双机热备)搭建高可用负载均衡环境(HA)-转帖篇
原文:https://my.oschina.net/xshuai/blog/917097 摘要: Nginx+Keepalived搭建高可用负载均衡环境(HA) http://blog.csdn.ne ...
- 通过keepalived搭建MySQL双主模式的高可用集群系统
1. 配置MySQL双主模式 1.修改my.cnf配置文件 默认情况下,MySQL的配置文件是/etc/my.cnf,在配置文件的[mysqld]段添加如下内容: server-id=1 log-bi ...
- 基于MySQL+MHA+Haproxy部署高可用负载均衡集群
一.MHA 概述 MHA(Master High Availability)是可以在MySQL上使用的一套高可用方案.所编写的语言为Perl 从名字上我们可以看到.MHA的目的就是为了维护Master ...
- 【线上测试之后的应用】基于MySQL+MHA+Haproxy构建高可用负载均衡数据库集群(详解)
这里我们先介绍一下MHA是什么,其次就是它的应用与测试,同时为了大家呈现了数据备份案例,最后总结了使用情况以及注意事项和解决办法 一.MHA 概述 MHA(Master High Availabili ...
- keepalived+nginx高可用负载均衡环境搭建
上篇说道keepalived的环境搭建,本来keepalived结合lvs更有优势,但是也可以结合nginx来使用.下面接着说下nginx的环境搭建 环境信息: nginx(master) 192. ...
- 分布式数据存储 - MySQL双主复制
上篇文章<分布式数据存储 - MySQL主从复制>,我们说到MySQL主从复制很好的保障了从库,读的高可用性.so,问题来了: 1.针对主库,写的高可用性又是如何做到高可用性? 2.如果需 ...
随机推荐
- MySQL查询优化注意下面的四个细节
原文:http://bbs.landingbj.com/t-0-244231-1.html 在任何一个数据库中,查询优化都是不可避免的一个话题.对于数据库工程师来说,优化工作是最有挑战性的工作.MyS ...
- Java 里如何实现线程间通信(转载)
出处:http://www.importnew.com/26850.html 正常情况下,每个子线程完成各自的任务就可以结束了.不过有的时候,我们希望多个线程协同工作来完成某个任务,这时就涉及到了线程 ...
- java 从键盘录入的三种方法
详细内容连接 https://blog.csdn.net/StriverLi/article/details/52984066
- python之路--反射
一 . isinstance, type, issubclass isinstance 可以判断该对象是否是XXX家族体系中的(只能往上判断) class Base: pass class Foo(B ...
- Python魔法方法(magic method)细解几个常用魔法方法(下)
接上文,再介绍最后几个常用的魔法方法. 关于__dict__: 先上个例子: class Test(object): fly = True def __init__(self, age): self. ...
- Spring 的java 配置方式
Java配置是Spring4.x推荐的配置方式,可以完全替代xml配置. 1.1@Configuration 和 @Bean Spring的Java配置方式是通过 @Configuration 和 @ ...
- python学习笔记(7)--循环语句
循环语句如下: for i in range(start, end): //注意 前闭后开 coding for i in range(m,n,k): coding for c in s: codin ...
- Dreamweaver怎样用Edge Web Fonts功能
https://jingyan.baidu.com/article/37bce2beb3af6f1002f3a2c9.html
- cuda培训素材
http://www.geforce.cn/hardware/desktop-gpus/geforce-gtx-480/architecture http://cache.baiducontent.c ...
- Spring boot多线程
1.配置线程配置类 package test; import java.util.concurrent.Executor; import org.springframework.aop.interce ...