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

本文涉及的产品
传统型负载均衡 CLB,每月750个小时 15LCU
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
简介: 目录 一、概念了解... 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 多个连接

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
1月前
|
数据采集 机器学习/深度学习 数据可视化
【优秀python web系统毕设】基于python的全国招聘数据分析可视化系统,包括随机森林算法
本文介绍了一个基于Python的全国招聘数据分析可视化系统,该系统利用数据挖掘技术、随机森林算法和数据可视化技术,从招聘网站抓取数据,进行处理、分析和预测,帮助用户洞察招聘市场,为求职者和企业提供决策支持。
|
1月前
|
JSON API 数据处理
Winform管理系统新飞跃:无缝集成SqlSugar与Web API,实现数据云端同步的革新之路!
【8月更文挑战第3天】在企业应用开发中,常需将Winform桌面应用扩展至支持Web API调用,实现数据云端同步。本文通过实例展示如何在已有SqlSugar为基础的Winform系统中集成HTTP客户端调用Web API。采用.NET的`HttpClient`处理请求,支持异步操作。示例包括创建HTTP辅助类封装请求逻辑及在Winform界面调用API更新UI。此外,还讨论了跨域与安全性的处理策略。这种方法提高了系统的灵活性与扩展性,便于未来的技术演进。
121 2
|
1月前
|
开发框架 缓存 前端开发
基于SqlSugar的开发框架循序渐进介绍(23)-- Winform端管理系统中平滑增加对Web API对接的需求
基于SqlSugar的开发框架循序渐进介绍(23)-- Winform端管理系统中平滑增加对Web API对接的需求
|
3月前
|
前端开发 JavaScript Java
计算机Java项目|基于Web的足球青训俱乐部管理后台系统的设计与开发
计算机Java项目|基于Web的足球青训俱乐部管理后台系统的设计与开发
|
14天前
|
缓存 NoSQL 数据库
Web服务器与数据库优化:提升系统性能的最佳实践
【8月更文第28天】在现代的Web应用中,Web服务器与后端数据库之间的交互是至关重要的部分。优化这些组件及其相互作用可以显著提高系统的响应速度、吞吐量和可扩展性。本文将探讨几种常见的优化策略,并提供一些具体的代码示例。
30 1
|
17天前
|
前端开发 开发者 容器
【Web布局的革命】探索CSS Grid栅格系统,打造未来网页设计!
【8月更文挑战第25天】在网页设计领域,布局至关重要。传统的布局方法难以满足复杂需求,CSS Grid 栅格系统因此诞生。它是一种二维布局模式,能直接控制行和列,简化复杂网格的设计。通过定义 `display: grid;` 创建网格容器,并利用 `grid-template-columns` 和 `grid-template-rows` 设置行列尺寸,轻松实现响应式布局。此外,CSS Grid 支持高级功能,如网格区域划分和对齐设置,极大提升了布局的灵活性和创意空间。随着浏览器兼容性的增强,CSS Grid 必将成为未来网页设计的关键技术之一。
38 1
|
18天前
|
关系型数据库 MySQL Linux
【Azure 应用服务】在创建Web App Service的时候,选Linux系统后无法使用Mysql in App
【Azure 应用服务】在创建Web App Service的时候,选Linux系统后无法使用Mysql in App
【Azure 应用服务】在创建Web App Service的时候,选Linux系统后无法使用Mysql in App
|
22天前
|
Java Docker 微服务
微服务架构已成为Java Web开发的新趋势,它通过将应用分解为独立、可部署的服务单元,提升了系统的灵活性与可维护性。
微服务架构已成为Java Web开发的新趋势,它通过将应用分解为独立、可部署的服务单元,提升了系统的灵活性与可维护性。每个服务负责特定功能,通过轻量通信机制协作。利用Spring Boot与Spring Cloud等框架可简化开发流程,支持模块化设计、独立部署、技术多样性和容错性,适应快速迭代的需求。
59 1
|
1月前
|
数据采集 数据可视化 关系型数据库
【优秀python web设计】基于Python flask的猫眼电影可视化系统,可视化用echart,前端Layui,数据库用MySQL,包括爬虫
本文介绍了一个基于Python Flask框架、MySQL数据库和Layui前端框架的猫眼电影数据采集分析与可视化系统,该系统通过爬虫技术采集电影数据,利用数据分析库进行处理,并使用Echart进行数据的可视化展示,以提供全面、准确的电影市场分析结果。
|
18天前
|
存储 安全 网络安全
【Azure 环境】使用Azure中的App Service部署Web应用,以Windows为主机系统是否可以启动防病毒,防恶意软件服务呢(Microsoft Antimalware)?
【Azure 环境】使用Azure中的App Service部署Web应用,以Windows为主机系统是否可以启动防病毒,防恶意软件服务呢(Microsoft Antimalware)?