构建高可用服务器之五 Keepalive冗余LVS

本文涉及的产品
网络型负载均衡 NLB,每月750个小时 15LCU
传统型负载均衡 CLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月750个小时 15LCU
简介:

    LVS只是做一个负载均衡,通过访问VIP来访问后端的网站程序,一旦LVS宕机,整个网站就访问不了,这就出现了单点。所以要结合keepalive这种高可用软件来保证整个网站的高可用。本文将介绍如何利用keepalive来实现LVS的高可用(LVSDR模式为例,生产环境后台的real server 网站内容是一致的,为了看到实验效果,这里是两个不同的页面)。 

一、环境介绍

VIP192.168.1.188

RIP1(Web1): 192.168.1.2

RIP2(Web2): 192.168.1.5

LVS1 :192.168.1.6

LVS2: 192.168.1.7

web1页面

wKioL1Vlx4HRVzwsAAB4QQhSn2A022.jpg

web2页面

wKiom1VlxfGT8hXeAAB26U4-POA544.jpg

二、配置realserver

分别在web1web2上执行lvs_rserver.sh

1
2
3
4
5
6
[root@web1 ~] # ./lvs_rserver.sh  start
RealServer Start OK
[root@web1 ~] #
[root@web2 ~] # ./lvs_rserver.sh  start
RealServer Start OK
[root@web2 ~] #

lvs_rserver.sh脚本内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
[root@web1 ~] # cat lvs_rserver.sh
#!/bin/sh
#LVS Client Server
VIP=192.168.1.188
case  $1   in                                                                                                                                                                                                                                                   
start)                                                                                                                                                                                                                                           
    ifconfig  lo:0  $VIP  netmask  255.255.255.255  broadcast  $VIP
    /sbin/route   add –host  $VIP  dev lo:0
    echo  "1"  > /proc/sys/net/ipv4/conf/lo/arp_ignore
    echo  "2"  > /proc/sys/net/ipv4/conf/lo/arp_announce
    echo  "1"  > /proc/sys/net/ipv4/conf/all/arp_ignore
    echo  "2"  > /proc/sys/net/ipv4/conf/all/arp_announce
    sysctl -p > /dev/null  2>&1
    echo  "RealServer Start OK"
    exit  0
;;                                                                                                                                                                                                                                        
stop)
    ifconfig  lo:0 down
    route del $VIP > /dev/null  2>&1
    echo  "0"  > /proc/sys/net/ipv4/conf/lo/arp_ignore
     echo  "0" > /proc/sys/net/ipv4/conf/lo/arp_announce
    echo  "0"  > /proc/sys/net/ipv4/conf/all/arp_ignore
    echo  "0"  > /proc/sys/net/ipv4/conf/all/arp_announce
    echo  "RealServer Stoped OK"
    exit  1
;;
*)
    echo  "Usage: $0 {start|stop}"
;;
esac
[root@web2 ~] #

 

三、安装配置lvskeepalive

分别在lvs1lvs2上安装lvskeepalive

lvs及keppalive的安装见《构建负载均衡服务器之二 LVS详解及应用》 《构建高可用服务器之一 Keepalive介绍及安装》

lvs1lvs2上配置VIP并加载相关模块

1
2
3
4
5
[root@lvs1 ~] # ifconfig eth0:0192.168.1.188 netmask 255.255.255.0
[root@lvs1 ~] # modprobe ip_vs
[root@lvs1 ~] # modprobe ip_vs_rr
[root@lvs1 ~] # modprobe ip_vs_wrr
[root@lvs1 ~] #

 

1
2
3
4
5
[root@lvs2 ~] # ifconfig eth0:0192.168.1.188 netmask 255.255.255.0
[root@lvs2 ~] # modprobe ip_vs
[root@lvs2 ~] # modprobe ip_vs_rr
[root@lvs2 ~] # modprobe ip_vs_wrr
[root@lvs2 ~] #

lvs1上修改keepalive.conf文件,修改后内容如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
[root@lvs1 ~] # vim/etc/keepalived/keepalived.conf
[root@lvs1 ~] # cat/etc/keepalived/keepalived.conf
! Configuration File  for  keepalived
  
global_defs {
    notification_email {
      654001593@qq.com
    }
   notification_email_from 654001593@qq.com
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}
  
# VIP1
vrrp_instance VI_1 {
    state MASTER
    interface eth0
    lvs_sync_daemon_inteface eth0
    virtual_router_id 51
    priority 100
    advert_int 5
    nopreempt
    authentication {
        auth_type PASS
        auth_pass 1111
     }
    virtual_ipaddress {
        192.168.1.188  
     }
}
  
virtual_server 192.168.1.188 80 {
    delay_loop 6   
    lb_algo wrr   
    lb_kind DR  
#   persistence_timeout 60   
    protocol TCP        
  
    real_server 192.168.1.2 80 {
        weight 100       
        TCP_CHECK {
        connect_timeout 10
        nb_get_retry 3
        delay_before_retry 3
        connect_port 80
        }
     }
    real_server 192.168.1.5 80 {
        weight 100
        TCP_CHECK {
        connect_timeout 10
        nb_get_retry 3
        delay_before_retry 3
        connect_port 80
        
        }
     }
}
  
[root@lvs1 ~] #

lvs2上的keepalive.conf文件基本和lvs1上的一致,但是state这一项lvs1上是MASTER,而lvs2上的BACKUP;优先级prioritylvs1上为100,在lvs2上为90

lvs2上修改keepalive.conf文件,修改后内容如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
[root@lvs2 ~] # cat/etc/keepalived/keepalived.conf
! Configuration File  for  keepalived
  
global_defs {
   notification_email {
      654001593@qq.com
    }
   notification_email_from 654001593@qq.com
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}
  
# VIP1
vrrp_instance VI_1 {
    state BACKUP  
    interface eth0
    lvs_sync_daemon_inteface eth0
    virtual_router_id 51
      priority 90
    advert_int 5
    nopreempt
    authentication {
        auth_type PASS
        auth_pass 1111
     }
    virtual_ipaddress {
        192.168.1.188  
     }
}
  
virtual_server 192.168.1.188 80 {
    delay_loop 6   
    lb_algo wrr   
    lb_kind DR  
#   persistence_timeout 60   
    protocol TCP        
  
    real_server 192.168.1.2 80 {
        weight 100       
        TCP_CHECK {
        connect_timeout 10
        nb_get_retry 3
        delay_before_retry 3
        connect_port 80
        }
     }
    real_server 192.168.1.5 80 {
        weight 100
        TCP_CHECK {
        connect_timeout 10
        nb_get_retry 3
        delay_before_retry 3
        connect_port 80
        
        }
     }
}
  
[root@lvs2 ~] #

四、测试

停掉lvs1的网卡

ping VIP一样一直在通信(配置有nopreempt)

wKiom1VlxjbCuoE_AAKXVkxtx28353.jpg

通过VIP访问网站

wKioL1Vlx8jAZwxQAAC-GF1rLm0878.jpg

刷新

wKioL1Vlx8nzo7YPAACYbDYOU9o621.jpg

即使lvs1宕机后又恢复,此时依旧是通过lvs2访问(由是否配置nopreempt决定)。



本文转自Jacken_yang 51CTO博客,原文链接:http://blog.51cto.com/linuxnote/1655103,如需转载请自行联系原作者

相关实践学习
小试牛刀,一键部署电商商城
SAE 仅需一键,极速部署一个微服务电商商城,体验 Serverless 带给您的全托管体验,一起来部署吧!
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
6月前
|
监控 中间件 Java
后端技术:构建高效、稳定的服务器端应用
【10月更文挑战第5天】后端技术:构建高效、稳定的服务器端应用
225 0
|
14天前
|
人工智能 搜索推荐 程序员
用 Go 语言轻松构建 MCP 客户端与服务器
本文介绍了如何使用 mcp-go 构建一个完整的 MCP 应用,包括服务端和客户端两部分。 - 服务端支持注册工具(Tool)、资源(Resource)和提示词(Prompt),并可通过 stdio 或 sse 模式对外提供服务; - 客户端通过 stdio 连接服务器,支持初始化、列出服务内容、调用远程工具等操作。
187 3
|
6月前
|
监控 关系型数据库 Serverless
探索后端技术:构建高效、可靠的服务器端应用
本文将深入探讨后端开发的核心概念和关键技术,从服务器架构到数据库管理,再到安全防护,为读者提供全面的后端技术指南。无论是初学者还是经验丰富的开发者,都能从中汲取灵感,提升自己的技术水平。
|
5月前
|
弹性计算 监控 容灾
阿里云ECS提供强大的云上灾备解决方案,通过高可用基础设施、多样的数据备份方式及异地灾备服务,帮助企业实现业务的持续稳定运行
在数字化时代,企业对信息技术的依赖加深,确保业务连续性至关重要。阿里云ECS提供强大的云上灾备解决方案,通过高可用基础设施、多样的数据备份方式及异地灾备服务,帮助企业实现业务的持续稳定运行。无论是小型企业还是大型企业,都能从中受益,确保在面对各种风险时保持业务稳定。
124 4
|
5月前
|
NoSQL 容灾 MongoDB
MongoDB主备副本集方案:两台服务器使用非对称部署的方式实现高可用与容灾备份
在资源受限的情况下,为了实现MongoDB的高可用性,本文探讨了两种在两台服务器上部署MongoDB的方案。方案一是通过主备身份轮换,即一台服务器作为主节点,另一台同时部署备节点和仲裁节点;方案二是利用`priority`设置实现自动主备切换。两者相比,方案二自动化程度更高,适合追求快速故障恢复的场景,而方案一则提供了更多的手动控制选项。文章最后对比了这两种方案与标准三节点副本集的优缺点,指出三节点方案在高可用性和数据一致性方面表现更佳。
433 5
|
5月前
|
关系型数据库 API 数据库
后端开发的艺术:从零到一构建高效服务器
在数字化时代,后端开发是支撑现代互联网应用的基石。本文旨在探讨后端开发的核心概念、关键技术以及如何构建一个高效的服务器。我们将从基础的编程语言选择开始,逐步深入到数据库设计、API开发和性能优化等关键领域。通过实际案例分析,我们将揭示后端开发的复杂性和挑战性,同时提供实用的解决方案和最佳实践。无论你是初学者还是有经验的开发者,这篇文章都将为你提供宝贵的见解和启发。
|
6月前
|
JSON JavaScript 前端开发
使用 Node.js 和 Express 构建 RESTful API 服务器
【10月更文挑战第3天】使用 Node.js 和 Express 构建 RESTful API 服务器
|
6月前
|
JSON JavaScript 前端开发
使用JavaScript和Node.js构建简单的RESTful API服务器
【10月更文挑战第12天】使用JavaScript和Node.js构建简单的RESTful API服务器
76 0
|
6月前
|
监控 Java 关系型数据库
构建高效可靠的服务器端应用
【10月更文挑战第6天】构建高效可靠的服务器端应用
|
26天前
|
存储 缓存 网络协议
阿里云特惠云服务器99元与199元配置与性能和适用场景解析:高性价比之选
2025年,阿里云长效特惠活动继续推出两款极具吸引力的特惠云服务器套餐:99元1年的经济型e实例2核2G云服务器和199元1年的通用算力型u1实例2核4G云服务器。这两款云服务器不仅价格亲民,而且性能稳定可靠,为入门级用户和普通企业级用户提供了理想的选择。本文将对这两款云服务器进行深度剖析,包括配置介绍、实例规格、使用场景、性能表现以及购买策略等方面,帮助用户更好地了解这两款云服务器,以供参考和选择。

热门文章

最新文章