Keepalived+lvs 双机热备

Keepalived 双机热备

使用 Keepalived 做双机热备非常简单,经常和 LVS 搭配来实现高可用负载平衡方案

1. Master / Slave

首先准备两台测试服务器和一个虚拟IP。

Server A: 192.168.1.10 (主服务器)

Server B: 192.168.1.20

Virtual IP: 192.168.1.100

测试服务: 在两台服务器上分别安装 Nginx,并修改默认的 index.html 文件,显示当前服务器 IP 以便识别。

1. 在两台服务器上分别安装 keepalived。

$ sudo apt-get install keepalived

2. 添加配置文件。

Server A

$ sudo vim /etc/keepalived/keepalived.conf

global_defs {

router_id LVS_DEVEL

}

vrrp_instance VI_1 {

state MASTER

interface eth0

virtual_router_id 51 # 保持主从服务器一致

priority 100         # 优先级 (主服务器较高)

advert_int 1         # 心跳广播间隔(秒)

authentication {

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {

192.168.1.100 # 虚拟IP地址,可以多个。

}

}

Server B

$ sudo vim /etc/keepalived/keepalived.conf

global_defs {

router_id LVS_DEVEL

}

vrrp_instance VI_1 {

state BACKUP

interface eth0

virtual_router_id 51

priority 99

advert_int 1

authentication {

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {

192.168.1.100

}

}

注意:备份服务器 Server B 配置中 state 要改成 BACKUP,同时调低 priority。

3. 启动两台服务器上的 keepalived 服务。

$ sudo service keepalived start

重启后可以使用 "ip a" 查看虚拟 IP 信息。

Server A

$ ip a

1: lo: <loopback,up,lower_up> mtu 16436 qdisc noqueue state UNKNOWN

link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

inet 127.0.0.1/8 scope host lo

inet6 ::1/128 scope host

valid_lft forever preferred_lft forever

2: eth0: <broadcast,multicast,up,lower_up> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000

link/ether 00:0c:29:4c:e7:e7 brd ff:ff:ff:ff:ff:ff

inet 192.168.1.10/24 brd 192.168.1.255 scope global eth0

inet 192.168.1.100/24 scope global secondary eth0

inet6 fe80::20c:29ff:fe4c:e7e7/64 scope link

valid_lft forever preferred_lft forever

Server B

$ ip a

1: lo: <loopback,up,lower_up> mtu 16436 qdisc noqueue state UNKNOWN

link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

inet 127.0.0.1/8 scope host lo

inet6 ::1/128 scope host

valid_lft forever preferred_lft forever

2: eth0: <broadcast,multicast,up,lower_up> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000

link/ether 00:0c:29:01:d8:16 brd ff:ff:ff:ff:ff:ff

inet 192.168.1.20/24 brd 192.168.1.255 scope global eth0

inet6 fe80::20c:29ff:fe01:d816/64 scope link

valid_lft forever preferred_lft forever

4. 在第三台机器上进行访问测试。

$ curl http://192.168.1.10

Welcome to nginx! 192.168.1.10

$ curl http://192.168.1.20

Welcome to nginx! 192.168.1.20

$ curl http://192.168.1.100

Welcome to nginx! 192.168.1.10

我们关掉主服务器 192.168.1.10,再访问 http://192.168.1.100 就会自动切换成备份服务器 (Server B: 192.168.1.20)。

$ curl http://192.168.1.100

Welcome to nginx! 192.168.1.20

同时 Server B 绑定了虚拟 IP。

Server B

$ ip a

1: lo: <loopback,up,lower_up> mtu 16436 qdisc noqueue state UNKNOWN

link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

inet 127.0.0.1/8 scope host lo

inet6 ::1/128 scope host

valid_lft forever preferred_lft forever

2: eth0: <broadcast,multicast,up,lower_up> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000

link/ether 00:0c:29:01:d8:16 brd ff:ff:ff:ff:ff:ff

inet 192.168.1.20/24 brd 192.168.1.255 scope global eth0

inet 192.168.1.100/24 scope global secondary eth0

inet6 fe80::20c:29ff:fe01:d816/64 scope link

valid_lft forever preferred_lft forever

重新打开主服务器(Server A: 192.168.1.10),访问恢复。

2. Master / Master

Master / Slave 方案中备份服务器(Server B)平时就是个摆设,有点浪费。我们完全可以用来跑其他服务,让两台主机形成相互热备。

Server A: 192.168.1.10, Virtual IP: 192.168.1.100

Server B: 192.168.1.20, Virtual IP: 192.168.1.200

修改配置文件。

Server A

global_defs {

router_id LVS_DEVEL

}

vrrp_instance VI_1 {

state MASTER

interface eth0

virtual_router_id 51

priority 100

advert_int 1

authentication {

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {

192.168.1.100

}

}

vrrp_instance VI_2 {

state BACKUP

interface eth0

virtual_router_id 52

priority 99

advert_int 1

authentication {

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {

192.168.1.200

}

}

Server B:

global_defs {

router_id LVS_DEVEL

}

vrrp_instance VI_1 {

state BACKUP

interface eth0

virtual_router_id 51

priority 99

advert_int 1

authentication {

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {

192.168.1.100

}

}

vrrp_instance VI_2 {

state MASTER

interface eth0

virtual_router_id 52

priority 100

advert_int 1

authentication {

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {

192.168.1.200

}

}

其实很简单,我们增加了一个新的配置 VI_2 (注意 virtual_router_id 不同)。不过这回用 Server B 做主服务器,如此 Server A、Server B 各自拥有主虚拟IP,同时备份对方的虚拟 IP。重启两台服务器的 keepalived 服务后,查看虚拟 IP 绑定信息。

Server A

$ ip a

1: lo: <loopback,up,lower_up> mtu 16436 qdisc noqueue state UNKNOWN

link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

inet 127.0.0.1/8 scope host lo

inet6 ::1/128 scope host

valid_lft forever preferred_lft forever

2: eth0: <broadcast,multicast,up,lower_up> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000

link/ether 00:0c:29:4c:e7:e7 brd ff:ff:ff:ff:ff:ff

inet 192.168.1.10/24 brd 192.168.1.255 scope global eth0

inet 192.168.1.100/24 scope global secondary eth0

inet6 fe80::20c:29ff:fe4c:e7e7/64 scope link

valid_lft forever preferred_lft forever

Server B

$ ip a

1: lo: <loopback,up,lower_up> mtu 16436 qdisc noqueue state UNKNOWN

link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

inet 127.0.0.1/8 scope host lo

inet6 ::1/128 scope host

valid_lft forever preferred_lft forever

2: eth0: <broadcast,multicast,up,lower_up> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000

link/ether 00:0c:29:01:d8:16 brd ff:ff:ff:ff:ff:ff

inet 192.168.1.20/24 brd 192.168.1.255 scope global eth0

inet 192.168.1.200/24 scope global secondary eth0

inet6 fe80::20c:29ff:fe01:d816/64 scope link

valid_lft forever preferred_lft forever

正常情况下,会使用各自的主服务器。

$ curl http://192.168.1.100

Welcome to nginx! 192.168.1.10

$ curl http://192.168.1.200

Welcome to nginx! 192.168.1.20

一旦任何一台服务器当机,另一台就会自动接管。我们停掉 192.168.1.20,看看访问 http://192.168.1.200 是不是切换到 192.168.1.10 上。

$ curl http://192.168.1.200

Welcome to nginx! 192.168.1.10

同时 Server A 绑定虚拟 IP 192.168.1.200。

$ ip a

1: lo: <loopback,up,lower_up> mtu 16436 qdisc noqueue state UNKNOWN

link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

inet 127.0.0.1/8 scope host lo

inet6 ::1/128 scope host

valid_lft forever preferred_lft forever

2: eth0: <broadcast,multicast,up,lower_up> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000

link/ether 00:0c:29:4c:e7:e7 brd ff:ff:ff:ff:ff:ff

inet 192.168.1.10/24 brd 192.168.1.255 scope global eth0

inet 192.168.1.100/24 scope global secondary eth0

inet 192.168.1.200/24 scope global secondary eth0

inet6 fe80::20c:29ff:fe4c:e7e7/64 scope link

valid_lft forever preferred_lft forever

Server B 重启后,一切恢复正常。

这个方案可以是不同的服务,或者是同一服务的访问分流(配合 DNS 使用)。

时间: 2024-10-01 23:18:18

Keepalived+lvs 双机热备的相关文章

Linux学习总结(五十四)keepalived+lvs 双机热备负载均衡架构

一 LVS IP tunnel 模式介绍 IP隧道(IP tunneling)是将一个IP报文封装在另一个IP报文的技术,这可以使得目标为一个IP地址的数据报文能被封装和转发到另一个IP地址.IP隧道技术亦称为IP封装技术(IP encapsulation).IP隧道主要用于移动主机和虚拟私有网络(Virtual Private Network),在其中隧道都是静态建立的,隧道一端有一个IP地址,另一端也有唯一的IP地址.它的连接调度和管理与VS/NAT中的一样,只是它的报文转发方法不同.调度器

LVS+keepalived实现双机热备

昨晚写了关于lvs的文章,今天以实例介绍下LVS+keepalived实现双机热备 服务器IP地址设置表 服务器名称 网络接口 IP地址 路由器 外网IP 121.201.24.138 lvs-master eth0 172.16.100.2 eth1(VIP) 172.16.100.100 lvs-backup eth0 172.16.100.3 lo:0(VIP) 172.16.100.100 web1 eth0 172.16.100.4 lo:0(VIP) 172.16.100.100 w

用haproxy搭建web群集并由keepalived 实现双机热备

搭建haproxy+keepalived高可用群集. 一.案例概述 1.haproxy是目前比较流行的一种集群调度工具,是一款免费开源的软件,并且具有一定得安全性:haproxy较适用于负载较大的web节点,并且支持数万的并发量.同类调度工具还有很多,如LVS和Nginx.相比较而言,LVS性能最好,但是搭建相对复杂,Nginx的upstream模块支持群集功能,但是对群集节点健康检查功能不强,性能没有haproxy好.haproxy主要实现web群集的负载均衡haproxy官方网站:http:

利用Keepalived实现双机热备详解

在这个高度信息化的IT时代,企业的生产系统.业务运营.销售和支持,以及日常管理等环节越来越依赖于计算机信息和服务,对高可用(HA)技术的应用需求不断提高,以便提供持续的.不间断的计算机系统或网络服务. 一.Keepalived双机热备基础知识 1.Keepalived概述 Keepalived起初是专门针对LVS设计的一款强大的辅助工具,主要用来提供故障切换和健康检查功能--判断LVS负载调度器.节点服务器的可用性,及时隔离并替换为新的服务器,当故障主机恢复后将其重新加入群集. Keepaliv

keepalived+nginx双机热备+负载均衡

keepalived+nginx双机热备+负载均衡 最近因业务扩展,需要将当前的apache 转为nginx(web), 再在web前端放置nginx(负载均衡).同时结合keepalived 对前端nginx实现HA. nginx进程基于于Master+Slave(worker)多进程模型,自身具有非常稳定的子进程管理功能.在Master进程分配模式下,Master进程永远不进行业务处理,只是进行任务分发,从而达到Master进程的存活高可靠性,Slave(worker)进程所有的业务信号都

HAproxy + keepalived 实现双机热备

一.HAProxy简介: HAProxy提供高可用性.负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费.快速并且可靠的一种解决方案.HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理.HAProxy运行在时下的硬件上,完全可以支持数以万计的并发连接.并且它的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护你的web服务器不被暴露到网络上. HAProxy实现了一种事件驱动.单一进程模型,此模型支持非常大的并发连接数.多进程或

keepalived nginx 双机热备图文讲解

原文:http://blog.csdn.net/wanglei_storage/article/details/51175418 keepalived nginx 双机热备实战精讲 在试验之前先贴张图上来,大致说下具体的需求及环境(注:实验所用到的脚本在文章末尾,如果在过程中遇到可以先看脚本) 环境: VIP(漂移地址):192.168.1.60-192.168.1.61 nginx-1:192.168.1.50 nginx-2:192.168.1.51 关闭 iptables.关闭selinu

搭建Keepalived实现双机热备

一.Keepalived双击热备 概述 Keepalived起初是专门针对LVS设计的一款强大的辅助工具,主要用来提供故障切换(Failover)和健康检查(Health Checking)功能一判断 LVS负载调度器.节点服务器的可用性,及时隔离并替换为新的服务器,当故障主机恢复后将其重新加入群集. 通常说的双机热备是指两台机器都在运行,但并不是两台机器都同时在提供服务. 当提供服务的一台出现故障的时候,另外一台会马上自动接管并且提供服务,而且切换的时间非常短. VRRP(Virtual Ro

Java技术中如何使用keepalived实现双机热备

Keepalived简介 Keepalived是Linux下一个轻量级别的高可用解决方案.高可用(High Avalilability,HA),其实两种不同的含义:广义来讲,是指整个系统的高可用行,狭义的来讲就是之主机的冗余和接管, 它与HeartBeat RoseHA 实现相同类似的功能,都可以实现服务或者网络的高可用,但是又有差别,HeartBeat是一个专业的.功能完善的高可用软件,它提供了HA 软件所需的基本功能,比如:心跳检测.资源接管,检测集群中的服务,在集群节点转移共享IP地址的所