mysql dba系统学习(19)配置mysql+lvs+keeplived实现Mysql读操作的负载均衡

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介:

配置mysql+lvs+keeplived实现Mysql读操作的负载均衡

环境:

test1192.168.46.131master

test2192.168.46.130slave备份test库

test3调度器

1、安装与配置Keepalived

首先在节点test1、test2上安装Keepalived软件,软件安装非常简单。

1
2
3
4
5
6
7
8
9
10
11
12
13
[root@test1 ]# yum install -y openssl-devel
[root@test1 ~]# wget  http: //www.keepalived.org/software/keepalived-1.2.1.tar.gz
[root@test1 ~]# tar zxvf keepalived-1.2.1.tar.gz
[root@test1 ~]# cd keepalived-1.2.1
[root@test1 keepalived-1.2.1]# ./configure --prefix=/usr/local/keepalived
[root@test1 keepalived-1.2.1]# make && make install
[root@test1 ~]# cp /usr/local/keepalived/etc/sysconfig/keepalived  /etc/sysconfig/
[root@test1 ~]# cp /usr/local/keepalived/etc/rc.d/init.d/keepalived  /etc/init.d/
[root@test1 ~]# mkdir  /etc/keepalived
[root@test1 ~]# cp  /usr/local/keepalived/etc/keepalived  /keepalived.conf  /etc/keepalived/
[root@test1 ~]# ln -s  /usr/local/keepalived/sbin/keepalived  /usr/sbin/
[root@test1 ~]# service keepalived start
Starting keepalived:                                       [  OK  ]

Keepalived的配置也非常简单,仅仅需要一个配置文件即可完成HAclusterlvs服务节点监控功能,在通过Keepalived搭建高可用的LVS集群实例中,主、备DirectorServer都需要安装Keepalived软件,安装成功后,默认的配置文件路径为/etc/Keepalived/Keepalived.conf

一个完整的keepalived配置文件,有三个部分组成,分别是全局定义部分、vrrp实例定义部分以及虚拟服务器定义部分,配置好的文件内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
! Configuration File  for  keepalived
global_defs {
notification_email {
root@localhost
}
notification_email_from  root@localhost
smtp_server  192.168 . 46.131
smtp_connect_timeout  30
router_id LVS_MASTER
}
vrrp_instance VI_1 {
state MASTER       //备库为BACKUP
interface  eth2      //通过的网卡
virtual_router_id  51
priority  100       //备库为99
advert_int  1
authentication {
auth_type PASS
auth_pass  1111
}
virtual_ipaddress {
192.168 . 46.100
}
}
virtual_server  192.168 . 46.100  3306  {
delay_loop  30
lb_algo rr
lb_kind DR
persistence_timeout  50
protocol TCP
real_server  192.168 . 46.131  3306  {
weight  1
MISC_CHECK{
misc_path  "/etc/keepalived/check_slave.pl 192.168.46.131"
misc_dynamic
}
}
real_server  192.168 . 46.130  3306  {
weight  1
MISC_CHECK{
misc_path  "/etc/keepalived/check_slave.pl 192.168.46.130"
misc_dynamic
}
}
}
}



2,check_slave.pl检测mysql

check_slave.pl是用perl写的一个检测脚本,定时在slave机器上执行showslavestatus\G命令,检查Slave_IO_RunningSlave_SQL_RunningSeconds_Behind_Master三个值。Slave_IO_RunningSlave_SQL_Running有一个值为No就自动从LVSrealserver列表去掉,不再对外提供服务,如果这两个值为Yes检查Seconds_Behind_Master大于设定的值也会自动从对外服务机器列表里面去掉。三个值同时满足时又会被加入到服务列表,对外提供服务。这个检测脚本内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#!/usr/bin/perl -w
use  DBI;
use  DBD::mysql;
# CONFIG VARIABLES
$SBM  = 120;
$db  "test" ;
$host  $ARGV [0];
$port  = 3306;
$user  "root" ;
$pw  "mysql" ;
# SQL query
$query  "show slave status" ;
$dbh  = DBI-> connect ( "DBI:mysql:$db:$host:$port" $user $pw , {  RaiseError  => 0, PrintError  => 0 });
if  (! defined ( $dbh )) {
exit  1;
}
$sqlQuery  $dbh ->prepare( $query );
$sqlQuery ->execute;
$Slave_IO_Running  =   "" ;
$Slave_SQL_Running  "" ;
$Seconds_Behind_Master  "" ;
while  ( my  $ref  $sqlQuery ->fetchrow_hashref()) {
$Slave_IO_Running  $ref ->{ 'Slave_IO_Running' };
$Slave_SQL_Running  $ref ->{ 'Slave_SQL_Running' };
$Seconds_Behind_Master  $ref ->{ 'Seconds_Behind_Master' };
}
$sqlQuery ->finish;
$dbh ->disconnect();
if  $Slave_IO_Running  eq  "No"  ||  $Slave_SQL_Running  eq  "No"  ) {
exit  1;
else  {
if  $Seconds_Behind_Master  $SBM  ) {
exit  1;
else  {
exit  0;
}
}


3、安装配置lvs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
[root@test1 ~]# yum install -y ipvsadm
[root@test1 ~]# lsmod  |grep ip_vs
[root@test1 ~]# modprobe  ip_vs
[root@test1 ~]# lsmod  |grep ip_vs
ip_vs                  122241   0
这里不能靠进程来判断是不是加载了ip_vs模块,因为这里就是一个命令,没有产生进程。
vim /etc/init.d/lvsdrrip
#!/bin/bash
#DR server
VIP= 192.168 . 46.100
case  "$1"  in
start)
echo  "start LVS of DR"
/sbin/ifconfig lo: 0  $VIP broadcast $VIP netmask  255.255 . 255.255  up
/sbin/route add -host $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
;;
stop)
echo  "stop LVS of DR"
/sbin/ifconfig lo: 0  down
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  "Usage:$0 {start|stop}"
esac
exit
1


4,test1和test2上安装mysql服务,test1为master,test2为slave

参考http://wolfword.blog.51cto.com/4892126/1290938


5,test3调度器安装lvsdr

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
[root@test3 ~]# vim  /etc/init.d/lvsdr
#!/bin/bash
VIP= 192.168 . 46.100
RIP1= 192.168 . 46.131
RIP2= 192.168 . 46.130
case  "$1"  in
start)
echo  "start LVS of DirectorServer DR"
/sbin/iptables -F
/sbin/ipvsadm -C
/sbin/ifconfig eth0: 0  $VIP broadcast $VIP  netmask  255.255 . 255.0   up
/sbin/ipvsadm  -A -t $VIP: 3306   -s rr
/sbin/ipvsadm  -a -t $VIP: 3306   -r  $RIP1 -g
/sbin/ipvsadm  -a -t $VIP: 3306   -r  $RIP2 -g
/sbin/ipvsadm
;;
stop)
echo  "stop  LVS of DirectorServer DR"
echo  "0"  >/proc/sys/net/ipv4/ip_forward
/sbin/ipvsadm -C
/sbin/ifconfig eth0: 0  down
;;
*)
[root@test3  ~]#chown +x /etc/init.d/lvsdr




本文转自陈仲阳0 51CTO博客,原文链接:http://blog.51cto.com/wolfword/1291868




相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2月前
|
弹性计算 负载均衡 网络协议
配置SLB监听器
配置SLB监听器
155 63
|
2月前
|
域名解析 弹性计算 监控
slb测试基本配置检查
slb测试基本配置检查
115 60
|
2月前
|
SQL 存储 关系型数据库
【MySQL基础篇】全面学习总结SQL语法、DataGrip安装教程
本文详细介绍了MySQL中的SQL语法,包括数据定义(DDL)、数据操作(DML)、数据查询(DQL)和数据控制(DCL)四个主要部分。内容涵盖了创建、修改和删除数据库、表以及表字段的操作,以及通过图形化工具DataGrip进行数据库管理和查询。此外,还讲解了数据的增、删、改、查操作,以及查询语句的条件、聚合函数、分组、排序和分页等知识点。
【MySQL基础篇】全面学习总结SQL语法、DataGrip安装教程
|
2月前
|
弹性计算 负载均衡 监控
slb配置健康检查
slb配置健康检查
46 5
|
2月前
|
监控 负载均衡 容灾
slb测试配置
slb测试配置
47 5
|
2月前
|
负载均衡 前端开发 应用服务中间件
负载均衡指南:Nginx与HAProxy的配置与优化
负载均衡指南:Nginx与HAProxy的配置与优化
137 3
|
负载均衡 应用服务中间件 Linux
Nginx系列教程(14) - LVS+KeepAlived+Nginx实现高性能负载均衡集群
Nginx系列教程(14) - LVS+KeepAlived+Nginx实现高性能负载均衡集群
1583 0
|
2月前
|
负载均衡 算法 Linux
LVS+Keepalived:实现高效软负载均衡的利器
本文介绍了如何使用LVS(Linux Virtual Server)和Keepalived搭建高可用负载均衡集群。LVS通过不同调度算法将请求转发给后端服务器,而Keepalived基于VRRP协议实现服务高可用,避免IP单点故障。具体步骤包括环境准备、安装配置ipvsadm和Keepalived、启动服务及测试。文中还详细解释了配置文件中的关键参数,并提供了故障转移测试方法。最后,文章简要对比了软件、硬件和云负载均衡方案的特点,帮助读者选择合适的负载均衡策略。
285 4
|
5月前
|
运维 负载均衡 网络协议
LVS+Keepalived 负载均衡
LVS+Keepalived 负载均衡
119 8
LVS+Keepalived 负载均衡
|
9月前
|
负载均衡 网络协议 算法
LVS 负载均衡部署的三种模式 与搭建dr模式具体步骤
LVS 负载均衡部署的三种模式 与搭建dr模式具体步骤