模拟使用keepalived+virtual IP技术 实现nginx故障转移
概述Keepalived的作用是检测服务器的状态,如果有一台web服务器宕机,或工作出现故障,Keepalived将检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替该服务器的工作,当服务器工作正常后Keepalived自动将服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的服务器。开始试验我在ubuntu18.02 虚拟机上模拟 nginx...
概述
Keepalived的作用是检测服务器的状态,如果有一台web服务器宕机,或工作出现故障,Keepalived将检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替该服务器的工作,当服务器工作正常后Keepalived自动将服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的服务器。
开始试验
我在ubuntu18.02 虚拟机上模拟 nginx服务的自动故障转移,
该技术是通过使用 keepalived+ virtual IP来实现的。
具体实验步骤如下:
host1: 192.168.56.107
host2: 192.168.56.108
在两台机器上分别安装nginx
sudo apt-get install nginx
然后分别在nginx服务站点的根目录(/var/www/html)创建一个文件:index.html
host1中的index.html内容
<html>
<head>
<title>测试keepalived+Virtual IP</title>
<meta charset="utf8"></meta>
</head>
<body>
<div style="font-size:24px;">服务器:192.168.56.107</div>
</body>
</html>
host2中的index.html内容
<html>
<head>
<title>测试keepalived+Virtual IP</title>
<meta charset="utf8"></meta>
</head>
<body>
<div style="font-size:24px;">服务器:192.168.56.108</div>
</body>
</html>
访问 http://192.168.56.107/ 会显示内容 服务器:192.168.56.107
访问 http://192.168.56.108/ 会显示内容 服务器:192.168.56.108
说明nginx已经正常提供服务。
在两台Linux虚拟机上都安装keepalived软件配置后启动服务
sudo apt-get install keepalived
host1上创建配置文件, sudo vim /etc/keepalived/keepalived.conf
vrrp_instance VI_1 {
state MASTER
interface enp0s8
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass secret
}
virtual_ipaddress {
192.168.56.110
}
}
然后启动keepalived服务
sudo service keepalived start
这里的虚拟IP地址设置为 192.168.56.110 这个在宿主机上是可以访问到的。
服务启动后查看一下IP地址信息:
ip addr show enp0s8
会看到如图1情况:
host2上创建配置文件, sudo vim /etc/keepalived/keepalived.conf
vrrp_instance VI_1 {
state BACKUP
interface enp0s8
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass secret
}
virtual_ipaddress {
192.168.56.110
}
}
启动keepalived服务
sudo service keepalived start
然后 执行命令:ip addr show enp0s8
也看一下IP地址信息:如图2所示
然后访问 http://192.168.56.110时 会显示内容 服务器:192.168.56.107
接着我们模拟 host1服务器出现故障的情况,比如:宕机
在host1上执行 sudo service keepalived stop
然后再次访问 http://192.168.56.110时 会显示内容 服务器:192.168.56.108
从这里可以看出,host1出现故障时,host2的nginx正常提供服务, 已经正常实现了故障转移。
这时我们看一下host2上的IP地址信息,会发现如图3所示
此时host2上ip地址信息中包含虚拟IP “192.168.56.110” 信息。
host2作为虚拟IP:192.168.56.110 在这里生效了。
然后再次模拟host1故障恢复的情况:
在host1上执行 sudo service keepalived start
然后再次访问 http://192.168.56.110时 会显示内容 服务器:192.168.56.107
在host1上再次执行 ip addr show enp0s8
命令,查看IP详细信息,如图4所示:
此时host2上ip地址信息中不包含虚拟IP “192.168.56.110” 信息。
host1作为虚拟IP:192.168.56.110 在这里生效了。
由于keepalived配置文件中设置为master以及priority高一些,导致会优先将host1作为服务提供方。
更多推荐
所有评论(0)