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

简介:

配置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




相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
9月前
|
缓存 负载均衡 监控
135_负载均衡:Redis缓存 - 提高缓存命中率的配置与最佳实践
在现代大型语言模型(LLM)部署架构中,缓存系统扮演着至关重要的角色。随着LLM应用规模的不断扩大和用户需求的持续增长,如何构建高效、可靠的缓存架构成为系统性能优化的核心挑战。Redis作为业界领先的内存数据库,因其高性能、丰富的数据结构和灵活的配置选项,已成为LLM部署中首选的缓存解决方案。
886 25
|
关系型数据库 MySQL Java
【YashanDB知识库】原生mysql驱动配置连接崖山数据库
【YashanDB知识库】原生mysql驱动配置连接崖山数据库
【YashanDB知识库】原生mysql驱动配置连接崖山数据库
|
10月前
|
Ubuntu 安全 关系型数据库
安装与配置MySQL 8 on Ubuntu,包括权限授予、数据库备份及远程连接指南
以上步骤提供了在Ubuntu上从头开始设置、配置、授权、备份及恢复一个基础但完整的MySQL环境所需知识点。
1121 7
|
10月前
|
SQL 监控 关系型数据库
查寻MySQL或SQL Server的连接数,并配置超时时间和最大连接量
以上步骤提供了直观、实用且易于理解且执行的指导方针来监管和优化数据库服务器配置。务必记得,在做任何重要变更前备份相关配置文件,并确保理解每个参数对系统性能可能产生影响后再做出调节。
879 11
|
Ubuntu 关系型数据库 MySQL
在Ubuntu 22.04上配置和安装MySQL
以上就是在Ubuntu 22.04上配置和安装MySQL的步骤。这个过程可能看起来有点复杂,但只要按照步骤一步步来,你会发现其实并不难。记住,任何时候都不要急于求成,耐心是解决问题的关键。
1572 31
|
关系型数据库 MySQL Java
安装和配置JDK、Tomcat、MySQL环境,以及如何在Linux下更改后端端口。
遵循这些步骤,你可以顺利完成JDK、Tomcat、MySQL环境的安装和配置,并在Linux下更改后端端口。祝你顺利!
741 11
|
关系型数据库 MySQL Linux
CentOS 7系统下详细安装MySQL 5.7的步骤:包括密码配置、字符集配置、远程连接配置
以上就是在CentOS 7系统下安装MySQL 5.7的详细步骤。希望这个指南能帮助你顺利完成安装。
3375 26
|
存储 Oracle 关系型数据库
MySQL 8.4 配置SSL组复制(八个步骤)
MySQL 8.4 配置SSL组复制(八个步骤)
1020 0
|
10月前
|
缓存 关系型数据库 BI
使用MYSQL Report分析数据库性能(下)
使用MYSQL Report分析数据库性能
593 158
|
10月前
|
关系型数据库 MySQL 数据库
自建数据库如何迁移至RDS MySQL实例
数据库迁移是一项复杂且耗时的工程,需考虑数据安全、完整性及业务中断影响。使用阿里云数据传输服务DTS,可快速、平滑完成迁移任务,将应用停机时间降至分钟级。您还可通过全量备份自建数据库并恢复至RDS MySQL实例,实现间接迁移上云。

推荐镜像

更多