使用LVS+Keepalived实现Mysql的 负载均衡Web集群系统

本文涉及的产品
RDS AI 助手,专业版
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
简介: 目录 一、概念了解... 3 二、搭建集群... 3 2.1 集群架构设计... 3 2.2 基础准备工作... 3 2.3 配置两台Mysql服务器... 6 2.4 配置主负载服务器... 8 2.5 配置从负载服务器... 13 三、测试集群... 14   使用LVS+Keepalived实现Mysql的 负载均衡Web集群系统 一、概念了解 为了实现一个负载均衡的Web集群系统,综合比较之后,我决定选LVS+Keepalived+Mysql的方式。

图片上传太复杂,文本阅读请见附件


目录


使用LVS+Keepalived实现Mysql的

负载均衡Web集群系统

一、概念了解

为了实现一个负载均衡的Web集群系统,综合比较之后,我决定选LVS+Keepalived+Mysql的方式。在开始正式搭建环境之前我对LVS进行了了解。

LVS是Linux Virtual Server的简称,也就是Linux虚拟服务器,是由章文嵩发起的软件项目,现在已经是linux标准内核的一部分。LVS主要用于服务器集群的负载均衡。它工作在网络层,可以实现高性能,高可用的服务器集群技术。它廉价,可把许多低性能的服务器组合在一起形成一个超级服务器。它易用,配置非常简单,且有多种负载均衡的方法。它稳定可靠,即使在集群的服务器中某台服务器无法正常工作,也不影响整体效果。另外可扩展性也非常好。

使用LVS架设的服务器集群系统有三个部分组成:(1)最前端的负载均衡层,用Load Balancer表示;(2)中间的服务器集群层,用Server Array表示;(3)最底端的数据共享存储层,用Shared Storage表示。在用户看来,所有的内部应用都是透明的,用户只是在使用一个虚拟服务器提供的高性能服务。LVS是四层负载均衡,也就是说建立在OSI模型的第四层——传输层之上,传输层上有我们熟悉的TCP/UDP,LVS支持TCP/UDP的负载均衡。因为LVS是四层负载均衡,因此它相对于其它高层负载均衡的解决办法,比如DNS域名轮流解析、应用层负载的调度、客户端的调度等,它的效率是非常高的。这里我们使用DR模式。

二、搭建集群

2.1 集群架构设计

本次实验基于DR负载均衡模式,虚拟IP(VIP)为192.168.5.200。这里创建四台虚拟机,其中,一台作为作为主负载均衡主机,一台作为备用负载均衡主机,两台提供真正的Mysql服务。集群中使用静态IP,他们的主机名及对应ip如表2.1所示。

主机名

功能

IP

lvs-master

主负载均衡主机

192.168.5.120

lvs-slave

备用负载均衡主机

192.168.5.121

lvs-mysql1

提供Mysql服务

192.168.5.122

lvs-mysql2

提供Mysql服务

192.168.5.123

2.2 基础准备工作

本部分对于四台主机做一些基础配置。

(1)配置IP地址,根据集群架构设计,我们将四台主机的IP分别设置为对应IP,如图2.1,图2.2,图2.3,图2.4所示。

c7b5c3df796311e2693166ebd08434fabf56a73e

图2.1 主机的IP设置

188bcb2015927d39b2c232edb60d4e9f8dbac6fc

图2.2 主机的IP设置

21a606e01ca2227b3b5aece621dcdec2eb6642ae

图2.3 主机的IP设置

b2f523070ac9cb184a4d889c13838cf898e5dba7

图2.4 主机的IP设置

(2)将IP地址与主机名绑定。在/etc/hosts文件中进行修改,如图2.5所示。并使用ping命令进行检查,如图2.6所示。

fead08f98c438dea325a2445cba0b189353a8846

图2.5 绑定IP与主机名

068b6c3ae3dc7afbdc1b29e1f654241cfa6ff2dfc97a8da48123e6c84406881b6220220e1b05a6f0

b3f969db3cd7d381a9a19e69a11690eb70dcccd74cb7a5313a831de427f1541092ff2f963f1960e7

图2.6 验证

3)关闭防火墙。使用命令service iptables stop、chkconfig iptables off将四台主机的防火墙关闭。如图2.7所示。

07b3f0d8b3563fe5cbfb5b7609c7144e04814a09  aa52ef711af1cabaa7c7a20701b30b123dd6d108

5a84b92d289a4f8d3c233ffc8b0c7bcc9156c3c1  90d2db42900b56e1da51bd7bb5357dc7bdd4decc

 

图2.7 关闭防火墙

2.3 配置两台Mysql服务器

(1)安装Mysql,使用命令yum install -y mysql-server mysql mysql-deve,在两台Mysql服务器中安装mysql,如图2.8所示。

241168252741975c880bf4bb62e06d979da1ae1710756e71046d45e929332ceece57e01dca916a75

图2.8 安装mysql




(2)创建数据库及表,添加数据。我们分别在两台Mysql服务器上创建数据库bruce,并在bruce中创建表test,在表test中加入数据。如图2.9所示。



5f974c10d924756a518e34d02b94e10e2bdccefa


图2.9  数据库配置

(3)编辑realserver脚本文件,①进入指定文件夹:cd /etc/init.d/;②创建脚本文件:vi realserver这里我们设置虚拟IP为:192.168.5.200;③保存脚本文件后更改该文件权限:chmod 755 realserver;④开启realserver服务:service realserver start;如图2.10所示

4c4ff0f399ed3801baef974f6904628061f6ebc1fcb125e592462030352dcfb8e06783a268bfdd47


图2.10 编辑realserver脚本文件

2.4 配置主负载服务器

(1) 安装Keepalived相关包,我们使用wget http://www.keepalived.org/software/keepalived-1.2.13.tar.gz、tar -zxvf keepalived-1.2.13.tar.gz、cd keepalived-1.2.13命令下载并解压安装包,如图2.11所示。然后使用./configure --disable-fwmark --prefix=/usr/local/keepalived命令时,却出现了报错,如图2.12所示。

499ec78b8f6b07e768be242db480f85cf034132b

图2.11  下载并解压安装包

d75c851e430707e749d7198f4b5ae6fd570296f7

图2.12  出现了一个错误

过认真研究后。我发现这个错误是因为keepalived相关包没有先被安装而引发的错误,于是在安装keepalived之前,我先安装了ipvsadm、popt-devel、openssl-devel包,如图2.13所示。

ab5c94c92590f893f32627333211e95b2e4737da95a5524e11967707e31ca4a7646bcda7c4ce47a29c14d0100aa009a984c5dde8fc131943cac2db03

 图2.13 通过安装依赖包解决错误

经过以上步骤后,Keepalived可以正常安装,如图2.14所示。

 846335b0d81fa8fec2bbcd7bba7d37e081e97212ab102398642a587184b0684b2cba29f693245138

图2.14 Keepalived安装成功

(2)编辑keepalived.conf配置文件。①进入keepalived.conf所在目录:cd /etc/keepalived;②首先清除掉keepalived原有配置:> keepalived.conf;③重新编辑keepalived配置文件:vi keepalived.conf。在这部分,一开始我就遇到了问题:找不到/etc/keepalived目录,如图2.15所示。

fcb125e592462030352dcfb8e06783a268bfdd47

图2.15 找不到文件夹

我通过find命令查找keepalived.conf文件,最终在目录/home/zmy21751106/

keepalived1.2.13/keepalived/etc/keepalived/keepalived.conf中找到了该文件,然后对其进行了修改,如图2.16所示。

499ec78b8f6b07e768be242db480f85cf034132b79a6bde1f947c28d49fd5540e3c2b31d85ebe2ba

图2.16 查找并修改keepalived.conf文件

(3)启动keepalived.服务。我们使用命令service keepalived start来开启服务,这里我又遇到了服务不识别的问题,尴尬……,如图2.17所示。

ee1f0e7d6a242aed207549d2807eceef1763b397

图2.16 服务不识别

通过浏览大量博客,我发现,在启动keepalived服务时会到/etc/keepalived文件夹在去找配置,所以我尝试将前文/home/zmy21751106/keepalived1.2.13/keepalived/etc/keepalive

ed/keepalived.conf文件连接到新创建的文件夹/etc/keepalived下,如图2.17所示。然后再次开启服务,发现问题没有被解决,还是服务不能被识别的错误。

 

cd9f92222e43b87ea81e5d2b3eb225c564950fe4

 

图2.17 尝试使用连接方式解决问题

后来,我又发现想要启动keepalived还需要将他的启动脚本添加到系统服务、拷贝相关的启动命令,于是,我又操作了一番:

cp /usr/local/keepalived/sbin/keepalived /usr/sbin/

cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/

cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
chkconfig --add keepalived
chkconfig --level 2345 keepalived on

如图2.18所示,这次服务可以正常启动了。使用命令ipvsadm查看集群状态,可以看到集群已经启动成功了,如图2.19所示。

bf5606b810d7ad0af595264f8553a98868e6e5b0

图2.18 解决问题及启动服务

8c198c39e8876175e78eb3cc092c8d827eca4240

图2.19 查看集群状态

2.5 配置从负载服务器

从负载服务器与主负载服务器的配置大致相同,只是在keepalived的配置文件中需要改以下两处:(1)将state由MASTER改为BACKUP;(2)将priority由100改为99,如图2.20所示。

0af5fa3e307048329eca08eabbdf70b9bf30232c

图2.20 负载服务器配置文件

三、测试集群

在测试集群部分,我使用集群之外的一台主机对VIP发起连接请求,然而这一部分并不顺利。当向VIP发起请求时,报错了,显示无法连接到192.168.5.120上,并且VIP也ping不通,但是却能够ping同集群内其他真实IP,如图2.21所示。

图2.21 无法连接到VIP

对于这个问题,首先我考录是Mysql权限方面的问题,于是,我增加了一个open用户,密码为123456以供连接。如图2.22所示。

 

图2.22 Mysql权限开放

经过测试,我发现这样修改之后并没有解决问题。在浏览博客的过程中,我发现配置问价中的网卡写错的话,会跟我有一样的报错,于是我检查了配置文件,发现自己的网卡是eth0,而配置文件里写的是eth1,于是进行了修改,后又重启了keepalived服务。如图2.23所示。

 

图 2.23 修改网卡

 经过以上修正,集群已经可以接收外部请求了,下面我们开始测试。

(1)一个连接。我们通过集群外的一台主机向集群发送数据库连接请求,主负载服务器的状态如图2.24所示,Mysql服务器的状态如图2.25所示。

图2.24 主负载服务器状态

图2.25 Mysql服务器状态

 (2)多个连接。当我们使用多个客户端发起连接请求时,集群总是将连接均匀的分配给Mysql服务器,如图2.26所示,即实现了负载均衡。

图2.26 多个连接

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
目录
相关文章
|
8月前
|
负载均衡 算法 关系型数据库
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
本文聚焦 MySQL 集群架构中的负载均衡算法,阐述其重要性。详细介绍轮询、加权轮询、最少连接、加权最少连接、随机、源地址哈希等常用算法,分析各自优缺点及适用场景。并提供 Java 语言代码实现示例,助力直观理解。文章结构清晰,语言通俗易懂,对理解和应用负载均衡算法具有实用价值和参考价值。
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
|
8月前
|
负载均衡 前端开发 JavaScript
LVS-DR模式、keepalived、Nginx与Tomcat合作,打造动静分离,高效负载均衡与高可用性
为了采用这样的架构,你需要对LVS-DR、Keepalived、Nginx与Tomcat有一定的理解和掌握,同时也需要投入一些时间去研究和配置,但是一旦你把它运行起来,你将会发现,这一切都是值得的。
353 11
|
9月前
|
负载均衡 算法 关系型数据库
大数据新视界--大数据大厂之MySQL数据库课程设计:MySQL集群架构负载均衡故障排除与解决方案
本文深入探讨 MySQL 集群架构负载均衡的常见故障及排除方法。涵盖请求分配不均、节点无法响应、负载均衡器故障等现象,介绍多种负载均衡算法及故障排除步骤,包括检查负载均衡器状态、调整算法、诊断修复节点故障等。还阐述了预防措施与确保系统稳定性的方法,如定期监控维护、备份恢复策略、团队协作与知识管理等。为确保 MySQL 数据库系统高可用性提供全面指导。
|
11月前
|
负载均衡 网络协议 Linux
LVS,软负载均衡
LVS(Linux Virtual Server)是一项广泛应用的负载均衡技术,由章文嵩博士于1998年发起,自Linux 2.4.24版本起成为官方内核的一部分。LVS通过四层负载均衡技术实现高性能、高可用的服务器集群,支持多种调度算法和工作模式(如D-NAT、full-NAT、IP隧道、DR),适用于HTTP、数据库等应用。相比7层负载均衡器(如Nginx、HAProxy),LVS具有更高的并发处理能力和更低的资源消耗,适合大规模流量分发。本期文章详细介绍了LVS的工作原理、优势与不足,并对比了常见的负载均衡产品,帮助读者根据具体需求选择合适的解决方案。
1684 6
LVS,软负载均衡
|
负载均衡 算法 Linux
LVS+Keepalived:实现高效软负载均衡的利器
本文介绍了如何使用LVS(Linux Virtual Server)和Keepalived搭建高可用负载均衡集群。LVS通过不同调度算法将请求转发给后端服务器,而Keepalived基于VRRP协议实现服务高可用,避免IP单点故障。具体步骤包括环境准备、安装配置ipvsadm和Keepalived、启动服务及测试。文中还详细解释了配置文件中的关键参数,并提供了故障转移测试方法。最后,文章简要对比了软件、硬件和云负载均衡方案的特点,帮助读者选择合适的负载均衡策略。
1851 4
|
域名解析 运维 负载均衡
LVS+Keepalived 负载均衡(二)28-1
【8月更文挑战第28天】LVS+Keepalived 负载均衡 配置 LVS VIP
283 6
|
8月前
|
负载均衡 前端开发 应用服务中间件
Tomcat的负载均衡和动静分离(与nginx联动)
总的来说,负载均衡和动静分离是提高Web应用性能的两个重要手段。通过合理的配置和使用,我们可以让Web应用更好地服务于用户。
272 21
|
缓存 负载均衡 算法
解读 Nginx:构建高效反向代理和负载均衡的秘密
解读 Nginx:构建高效反向代理和负载均衡的秘密
323 2
|
负载均衡 前端开发 应用服务中间件
负载均衡指南:Nginx与HAProxy的配置与优化
负载均衡指南:Nginx与HAProxy的配置与优化
789 3
|
负载均衡 算法 应用服务中间件
nginx自定义负载均衡及根据cpu运行自定义负载均衡
nginx自定义负载均衡及根据cpu运行自定义负载均衡
399 1

推荐镜像

更多