在本文中,我将会讲述如何在Centos 7下基于Keepalived和LVS技术,实现Web服务的高可用和负载均衡,我们的目标拓扑结构如下图所示
准备
如果你觉得一步一步按照下面的操作来搭建太过麻烦,可以直接下载mylxsw/keepalived-example项目,然后执行即可一键搭建起整个演示环境。
使用Vagrant创建四台虚拟机用于测试使用,Vagrant配置文件格式如下
对于每个配置,需要替换配置文件中的IP地址
启动Vagrant服务器需要进入服务器所在目录,执行命令,登录到服务器需要执行命令。如果你还没有接触过Vagrant,那么可以看看这篇文章 Vagrant入门。由于本文中很多命令都需要使用权限进行操作,因此建议执行命令直接提升到root权限(密码为vagrant),否则需要在所有命令前添加来执行。VIP为,客户端IP为。
分别登录每台服务器,设置其,方便后面我们区分不同的服务器
然后退出重新登录,就可以看到hostname生效了。
安装Keepalived服务
在keepalived和keepalived-backup两个虚拟机上,安装keepalived服务
安装完成后,可以看到生成了配置文件,不过这个文件是Keepalived提供的示例,后面我们需要修改。
将 Keepalived 服务添加到开机自启动
安装web服务
在两台web服务器node-1和node-2上,我们就简单安装一个nginx,然后开放80端口,提供简单的web服务用于测试
为了方便查看效果,我们将 nginx 的默认web页面修改为显示服务器的IP
然后,启动web服务
Keepalive实现高可用
在这里,我们实现Keepalive服务(keepalived和keepalived-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-1和node-2上,执行下面的命令
这里绑定的VIP只在本次设置有效,服务器重启后需要再次执行,因此,可以通过下面的方法永久的添加该IP
在目录下,创建文件
然后重启网络服务()让其生效即可
接下来,重启两台keepalived服务器的服务就可以生效了
然后我们在客户端访问以下我们的web服务,这里我们就可以使用VIP来访问了
可以看到,请求被分配到了两台真实的web服务器。在keepalived服务器上执行
如果此时node-1的服务挂了怎么办?我们来模拟一下,在node-1上面,我们停止web服务
等几秒之后(我们配置健康检查周期为6s)然后再来请求
在keepalived服务器上执行
可以看到,有问题的node-1已经被剔除了。
领取专属 10元无门槛券
私享最新 技术干货