构建MySQL+DRBD+Keepalived高性能架构

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介:

前言* DRBD(DistributedReplicatedBlockDevice)是一个基于块设备级别在远程服务器直接同步和镜像数据的开源软件,类似于RAID1数据镜像,通常配合keepalived、heartbeat等HA软件来实现高可用性。这里简单记录仅供参考。

一、实施环境

1
2
3
4
5
系统版本:CentOS  5.8
DRBD版本: drbd- 8.3 . 15
Keepalived:keepalived- 1.1 . 15
Master: 192.168 . 149.128
Backup: 192.168 . 149.129

二、初始化配置

1)   在128、129两台服务器/etc/hosts里面都添加如下配置:

1
2
192.168 . 149.128   node1
192.168 . 149.129   node2

2)   优化系统kernel参数,直接上sysctl.conf配置如下:

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
net.ipv4.ip_forward =  0
net.ipv4.conf. default .rp_filter =  1
net.ipv4.conf. default .accept_source_route =  0
kernel.sysrq =  0
kernel.core_uses_pid =  1
net.ipv4.tcp_syncookies =  1
kernel.msgmnb =  65536
kernel.msgmax =  65536
kernel.shmmax =  68719476736
kernel.shmall =  4294967296
net.ipv4.tcp_max_tw_buckets =  10000
net.ipv4.tcp_sack =  1
net.ipv4.tcp_window_scaling =  1
net.ipv4.tcp_rmem =  4096         87380    4194304
net.ipv4.tcp_wmem =  4096         16384    4194304
net.core.wmem_default =  8388608
net.core.rmem_default =  8388608
net.core.rmem_max =  16777216
net.core.wmem_max =  16777216
net.core.netdev_max_backlog =  262144
net.core.somaxconn =  262144
net.ipv4.tcp_max_orphans =  3276800
net.ipv4.tcp_max_syn_backlog =  262144
net.ipv4.tcp_timestamps =  0
net.ipv4.tcp_synack_retries =  1
net.ipv4.tcp_syn_retries =  1
net.ipv4.tcp_tw_recycle =  1
net.ipv4.tcp_tw_reuse =  1
net.ipv4.tcp_mem =  94500000  915000000  927000000
net.ipv4.tcp_fin_timeout =  1
net.ipv4.tcp_keepalive_time =  30
net.ipv4.ip_local_port_range =  1024     65530
net.ipv4.icmp_echo_ignore_all =  1

3)   两台服务器分别添加一块设备,用于DRBD主设备存储,我这里为/dev/sdb 30G硬盘;

wKioL1Np_7aTusfaAAKJoxAzkU4740.jpg

执行如下命令:

1
mkfs.ext3 /dev/sdb ;dd  if =/dev/zero of=/dev/sdb bs=1M count= 1 ;sync

三、DRBD安装配置

1
yum -y install drbd83* kmod-drbd83 ; modprobe  drbd

安装完成并加载drbd模块后,vi修改/etc/drbd.conf配置文件,本文内容如下:

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
global {
     usage-count yes;
}
common {
syncer { rate 100M; }
}
resource r0 {
  protocol C;
  startup {
                                                                                                                                                                                                                                                                                                                                                                                                                     
  }
  disk {
  on-io-error detach;
  #size 1G;
  }
  net {
  }
  on node1 {
  device /dev/drbd0;
  disk /dev/sdb;
  address  192.168 . 149.128 : 7898 ;
  meta-disk  internal ;
  }
  on node2 {
  device /dev/drbd0;
  disk /dev/sdb;
  address  192.168 . 149.129 : 7898 ;
  meta-disk  internal ;
  }
}

配置修改完毕后执行如下命令初始化:

1
drbdadm create-md  r0  ;/etc/init.d/drbd restart ;/etc/init.d/status

如下图:

wKiom1NqA0_gZAfCAATMZZdgNLI315.jpg

以上步骤,需要在两台服务器都执行,两台都配置完毕后,在node2从上面执行如下命令:/etc/init.d/drbd status 看到如下信息,表示目前两台都为从,我们需要设置node1为master,命令如下:

1
2
3
drbdadm -- --overwrite-data-of-peer primary all
mkfs.ext3 /dev/drbd0
mkdir  /app  ;mount /dev/drbd0  /app

自此,DRBD配置完毕,我们可以往/app目录写入任何东西,当master出现宕机或者其他故障,手动切换到backup,数据没有任何丢失,相当于两台服务器做网络RAID1。

四、Keepalived配置

1
2
3
wget http: //www.keepalived.org/software/keepalived-1.1.15.tar.gz; tar -xzvf keepalived-1.1.15.tar.gz ;cd keepalived-1.1.15 ; ./configure ; make ;make install
DIR=/usr/local/ ;cp $DIR/etc/rc.d/init.d/keepalived  /etc/rc.d/init.d/ ; cp $DIR/etc/sysconfig/keepalived /etc/sysconfig/ ;
mkdir -p /etc/keepalived ; cp $DIR/sbin/keepalived /usr/sbin/

   两台服务器均安装keepalived,并进行配置,首先在node1(master)上配置,keepalived.conf内容如下:

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
! Configuration File  for  keepalived
global_defs {
    router_id LVS_DEVEL
}
vrrp_script check_mysql {
         script  "/data/sh/check_mysql.sh"
         interval  5
         }
vrrp_instance VI_1 {
     state MASTER
     interface  eth0
     virtual_router_id  52
     priority  100
     advert_int  1
     authentication {
         auth_type PASS
         auth_pass  1111
     }
     virtual_ipaddress {
         192.168 . 149.100
          }
         track_script {
         check_mysql
         }
}

 然后创建check_mysql.sh检测脚本,内容如下:

1
2
3
4
5
6
7
8
#!/bin/sh
A=`ps -C mysqld --no-header |wc -l`
if
[ $A -eq  0  ];then
/bin/umount /app/
drbdadm secondary r0
killall keepalived
fi

添加node2(backup)上配置,keepalived.conf内容如下:

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
! Configuration File  for  keepalived
global_defs {
    router_id LVS_DEVEL
}
vrrp_sync_group VI{
group {
       VI_1
}
notify_master /data/sh/master.sh
notify_backup /data/sh/backup.sh
}
vrrp_instance VI_1 {
     state BACKUP
     interface  eth0
     virtual_router_id  52
     priority  90
     advert_int  1
     authentication {
         auth_type PASS
         auth_pass  1111
     }
     virtual_ipaddress {
         192.168 . 149.100
          }
}

  创建master.sh检测脚本,内容如下:

1
2
3
4
#!/bin/bash
drbdadm primary r0
/bin/mount /dev/drbd0 /app/
/etc/init.d/mysqld start

  创建backup.sh检测脚本,内容如下:

1
2
3
4
#!/bin/bash
/etc/init.d/mysqld stop
/bin/umount /dev/drbd0
drbdadm secondary r0

  发生脑裂恢复步骤如下:

1
2
3
4
5
Master执行命令:
drbdadm  secondary r0
drbdadm  --  --discard-my-data  connect r0
Backup上执行命令:
drbdadm  connect r0
本文转自 wgkgood 51CTO博客,原文链接:http://blog.51cto.com/wgkgood/1408056
相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
9天前
|
监控 关系型数据库 MySQL
深入了解MySQL主从复制:构建高效稳定的数据同步架构
深入了解MySQL主从复制:构建高效稳定的数据同步架构
45 1
|
1月前
|
NoSQL 关系型数据库 MySQL
微服务架构下的数据库选择:MySQL、PostgreSQL 还是 NoSQL?
在微服务架构中,数据库的选择至关重要。不同类型的数据库适用于不同的需求和场景。在本文章中,我们将深入探讨传统的关系型数据库(如 MySQL 和 PostgreSQL)与现代 NoSQL 数据库的优劣势,并分析在微服务架构下的最佳实践。
|
6天前
|
机器学习/深度学习 存储 人工智能
用60%成本干80%的事,DeepSeek分享沉淀多年的高性能深度学习架构
【10月更文挑战第2天】近年来,深度学习(DL)与大型语言模型(LLMs)的发展推动了AI的进步,但也带来了计算资源的极大需求。为此,DeepSeek团队提出了Fire-Flyer AI-HPC架构,通过创新的软硬件协同设计,利用10,000个PCIe A100 GPU,实现了高性能且低成本的深度学习训练。相比NVIDIA的DGX-A100,其成本减半,能耗降低40%,并在网络设计、通信优化、并行计算和文件系统等方面进行了全面优化,确保系统的高效与稳定。[论文地址](https://arxiv.org/pdf/2408.14158)
21 4
|
1月前
|
机器学习/深度学习 测试技术 数据处理
KAN专家混合模型在高性能时间序列预测中的应用:RMoK模型架构探析与Python代码实验
Kolmogorov-Arnold网络(KAN)作为一种多层感知器(MLP)的替代方案,为深度学习领域带来新可能。尽管初期测试显示KAN在时间序列预测中的表现不佳,近期提出的可逆KAN混合模型(RMoK)显著提升了其性能。RMoK结合了Wav-KAN、JacobiKAN和TaylorKAN等多种专家层,通过门控网络动态选择最适合的专家层,从而灵活应对各种时间序列模式。实验结果显示,RMoK在多个数据集上表现出色,尤其是在长期预测任务中。未来研究将进一步探索RMoK在不同领域的应用潜力及其与其他先进技术的结合。
69 4
|
2月前
|
SQL 关系型数据库 MySQL
(二十五)MySQL主从实践篇:超详细版读写分离、双主热备架构搭建教学
在上篇《主从原理篇》中,基本上把主从复制原理、主从架构模式、数据同步方式、复制技术优化.....等各类细枝末节讲清楚了,本章则准备真正对聊到的几种主从模式落地实践,但实践的内容通常比较枯燥乏味,因为就是调整各种配置、设置各种参数等步骤。
342 2
|
3月前
|
SQL 存储 关系型数据库
(一)全解MySQL之架构篇:自顶向下深入剖析MySQL整体架构!
无论你是前端还是后端,只要是一个合格的开发者,对于MySQL这个名词相信都不陌生,MySQL逐渐成为了最受欢迎的关系型数据库,无论你是大前端,亦或是Java、Go、Python、C/C++、PHP....等这些语言的程序员,对于MySQL是必然要掌握的核心技术之一,程序员不能没有MySQL,就像西方不能失去耶路撒冷一般。
544 0
|
2月前
|
消息中间件 缓存 Kafka
图解Kafka:架构设计、消息可靠、数据持久、高性能背后的底层原理
【8月更文挑战第15天】在构建高吞吐量和高可靠性的消息系统时,Apache Kafka 成为了众多开发者和企业的首选。其独特的架构设计、消息可靠传输机制、数据持久化策略以及高性能实现方式,使得 Kafka 能够在分布式系统中大放异彩。本文将通过图解的方式,深入解析 Kafka 的这些核心特性,帮助读者更好地理解和应用这一强大的消息中间件。
109 0
|
SQL 缓存 NoSQL
MySQL架构与SQL的执行流程_2
MySQL架构与SQL的执行流程_2
144 0
MySQL架构与SQL的执行流程_2
|
SQL 缓存 网络协议
MySQL架构与SQL的执行流程_1
MySQL架构与SQL的执行流程_1
139 0
MySQL架构与SQL的执行流程_1
|
4天前
|
缓存 算法 关系型数据库
Mysql(3)—数据库相关概念及工作原理
数据库是一个以某种有组织的方式存储的数据集合。它通常包括一个或多个不同的主题领域或用途的数据表。
23 5
Mysql(3)—数据库相关概念及工作原理