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

一、实验架构和环境说明

(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:0echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignoreecho "2" >/proc/sys/net/ipv4/conf/lo/arp_announceecho "1" >/proc/sys/net/ipv4/conf/all/arp_ignoreecho "2" >/proc/sys/net/ipv4/conf/all/arp_announcesysctl -p >/dev/null 2>&1echo "RealServer Start OK";;
stop)ifconfig lo:0 downroute del $SNS_VIP >/dev/null 2>&1echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignoreecho "0" >/proc/sys/net/ipv4/conf/lo/arp_announceecho "0" >/proc/sys/net/ipv4/conf/all/arp_ignoreecho "0" >/proc/sys/net/ipv4/conf/all/arp_announceecho "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 keepalivedglobal_defs {notification_email {123456@qq.com}notification_email_from Alexandre.Cassen@firewall.locsmtp_server 127.0.0.1smtp_connect_timeout 30router_id lb01
}
vrrp_instance VI_1 {state MASTER  #指定Keepalived的角色,MASTER为主,BACKUP为备interface eth0virtual_router_id 55  #虚拟路由id号,主备需要一直priority 150  #优先级,数值越大,优先级越高advert_int 1  #检测间隔,默认为1sauthentication {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为80delay_loop 6  #设置健康检查时间,单位为秒lb_algo wrr   #设置负载均衡调度算法为wrrlb_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 100TCP_CHECK {connect_timeout 10nb_get_retry 3connect_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上是否存在VIPinet 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.20inet 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.20inet 192.168.56.20/24 scope global secondary eth0

转载于:https://www.cnblogs.com/linuxk/p/9365189.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/485583.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

任正非深度剖析技术差距:我们为何憎恨化学?

文章来源&#xff1a;今日头条、化工技术宝典关于华为芯片难题和华为情结&#xff0c;近日觉得很有必要必须表达点什么&#xff0c;算是纪念2020这个寒冬&#xff0c;以表明国人还是有人是清醒的&#xff0c;哪怕是装睡着&#xff0c;但心中是明白的。2020年11月10日上午10点&a…

【Brain】复旦类脑研究院:破解大脑奥秘,为实现人工智能自我思考奠定基础...

文章来源:新民晚报图说&#xff1a;复旦类脑研究院 采访对象供图理解大脑的结构与功能是21世纪最具挑战性的前沿科学问题&#xff0c;谁揭开大脑运作的神秘面纱&#xff0c;谁就在重大脑疾病防治和全球智能产业革命中抢占了先机。利用磁共振成像技术观察大脑内部结构&#xff0…

linux system函数传参,Linux系统调用例程system_call和参数传递

系统调用接口调用“int &#xff04;Ox8O”指令进入内核并准各了相关参数后&#xff0c;剩下的工作就由系统调用例程来进行。Linux定义的系统调用 例程的入口为system_call。下面具体介绍system_call所做的工作。system_call是用汇编语言编写的&#xff0c;在i386体系中&#x…

Sci-Hub重生了,这回用上了分布式网络

来源&#xff1a;Python开发者在网站域名屡次被撤销之后&#xff0c; Sci-Hub 创始人 Alexandra Elbakyan 在分布式域名网络 Handshake 上注册了新的网站。现在&#xff0c;每个用户都可以直接通过服务门户和 NextDNS 直接访问 Sci-Hub。NextDNS&#xff1a;https://learn.name…

Dede更新提示DedeTag Engine Create File False的解决办法

第一种情况&#xff1a;列表、频道、文章等命名规则未填写或填写错误 此种情况较为少见&#xff0c;因为初级用户一般不会去修改这些东西&#xff0c;情况可以大致分为&#xff1a; 命名规则未填写&#xff08;即为空&#xff09;解决方法&#xff1a;只需填好相应的规则即可&a…

超级人工智能何时能实现?

来源&#xff1a;赛先生制版编辑 &#xff1a;Morgan撰文&#xff1a;斯图尔特罗素&#xff08;加州大学伯克利分校计算机科学家&#xff0c;人类兼容人工智能中心主任&#xff09;01近未来1997年5月3日&#xff0c;IBM制造的国际象棋计算机“深蓝”和国际象棋世界冠军加里卡斯…

linux cache buffer区别,Linux buffer/cache异同

buffers与cached1)、异同点在Linux 操作系统中&#xff0c;当应用程序需要读取文件中的数据时&#xff0c;操作系统先分配一些内存&#xff0c;将数据从磁盘读入到这些内存中&#xff0c;然后再将数据分发给应用程序&#xff1b;当需要往文件中写 数据时&#xff0c;操作系统先…

sql中join与left-join图解区别

select a.* from YG_BRSYK a left join(SELECT DISTINCT SYXH,STUFF((SELECT 、MS FROM #lsb where SYXHt.SYXH FOR XML PATH()),1,1,) AS MSFROM #lsb as t) c on a.SYXHc.SYXH WHERE c.MS IS NOT NULL order by RYBQ --注&#xff1a;left join...on 为左关联&#xff0c;保…

很遗憾,自然语言理解是AI尚未攻克的领域

来源: Venture Beat作者: Pieter Buteneers编译: 科技行者短短几年之内&#xff0c;深度学习算法得到了长足发展&#xff0c;不仅在棋类游戏中击败了全球最顶尖的选手&#xff0c;也能够以等同于、甚至超越人类的准确率识别人脸。但事实证明&#xff0c;人类语言仍是一项独特且…

jsp+javabean实现购物车

采用Model1&#xff08;jspjavabean&#xff09; 实现DBHelper类创建实体类创建业务逻辑类&#xff08;dao&#xff09; DBHelper类的设计package util;import java.sql.Connection; import java.sql.DriverManager;public class DBHelper {private static final String drive…

里程碑 | 原来大脑有两套GPS!陆军军医大学张生家团队发现海马外全新空间导航系统...

来源&#xff1a;iNature位置细胞&#xff0c;网格细胞&#xff0c;边界细胞和头部方向细胞的空间选择性激发是构成以海马-肠内复合体为中心的典型空间导航系统的基本构建块。虽然可以在整个大脑中找到头部方向细胞&#xff0c;但是海马结构外部的空间调节通常与其他表示形式&a…

iar 连接linux开发板,LED裸机程序(IAR)

LED裸机程序(IAR)一、实验环境开发环境&#xff1a;IAR5.30开发板&#xff1a;UT-S3C6410开发工具&#xff1a;JLINK V8二、实验目的在无操作系统的开发板上&#xff0c;运行程序&#xff0c;掌握裸机程序的开发过程&#xff0c;熟悉IAR和JLINK的使用。三、实验步骤1、准备工作…

简易呼吸灯c语言程序,呼吸灯 - 单片机教程 - C语言网

1.双定时器呼吸灯实现呼吸灯的实现原理就是让小灯的IO端口在一段时间里PWM由大到小变化的占空比输出&#xff0c;接着又由小到大的占空比输出&#xff0c;小灯显示效果就是时亮时暗地交替闪烁。首先我们用定时器0定时0.1ms&#xff0c;全局变量pwm在其中断函数里执行简单的从0到…

Python学习---面向对象的学习[深入]

类的深入学习 a. Python中一切事物都是对象 b. class Foo: pass obj Foo() # obj是对象&#xff0c;Foo类 # Foo类也是一个对象&#xff0c;type的对象 c. 类都是type类的对象 type(..) “对象”都是以类的对象 类() d. 类实际上是type类型的对象&#xff0c;所有的…

TCP/IP模型

应用层&#xff08;会话层&#xff0c;表示层&#xff0c;应用层&#xff09; HTTP FTP DNS 传输层&#xff08;传输层&#xff09; TCP UDP 网际层&#xff08;网络层&#xff09; IP 网络接口层(物理层…

c语言银行卡管理系统程序设计报告,《c语言程序设计》课程设计报告-职工信息管理系统.doc...

《c语言程序设计》课程设计报告-职工信息管理系统.doc还剩24页未读&#xff0c;继续阅读下载文档到电脑&#xff0c;马上远离加班熬夜&#xff01;亲&#xff0c;很抱歉&#xff0c;此页已超出免费预览范围啦&#xff01;如果喜欢就下载吧&#xff0c;价低环保&#xff01;内容…

今年,自动驾驶卡车将在无人驾驶的情况下上路

文章来源&#xff1a;IEEE电气电子工程师Photo: TuSimpleFirst in Freight: In 2021, San Diego–based startup TuSimple plans to deploy autonomous trucks that drive themselves from pickup to delivery without anybody on board.Tesla、Uber、Cruise和Waymo等公司承诺&…

线上服务CPU100%问题快速定位实战

功能问题&#xff0c;通过日志&#xff0c;单步调试相对比较好定位。 性能问题&#xff0c;例如线上服务器CPU100%&#xff0c;如何找到相关服务&#xff0c;如何定位问题代码&#xff0c;更考验技术人的功底。 58到家架构部&#xff0c;运维部&#xff0c;58速运技术部联合进行…

最新研究:超级人工智能,从理论上就无法控制

文章来源&#xff1a;机器之心作者&#xff1a;Charles Q. Choi 编辑&#xff1a;泽南、杜伟近日&#xff0c;一项新的研究发现&#xff0c;从理论上来看&#xff0c;人类不可能控制超级人工智能。更为糟糕的是&#xff0c;这项研究也明确了人类无法在这种 AI 生成之时发现它…

看懂2020年智能浪潮,我们从百度和谷歌的AI足迹出发

来源&#xff1a; 脑极体2020年已经过去&#xff0c;无论我们过得顺遂平安&#xff0c;还是过得无比艰难&#xff0c;我们应该都会记住这一年。回顾2020年&#xff0c;在这个不同寻常的疫情之年&#xff0c;科技成为人类抗击疫情的关键&#xff0c;而人工智能技术投入抗疫战争之…