高性能业务架构解决方案(Keepalive+MySQL)

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

高性能业务架构解决方案(Keepalive+MySQL)

一、 概况

二、 相关理论

三、 架构拓扑

四、 资源规划

五、 实施部署

   5.1初始化配置

   5.2 Mysql主从同步配置

   5.3 配置keepalived实现热备

       5.3.1 Keepalived的安装

       5.3.2 Keepalived的配置

       5.3.3 监测脚本

六、 测试

   6.1 测试主从同步

   6.2 高可用测试

七、注意事项

   7.1 LVS安装注意事项

   7.2 将相关开机自启服务

一、概况

关于MySQL-HA,目前存在多种解决方案,例如heartbeatdrbdmmm、共享存储,但是它们各有优缺点。heartbeatdrbd配置较为复杂,需要自己写脚本才能实现MySQL自动切换,脚步编写对应无编程功底的人来说存在很大的难度;对于mmm,生产环境中很少有人用,且mmm 管理端需要单独运行一台服务器上,要是想实现高可用,就得对mmm管理端做HA,这样无疑又增加了硬件开支;对于共享存储,MySQL数据还是放在本地较为安全,存储设备毕竟存在单点隐患。使用MySQLmaster+keepalived是一种非常好的解决方案,在MySQL-HA环境中,MySQL互为主从关系,这样就保证了两台MySQL数据的一致性,然后用keepalived实现虚拟IP,通过keepalived自带的服务监控功能来实现MySQL障时自动切换。

二、相关理论

keepalived:顾名思义是保持存活,常用来搭建设备的高可用,防止业务核心设备出现单点故障。keepalived基于VRRP协议来实现高可用主要用作realserver的健康检查以及负载均衡主机和backup主机之间的故障漂移。如果将TCP/IP划分为5Keepalived就是一个类似于3~5层交换机制的软件,具有3~5层交换功能,其主要作用是检测web服务器的状态,如果某台web服务器故障,Keepalived将检测到并将其从系统中剔除,当该web服务器工作正常后Keepalived自动将其加入到服务器群中,这些工作全部自动完成,而不需要人工干预,只需要人工修复故障的web服务器即可。

层机理是发送ICMP数据包即PING给某台服务器,如果不,则认为其故障,并从服务器群中剔除层机理是检测TCP端口号状态来判断某台服务器是否故障,如果检测端口存在异常,则从服务器群中剔除层机理是根据用户的设定检查某个服务器应用程序是否正常运行,如果不正常,则从服务器群中剔除。

三、架构拓扑

wKioL1ih0ZmyTYKMAADIaxQj8DA633.png

四、资源规划

主机名称

内网IP

操作系统

SQL-Master

10.10.10.11

Centos 6.5 64

SQL-Backup

10.10.10.12

Centos 6.5 64

VIP

10.10.10.50

\


五、实施部署

5.1初始化配置

getenforce 0关闭SeLinux

修改主机名

防火墙开放22/3306端口

测试网络连通性

更新YUM

1
2
3
mv  /etc/yum .repos.d /CentOS-Base .repo  /etc/yum .repos.d /CentOS-Base .repo.backup
wget -O  /etc/yum .repos.d /CentOS-Base .repo http: //mirrors .aliyun.com /repo/Centos-6 .repo
yum makecache                                         #生成缓存

5.2Mysql主从同步配置

1
2
3
4
yum  install  mysql-server mysql -y
chkconfig mysqld on
service mysqld start
mysqladmin -u root password 51idc

主从均需要修改my.cnf

Mysql-Master的配置文件如下

vim /etc/my.cnf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[mysqld]
datadir= /var/lib/mysql
socket= /var/lib/mysql/mysql .sock
user=mysql
server- id =1                      #mysql-M的id为1,mysql-B的id为2
binlog- do -db=anchnet                  #需要同步是数据库
binlog-ignore-db=mysql                 #不需要同步的数据库
replicate- do -db=anchnet                 #需要记录日志的数据库
replicate-ignore-db=mysql,information_schema
log-bin=mysql-bin
log-slave-updates
sync_binlog=1
auto_increment_offset=1                #自增字段的起始值,mysql-M为1,
auto_increment_increment=2
slave-skip-errors=all
log_bin_trust_function_creators=1
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
[mysqld_safe]
log-error= /var/log/mysqld .log
pid- file = /var/run/mysqld/mysqld .pid

Mysql-Backup需要需要一下,其余与主保持一致

server-id=2

auto_increment_offset=2

查看此时查看mysql-Mastermysql-BackupFilePosition

wKioL1ih1PiBgkLRAADYGTIc5x8831.png

wKioL1ih1W3DQeRwAADV0V4CMSg545.png


Mysql-Master配置如下:

1
2
3
4
5
6
7
service mysqld restart
mysql -uroot -p51idc
use mysql;
insert into mysql.user(Host,User,Password) values( "localhost" , "51idc" ,password( "51idc" ));
grant replication slave on *.* to  '51idc' @ '10.10.10.12'  identified by  '51idc' ;
change master to master_host= '10.10.10.12' , master_user= '51idc' , master_password= '51idc' , master_log_file= 'mysql-bin.000003' , master_log_pos=106;
start slave;

Mysql-Backup配置如下:

1
2
3
4
5
6
7
service mysqld restart
mysql -uroot -p51idc
use mysql;
insert into mysql.user(Host,User,Password) values( "localhost" , "51idc" ,password( "51idc" ));
grant replication slave on *.* to  '51idc' @ '10.10.10.11'  identified by  '51idc' ;
change master to master_host= '10.10.10.11' , master_user= '51idc' , master_password= '51idc' , master_log_file= 'mysql-bin.000003' , master_log_pos=106;
start slave;

查看结果

wKiom1ih1paAIYASAAWyy3TiNJE582.png

5.3 配置keepalived实现热备

5.3.1 Keepalived的安装

masterbackup上面均需要配置

安装开发组环境工具

1
yum groupinstall  "Development tools"  -y

安装相应软件包

1
2
yum  install  openssl-devel popt-devel -y
ln  -s  /usr/src/kernels/2 .6.32-642.1.1.el6.x86_64  /usr/src/linux    #此处要根据实际操作系统最高版本的kernel 为准

如果/usr/src/kernels/下面没文件使用yum 安装 kernel-devel

#下载keepalive

1
2
3
4
wget http: //www .keepalived.org /software/keepalived-1 .2.24. tar .gz
tar  zxvf keepalived-1.2.24. tar .gz
cd  keepalived-1.2.24
. /configure  --with-kernel- dir = /usr/src/kernels/2 .6.32-642.1.1.el6.x86_64

(注意这个步骤要看到以下字样才是正常的)

Use IPVS Framework : Yes

IPVS sync daemon support : Yes

wKiom1ih16PStstNAADFZnQv6qA342.png

1
2
3
4
5
6
7
8
9
make  &&  make  install
cp  /usr/local/etc/rc .d /init .d /keepalived  /etc/rc .d /init .d/
cp  /usr/local/etc/sysconfig/keepalived  /etc/sysconfig/
mkdir  /etc/keepalived
cp  /usr/local/etc/keepalived/keepalived .conf  /etc/keepalived/
cp  /usr/local/sbin/keepalived  /usr/sbin/
chkconfig --add keepalived
chkconfig --level 2345 keepalived on
/etc/init .d /keepalived  start

至此keepalive就已经安装完毕。

5.3.2 Keepalived的配置

vim /etc/keepalived

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
! Configuration File  for  keepalived
global_defs {
    router_id LVS_DEVEL
}
vrrp_script chk_mysql_port {
                 script  "/usr/mysql_check.sh"        #检测脚本
                 interval 2
                 weight 2
}
vrrp_instance VI_1 {
         state BACKUP                                #mysql-M与mysql-B保持均为BACKUP
         interface eth1                              #网卡接口
         virtual_router_id 77                        #router id保持一直
         priority 100                                #优先级,mysql-B数值小于100
         advert_int 1
         authentication {
                      auth_type PASS
                      auth_pass 51idc
         }
         track_script {
                 chk_mysql_port
         }
         virtual_ipaddress {
              10.10.10.50                            #VIP地址
         }
}
 
Mysql-B配置修改优先级即可
priority 90
Service keepalived restart

测试wKioL1ih2JDBooQGAAQecQc1ESQ266.png

wKioL1ih2afw-LnZAAPz1rNultg558.png

测试VIP连通性


wKiom1ih2WCCkZL7AALFj3MJ-kw482.png

5.3.2 Keepalived的配置

vim /usr/mysql_check.sh

1
2
3
4
5
6
7
8
#!/bin/sh
PATH= /usr/sbin : /usr/bin :$PATH
export  PATH
STAT=` netstat  -ant| grep  LISTEN| egrep  "0.0.0.0:3306" | wc  -l`
if  [ $STAT - eq  0 ]; then
       /etc/init .d /keepalived  stop
       exit
fi

六、测试

6.1 测试主从同步

主服务器创建数据库

wKiom1ih2hSyfrJUAAJY-L79nYY277.png

查看slave

wKioL1ih2nrQyN9FAAJotfApZag203.png

测试主从同步已经成功。

6.2 高可用测试

停止mysql-Mkeepalived

wKiom1ih2uSQbOhtAAP3qPU2opw396.png

查看VIP10.10.10.50已经迁移至mysql-B

wKiom1ih2zvRPcoYAAQgk7IGeno710.png停止mysql-M上的mysql

wKioL1ih24fRd8AlAASVSuudF_Q471.pngVIP已经迁移到mysql-B

wKioL1ih28Xyryf_AAQ791mw81M582.png

七、注意事项

7.1 LVS安装注意事项

ln -s /usr/src/kernels/2.6.32-642.1.1.el6.x86_64 /usr/src/linux   #此处要根据实际操作系统最高版本的kernel 为准

./configure --with-kernel-dir=/usr/src/kernels/2.6.32-642.1.1.el6.x86_64

(注意这个步骤要看到以下字样才是正常的)

Use IPVS Framework : Yes

IPVS sync daemon support : Yes

wKiom1ih3DOy3qmoAAER-NWd5pI041.png

7.2 将相关开机自启服务

开机自启服务

1
2
chkconfig mysqld on
chkconfig keepalived on

开机自启脚本

wKioL1ih3JzgiP4QAAGiUwsvIBM878.png










本文转自 KaliArch 51CTO博客,原文链接:http://blog.51cto.com/kaliarch/1897474,如需转载请自行联系原作者
相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
打赏
0
0
0
0
234
分享
相关文章
MySQL进阶突击系列(03) MySQL架构原理solo九魂17环连问 | 给大厂面试官的一封信
本文介绍了MySQL架构原理、存储引擎和索引的相关知识点,涵盖查询和更新SQL的执行过程、MySQL各组件的作用、存储引擎的类型及特性、索引的建立和使用原则,以及二叉树、平衡二叉树和B树的区别。通过这些内容,帮助读者深入了解MySQL的工作机制,提高数据库管理和优化能力。
Flink基于Paimon的实时湖仓解决方案的演进
本文整理自阿里云智能集团苏轩楠老师在Flink Forward Asia 2024论坛的分享,涵盖流式湖仓架构的背景介绍、技术演进和未来发展规划。背景部分介绍了ODS、DWD、DWS三层数据架构及关键组件Flink与Paimon的作用;技术演进讨论了全量与增量数据处理优化、宽表构建及Compaction操作的改进;发展规划则展望了Range Partition、Materialized Table等新功能的应用前景。通过这些优化,系统不仅简化了复杂度,还提升了实时与离线处理的灵活性和效率。
358 3
Flink基于Paimon的实时湖仓解决方案的演进
数据无界、湖仓无界, Apache Doris 湖仓一体解决方案全面解读(上篇)
湖仓一体架构融合了数据湖的低成本、高扩展性,以及数据仓库的高性能、强数据治理能力,高效应对大数据时代的挑战。为助力企业实现湖仓一体的建设,Apache Doris 提出了数据无界和湖仓无界核心理念,并结合自身特性,助力企业加速从 0 到 1 构建湖仓体系,降低转型过程中的风险和成本。本文将对湖仓一体演进及 Apache Doris 湖仓一体方案进行介绍。
数据无界、湖仓无界, Apache Doris 湖仓一体解决方案全面解读(上篇)
MySQL的架构与SQL语句执行过程
MySQL架构分为Server层和存储引擎层,具有高度灵活性和可扩展性。Server层包括连接器、查询缓存(MySQL 8.0已移除)、分析器、优化器和执行器,负责处理SQL语句;存储引擎层负责数据的存储和读取,常见引擎有InnoDB、MyISAM和Memory。SQL执行过程涉及连接、解析、优化、执行和结果返回等步骤,本文详细讲解了一条SQL语句的完整执行过程。
36 3
MySQL原理简介—2.InnoDB架构原理和执行流程
本文介绍了MySQL中更新语句的执行流程及其背后的机制,主要包括: 1. **更新语句的执行流程**:从SQL解析到执行器调用InnoDB存储引擎接口。 2. **Buffer Pool缓冲池**:缓存磁盘数据,减少磁盘I/O。 3. **Undo日志**:记录更新前的数据,支持事务回滚。 4. **Redo日志**:确保事务持久性,防止宕机导致的数据丢失。 5. **Binlog日志**:记录逻辑操作,用于数据恢复和主从复制。 6. **事务提交机制**:包括redo日志和binlog日志的刷盘策略,确保数据一致性。 7. **后台IO线程**:将内存中的脏数据异步刷入磁盘。
Flink基于Paimon的实时湖仓解决方案的演进
Flink基于Paimon的实时湖仓解决方案的演进
云卓越架构:稳定性支柱整体解决方案综述
阿里云卓越架构聚焦于五大支柱,其中稳定性是关键。常见的云上稳定性风险包括架构单点、容灾设计不足和容量规划不合理等。为提升稳定性,需从架构设计时考虑容灾与容错、实施变更时遵循“三板斧”原则(灰度发布、可观测性和可回滚性),并确保快速响应和恢复能力。此外,通过客观度量、主观评估和巡检等方式识别风险,并进行专项治理。识货APP作为成功案例,通过优化容器化改造、统一发布体系、告警系统和扩缩容机制,实现了99.8%的高可用率,大幅提升了业务稳定性。
湖仓融合:MaxComputee与Hologres基于OpenLake的湖上解决方案
本次主题探讨湖仓融合:MaxCompute与Hologres基于OpenLake的湖上解决方案。首先从数据湖和数据仓库的历史及业界解决方案出发,分析湖仓融合的两种思路;接着针对国内问题,介绍阿里云如何通过MaxCompute和Hologres解决湖仓融合中的挑战,特别是在非结构化数据处理方面的能力。最后,重点讲解Object Table为湖仓增添了SQL生态的非结构化数据处理能力,提升数据处理效率和安全性,使用户能够在云端灵活处理各类数据。
构建全天候自动化智能导购助手:从部署者的视角审视Multi-Agent架构解决方案
在构建基于多代理系统(Multi-Agent System, MAS)的智能导购助手过程中,作为部署者,我体验到了从初步接触到深入理解再到实际应用的一系列步骤。整个部署过程得到了充分的引导和支持,文档详尽全面,使得部署顺利完成,未遇到明显的报错或异常情况。尽管初次尝试时对某些复杂配置环节需反复确认,但整体流程顺畅。
关于 Kafka 高性能架构,这篇说得最全面,建议收藏!
Kafka 是一个高吞吐量、高性能的消息中间件,关于 Kafka 高性能背后的实现,是大厂面试高频问题。本篇全面详解 Kafka 高性能背后的实现。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
关于 Kafka 高性能架构,这篇说得最全面,建议收藏!

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等