Keepalived&LVS 搭建高可用的Web服务

在本文中,我将会讲述如何在Centos 7下基于Keepalived和LVS技术,实现Web服务的高可用和负载均衡,我们的目标拓扑结构如下图所示

准备

如果你觉得一步一步按照下面的操作来搭建太过麻烦,可以直接下载mylxsw/keepalived-example项目,然后执行即可一键搭建起整个演示环境。

使用Vagrant创建四台虚拟机用于测试使用,Vagrant配置文件格式如下

对于每个配置,需要替换配置文件中的IP地址

启动Vagrant服务器需要进入服务器所在目录,执行命令,登录到服务器需要执行命令。如果你还没有接触过Vagrant,那么可以看看这篇文章 Vagrant入门。由于本文中很多命令都需要使用权限进行操作,因此建议执行命令直接提升到root权限(密码为vagrant),否则需要在所有命令前添加来执行。VIP为,客户端IP为。

分别登录每台服务器,设置其,方便后面我们区分不同的服务器

然后退出重新登录,就可以看到hostname生效了。

安装Keepalived服务

keepalivedkeepalived-backup两个虚拟机上,安装keepalived服务

安装完成后,可以看到生成了配置文件,不过这个文件是Keepalived提供的示例,后面我们需要修改。

将 Keepalived 服务添加到开机自启动

安装web服务

在两台web服务器node-1node-2上,我们就简单安装一个nginx,然后开放80端口,提供简单的web服务用于测试

为了方便查看效果,我们将 nginx 的默认web页面修改为显示服务器的IP

然后,启动web服务

Keepalive实现高可用

在这里,我们实现Keepalive服务(keepalivedkeepalived-backup两台服务器)的高可用,也就是为负载均衡服务提供主备服务,当master挂掉之后,backup自动成为新的master继续提供服务。

下面是Keepalived配置文件内容

两台 keepalived服务器均使用该配置文件,唯一的不同是的取值在两台服务器上是不同的,我们设置keepalived服务器的,keepalived-backup的。

两台服务器设置不同的优先级之后,只要两台服务器都正常工作,则优先级高的为 主服务器,优先级低的为 备服务器。

配置完成后,重启 keepalived 服务

然后,我们可以看到keepalived服务器绑定了VIP192.168.88.100

keepalived服务器

keepalived-backup服务器

我们验证一下主服务器挂掉之后,备份服务器是否能够正常接替工作,在keepalived服务器上,执行命令,停止keepalived服务,模拟服务器挂掉的情景,然后我们看到

keepalived服务器

keepalived-backup服务器

VIP成功漂移到了备份服务器,在备份服务器的日志中,可以看到如下信息

重启keepalived服务器的Keepalived服务(),模拟服务器恢复,我们可以看到VIP又重新漂移回了keepalived服务器(因为keepalived服务器设置的大于keepalived-backup服务器的设置)。查看keepalived-backup的日志,可以看到下面信息

LVS实现负载均衡

在两台Keepalived服务器的配置文件中,追加以下配置

由于我们所有的服务器都在同一个子网中,因此无法使用NAT(Network Address Translation)模式,这里我们使用DSR(Direct Server Return)模式,使用DSR模式(配置时使用),需要web服务器将VIP绑定到自己的本地回环网卡上去,否则无法与web服务器通信。在node-1node-2上,执行下面的命令

这里绑定的VIP只在本次设置有效,服务器重启后需要再次执行,因此,可以通过下面的方法永久的添加该IP

在目录下,创建文件

然后重启网络服务()让其生效即可

接下来,重启两台keepalived服务器的服务就可以生效了

然后我们在客户端访问以下我们的web服务,这里我们就可以使用VIP来访问了

可以看到,请求被分配到了两台真实的web服务器。在keepalived服务器上执行

如果此时node-1的服务挂了怎么办?我们来模拟一下,在node-1上面,我们停止web服务

等几秒之后(我们配置健康检查周期为6s)然后再来请求

keepalived服务器上执行

可以看到,有问题的node-1已经被剔除了。

  • 发表于:
  • 原文链接:https://kuaibao.qq.com/s/20180906G14C7Y00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

同媒体快讯

扫码关注云+社区

领取腾讯云代金券