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

本文涉及的产品
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
相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
5天前
|
消息中间件 监控 API
构建微服务架构:从理论到实践的全面指南
本文将深入探讨微服务架构的设计原则、实施步骤和面临的挑战。与传统的单体架构相比,微服务通过其独立性、可伸缩性和灵活性,为现代应用开发提供了新的视角。文章将介绍如何从零开始规划和部署一个微服务系统,包括选择合适的技术栈、处理数据一致性问题以及实现服务间通信。此外,我们还将讨论在迁移至微服务架构过程中可能遇到的技术和组织挑战,以及如何克服这些难题以实现顺利过渡。
|
3天前
|
监控 API 数据库
构建高效后端:微服务架构的实战指南
【6月更文挑战第14天】在数字化浪潮下,后端开发面临着前所未有的挑战和机遇。本文将深入探讨微服务架构的设计理念、实现方式及其在现代软件开发中的重要性,为读者提供一份全面而实用的微服务实战手册。
14 2
|
4天前
|
运维 Cloud Native 开发者
云原生技术:构建未来软件架构的基石
【6月更文挑战第13天】随着云计算的不断演进,云原生技术已成为推动现代软件开发、部署和运维的关键力量。本文深入探讨了云原生的核心概念、优势以及它在企业中的应用,旨在揭示如何借助云原生技术实现更高效、灵活和可靠的软件解决方案。
75 2
|
7天前
|
消息中间件 缓存 负载均衡
构建高效可靠的后端系统架构
本文将探讨如何构建一种高效可靠的后端系统架构,以满足不断增长的技术需求和用户期望。我们将重点介绍架构设计原则、分布式系统、容错机制和性能优化等关键概念,并提供实际案例和最佳实践,帮助开发者在后端开发中取得成功。
|
11天前
|
弹性计算 运维 监控
构建高效可扩展的后端服务架构
在当今数字化时代,构建高效可扩展的后端服务架构是企业成功的关键之一。本文将探讨如何设计和实施一种可靠、高性能的后端架构,以满足不断增长的用户需求和复杂的业务逻辑。通过采用合适的技术栈、优化数据库设计、实现弹性伸缩和监控等关键策略,我们能够打造出稳定可靠、高效可扩展的后端服务系统。
|
12天前
|
运维 Cloud Native 持续交付
构建未来:云原生架构在企业数字化转型中的关键作用
【5月更文挑战第37天】 随着企业加速迈向数字化,云原生架构已成为实现敏捷性、可扩展性和创新的基石。本文将探讨云原生技术如何赋能组织快速响应市场变化,优化资源利用,并最终促进业务增长。通过深入分析云原生的核心组件,如容器化、微服务和持续集成/持续部署(CI/CD),以及它们如何协同工作以提高开发效率和运维灵活性,我们将揭示企业如何利用这些技术来构建一个更加灵活和弹性的IT环境。
|
13天前
|
运维 Kubernetes 持续交付
构建高效后端:微服务架构的设计与实践
本文深入探讨了微服务架构的设计原则和实践方法,旨在为读者提供一套完整的微服务开发指南。通过分析微服务的核心优势,如灵活性、可扩展性与独立部署能力,文章详细阐述了如何有效规划服务边界、选择合适的通信协议以及确保服务的高可用性和弹性。此外,还讨论了在微服务实施过程中可能遇到的挑战,包括数据一致性和服务发现机制,以及如何通过现代技术栈和最佳实践来克服这些挑战。
|
5天前
|
监控 Cloud Native 开发者
云原生技术浪潮下的微服务架构实践
云原生技术正引领着现代软件开发的潮流,其中微服务架构作为其核心理念之一,为复杂应用提供了灵活、可扩展的解决方案。本文将探讨在云原生环境下实施微服务架构的策略和挑战,并结合实际案例分析微服务设计的最佳实践,旨在为开发者提供一套可行的微服务部署与管理指南。
|
1天前
|
机器学习/深度学习 设计模式 人工智能
人工智能和机器学习技术来优化微服务架构
人工智能和机器学习技术来优化微服务架构
7 1
|
1天前
|
缓存 负载均衡 安全
探索微服务架构中的API网关模式
【6月更文挑战第16天】在微服务架构的海洋中,API网关扮演着灯塔的角色,指引着服务的发现与路由。本文将深入探讨API网关的设计原则、关键功能以及在现代后端系统中的应用实践。我们将一起航行于微服务的世界,揭开API网关如何提升系统的整体性能和安全性的神秘面纱。

热门文章

最新文章