LVS入门篇(五)之LVS+Keepalived实战

https://www.cnblogs.com/linuxk/p/9365189.html

一、实验架构和环境说明

(1)本次基于VMware Workstation搭建一个四台Linux(CentOS 7.4)系统所构成的一个服务器集群,其中两台负载均衡服务器(一台为主机,另一台为备机),另外两台作为真实的Web服务器。
(2)本次实验基于DR负载均衡模式,设置了一个VIP(Virtual IP)为192.168.56.20,用户只需要访问这个IP地址即可获得网页服务。其中,负载均衡主机为192.168.56.12,备机为192.168.56.13。Web服务器RS1为192.168.56.11,Web服务器B为192.168.56.14。

 二、配置2台web服务器

(1)在realserver上部署Nginx并配置主页

[root@rs1 ~]# yum install -y nginx
[root@rs2 ~]# yum install -y nginx
[root@rs1 ~]# echo "welcome to use RS1 192.168.56.11" > /usr/share/nginx/html/index.html
[root@rs1 ~]# echo "welcome to use RS1 192.168.56.14" > /usr/share/nginx/html/index.html
[root@rs1 ~]# curl 192.168.56.11
<h1>welcome to use RS1 192.168.56.11</h1>
[root@rs2 ~]# curl 192.168.56.14
<h1>welcome to use RS1 192.168.56.14</h1>

(2)在rs1和rs2上编辑realserver脚本并执行,此处贴rs1脚本详情

[root@rs1 ~]# vim /etc/init.d/realserver
#!/bin/bash
SNS_VIP=192.168.56.20
/etc/init.d/functions
case "$1" in
start)
ifconfig lo:0 $SNS_VIP netmask 255.255.255.255 broadcast $SNS_VIP
/sbin/route add -host $SNS_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"
;;
stop)
ifconfig lo:0 down
route del $SNS_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"
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
exit 0 [root@rs1 ~]# chmod +x /etc/init.d/realserver
[root@rs1 ~]# /etc/init.d/realserver start
RealServer Start OK

三、配置主负载均衡器

(1)lb01和lb02上安装Keepalived

[root@lb01 ~]# yum install -y keepalived
[root@lb02 ~]# yum install -y keepalived

(2)编辑lb01和lb02上的keepalived.conf配置文件

[root@lb01 ~]# cp /etc/keepalived/keepalived.conf{,.bak}  #备份源文件
[root@lb01 ~]# > /etc/keepalived/keepalived.conf       #清空源文件
[root@lb01 ~]# vim /etc/keepalived/keepalived.conf      #编辑keepalived.conf
! Configuration File for keepalived global_defs {
notification_email {
123456@qq.com
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id lb01
}
vrrp_instance VI_1 {
state MASTER  #指定Keepalived的角色,MASTER为主,BACKUP为备
interface eth0
virtual_router_id 55  #虚拟路由id号,主备需要一直
priority 150  #优先级,数值越大,优先级越高
advert_int 1  #检测间隔,默认为1s
authentication {
auth_type PASS  #认证类型
auth_pass 1111  #认证密码
}
virtual_ipaddress {
192.168.56.20/24   #设置DR的虚拟ip,可以多设,一行一个
}
} virtual_server 192.168.56.20 80 {  #定义LVS对外提供服务的VIP为192.168.56.20和port为80
delay_loop 6  #设置健康检查时间,单位为秒
lb_algo wrr   #设置负载均衡调度算法为wrr
lb_kind DR   #设置LVS实现负载均衡机制为DR模式
nat_mask 255.255.255.0  
persistence_timeout 20  #会话保持超时配置
protocol TCP  #使用TCP协议检查realserver的状态 real_server 192.168.56.11 80 {  #配置真实服务器节点和端口
weight 100  #权重
TCP_CHECK {
connect_timeout 10  #连接超时,单位为秒
nb_get_retry 3    #重试连接次数
connect_port 80   #连接端口
}
} real_server 192.168.56.14 80 {
weight 100
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
connect_port 80
}
}
}

从负载均衡服务器与主负载服务器大致相同,只是在keepalived的配置文件中需要改以下两处:
  (1)将state由MASTER改为BACKUP
  (2)将priority由100改为99

配置完成后,启动Keepalived

[root@lb01 ~]# systemctl start keepalived
[root@lb02 ~]# systemctl start keepalived
[root@lb01 ~]# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.56.20:80 wrr persistent 20
-> 192.168.56.11:80 Route 100 0 0
-> 192.168.56.14:80 Route 100 0 0
[root@lb02 ~]# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.56.20:80 wrr persistent 20
-> 192.168.56.11:80 Route 100 0 0
-> 192.168.56.14:80 Route 100 0 0
[root@lb01 ~]# ip addr |grep 192.168.56.20  #查看lb01上是否存在VIP
inet 192.168.56.20/24 scope global secondary eth0
[root@lb02 ~]# ip addr |grep 192.168.56.20  #查看lb02上是否存在VIP,如果有说明存在脑裂

四、验证测试访问http://192.168.56.20

(1)指定请求的均衡转发:因为两个Web服务器的权重都一样,所以会依次转发给两个Web服务器

(2)Web服务器发生故障时

模拟停止192.168.56.14,暂停其Nginx服务,再进行访192.168.56.20,可以看到只会从11上获取页面

[root@rs2 html]# /etc/init.d/nginx stop
Stopping nginx: [ OK ]

从负载均衡器的状态监控上,也可以看到192.168.56.14这台服务器已经从集群中剔除,当故障修复后,再查看调度器状态信息,可以看到rs2已经重新加入集群当中

[root@lb01 ~]# ipvsadm -L -n  #lb01上查看调度信息,可以看到rs2已经从集群中剔除
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.56.20:80 wrr persistent 20
-> 192.168.56.11:80 Route 100 0 2

[root@rs2 html]# /etc/init.d/nginx start  #重启rs2上的nginx服务
Starting nginx:    [ OK ]
[root@lb01 ~]# ipvsadm -L -n  #可以看到rs2又重新加入到集群当中提供服务
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.56.20:80 wrr persistent 20
-> 192.168.56.11:80 Route 100 2 1
-> 192.168.56.14:80 Route 100 0 0

(3)主负载均衡服务器发生故障时,备机立即充当主机角色提供请求转发服务

模拟停止lb01上的keepalived服务,可以看到lb01上的vip漂移到了lb02上,但继续访问vip却不受影响。当主负载均衡器(lb01)服务恢复时,vip又会重新漂移到主负载均衡器上(lb01)

[root@lb01 ~]# ip addr |grep 192.168.56.20
inet 192.168.56.20/24 scope global secondary eth0
[root@lb01 ~]# systemctl stop keepalived
[root@lb01 ~]# ip addr |grep 192.168.56.20
[root@lb02 ~]# ip addr |grep 192.168.56.20
inet 192.168.56.20/24 scope global secondary eth0

Don't forget the beginner's mind

[转帖]LVS入门篇(五)之LVS+Keepalived实战的更多相关文章

  1. 【SSRS】入门篇(五) -- 设置报表格式

    原文:[SSRS]入门篇(五) -- 设置报表格式 在上一节 [SSRS]入门篇(四) -- 向报表添加数据 我们设置好了报表,并可以预览到数据,如下图: 当报表完成后,有个重要的工作就是美化报表格式 ...

  2. LVS入门篇(四)之LVS实战

    一.LVS的NAT模式实战 1.环境说明: HOST OS role remask 192.168.56.12 Centos 7.4 LVS调度器(1.2.7) VIP:192.168.0.104 1 ...

  3. LVS入门篇(五)之LVS+Keepalived实战

    一.实验架构和环境说明 (1)本次基于VMware Workstation搭建一个四台Linux(CentOS 7.4)系统所构成的一个服务器集群,其中两台负载均衡服务器(一台为主机,另一台为备机), ...

  4. LVS入门篇(三)之LVS的工作模式和调度算法

    1.NAT模型 (1)原理图: ①.客户端(200.10.10.1)将请求发往前端的负载均衡器(114.100.80.10),请求报文源地址是CIP(客户端IP),后面统称为CIP),目标地址为VIP ...

  5. LVS入门篇(二)之LVS基础

    1. LVS介绍 LVS是Linux虚拟服务器(LinuxVirtualServers),使用负载均衡技术将多台服务器组成一个虚拟服务器.它为适应快速增长的网络访问需求提供了一个负载能力易于扩展,而价 ...

  6. LVS入门篇(一)之ARP协议

    1.概念 地址解析协议,即ARP(AddressResolutionProtocol),是根据IP地址获取物理MAC地址的一个TCP/IP协议.主机发送信息时将包含目标IP地址的ARP请求广播到网络上 ...

  7. c++入门篇五

    默认参数: //默认参数//函数的默认参数,参数后面有'='//函数参数注意事项,如有一个位置有了默认参数//那么从该位置的后面就必须要有参数 , ) { //b有默认参数,b的后面也应该要有默认参数 ...

  8. redis的入门篇---五种数据类型及基本操作

    查看所有的key keys * 清空所有的key flushall 检查key是否存在 exists key 设置已存在的key的时长 expire key //设置key为10s 查看key还剩多少 ...

  9. 【SSRS】入门篇(六) -- 分组和总计

    原文:[SSRS]入门篇(六) -- 分组和总计 通过[SSRS]入门篇(五) -- 设置报表格式的设计,一份简单格式的报表已产生,如下图: 这节来说说分组和总计: 根据日期.订单对数据进行分组 添加 ...

  10. ElasticSearch入门 第五篇:使用C#查询文档

    这是ElasticSearch 2.4 版本系列的第五篇: ElasticSearch入门 第一篇:Windows下安装ElasticSearch ElasticSearch入门 第二篇:集群配置 E ...

随机推荐

  1. 拓扑排序软件设计——ToplogicalSort_app(含有源码、需求分析、可行性分析、概要设计、用户使用手册)

    @ 目录 前言 1. 需求分析 2. 可行性分析 2.1 简介 2.2 技术可行性分析 2.2.1 技术实现方案 2.2.2 开发人员技能要求 2.2.3 可行性 2.3 操作可行性分析 2.4 结论 ...

  2. 一颗红心,三手准备,分别基于图片(img)/SCSS(样式)/SVG动画实现动态拉轰的点赞按钮特效

    华丽炫酷的动画特效总能够让人心旷神怡,不能自已.艳羡之余,如果还能够探究其华丽外表下的实现逻辑,那就是百尺竿头,更上一步了.本次我们使用图片.SCSS样式以及SVG图片动画来实现"点赞&qu ...

  3. 关于echarts+vue频繁刷新的造成的内存增长问题

    前言 关于解决echarts+ws多次数据刷新渲染,内存增长溢出的尝试. 记录一下,便于下次使用有参考 方法 关闭echarts动画 tooltip的动画设置为false.(echarts动画会缓存, ...

  4. 详解ZooKeeper在微服务注册中心的应用

    本文分享自华为云社区<SpringCloud ZooKeeper 详解,以及与Go.Rust等非Java服务的集成>,作者: 张俭. ZooKeeper,是一个开源的分布式协调服务,不仅支 ...

  5. 带你上手全新版本的Webpack 5

    摘要:webpack5快速入门,船新版本,建议收藏 本文分享自华为云社区<webpack5快速入门,船新版本,建议收藏>,作者:北极光之夜.. 一. 快速上手 1.1 Webpack功能: ...

  6. 一文了解如何使用移动应用安全组件Soot和Flowdroid

    摘要:移动应用安全检测,soot.flowdroid分别作为静态分析.污点分析主要工具,能我们能够快速高效的进行检测分析.本文主要介绍两个工具的基本操作及相应的使用场景 本文分享自华为云社区<移 ...

  7. 巧用别名和 sh 脚本,adb 快速截图和录屏,提高你的效率

    前言 在平时开发过程中,我们经常需要截图和录制视频,尤其是客户端开发和测试. 可能有一些人的姿势是这样的.在电脑上开个模拟器,使用第三方工具后进行截图和录屏.还有一种最原始的方式,在手机上截图和录制视 ...

  8. 华东交通大学2019年ACM 双基 程序设计竞赛 个人题解(A - K)

    目前先放几道题面,等晚上做完实验补 Update:A ~ D,更新剩余的题面(题面复制会有链接水印,懒得一一去除.直接截图) A.签到 真·签到题 输出祝贺祖国成立70周年!即可 B.欧涛的烦恼 思路 ...

  9. mysql和redis库存扣减和优化

    前言 大流量情况下的库存是老生常谈的问题了,在这里我整理一下mysql和redis应对扣除库存的方案,采用jmeter进行压测. JMETER设置 库存初始值50,线程数量1000个,1秒以内启动全部 ...

  10. SpringCloud学习 系列十、服务熔断与降级(3-类级别的服务降级)

    系列导航 SpringCloud学习 系列一. 前言-为什么要学习微服务 SpringCloud学习 系列二. 简介 SpringCloud学习 系列三. 创建一个没有使用springCloud的服务 ...