使用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月前
|
分布式计算 关系型数据库 MySQL
大数据-88 Spark 集群 案例学习 Spark Scala 案例 SuperWordCount 计算结果数据写入MySQL
大数据-88 Spark 集群 案例学习 Spark Scala 案例 SuperWordCount 计算结果数据写入MySQL
49 3
|
1月前
|
消息中间件 分布式计算 关系型数据库
大数据-140 - ClickHouse 集群 表引擎详解5 - MergeTree CollapsingMergeTree 与其他数据源 HDFS MySQL
大数据-140 - ClickHouse 集群 表引擎详解5 - MergeTree CollapsingMergeTree 与其他数据源 HDFS MySQL
45 0
|
2月前
|
运维 负载均衡 网络协议
LVS+Keepalived 负载均衡
LVS+Keepalived 负载均衡
72 8
LVS+Keepalived 负载均衡
|
2月前
|
域名解析 运维 负载均衡
LVS+Keepalived 负载均衡(二)28-1
【8月更文挑战第28天】LVS+Keepalived 负载均衡 配置 LVS VIP
63 5
|
1月前
|
SQL 分布式计算 关系型数据库
Hadoop-24 Sqoop迁移 MySQL到Hive 与 Hive到MySQL SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
Hadoop-24 Sqoop迁移 MySQL到Hive 与 Hive到MySQL SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
84 0
|
1月前
|
SQL 分布式计算 关系型数据库
Hadoop-23 Sqoop 数据MySQL到HDFS(部分) SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
Hadoop-23 Sqoop 数据MySQL到HDFS(部分) SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
37 0
|
1月前
|
SQL 分布式计算 关系型数据库
Hadoop-22 Sqoop 数据MySQL到HDFS(全量) SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
Hadoop-22 Sqoop 数据MySQL到HDFS(全量) SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
46 0
|
1月前
|
SQL 关系型数据库 MySQL
mysql集群方案
mysql集群方案
39 0
|
3月前
|
缓存 关系型数据库 MySQL
如何实现mysql高可用集群
如何实现mysql高可用集群
40 0
|
负载均衡 应用服务中间件 Linux
Nginx系列教程(14) - LVS+KeepAlived+Nginx实现高性能负载均衡集群
Nginx系列教程(14) - LVS+KeepAlived+Nginx实现高性能负载均衡集群
1124 0