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…

linux应用程序课程设计,linux操作系统与应用课程设计 .pdf

XXXXXXXX 学校Linux 操作系统与应用课程设计题 目 基于RHEL6.4 的ftp 服务器搭建院 (部) 信息工程学院班 级姓 名 XXX学 号 XXXXXXXXX指导教师2019 年 月 日1目录一、设计背景3二、设计目的3三、设计要求3四、软件设计44.1 搭建FTP 服务器44.2C 语言编程4五、调试运行45.1C 语言…

DBCC SHRINKFILE收缩日志/收缩数据库/收缩文件

DBCC SHRINKFILE 收缩相关数据库的指定数据文件或日志文件大小。 语法 DBCC SHRINKFILE ( { file_name | file_id } { [ ,target_size ] | [ , { EMPTYFILE | NOTRUNCATE | TRUNCATEONLY } ] } ) 参数 file_name 是已收缩文件的逻辑名称。文件…

Leetcode--2. 两数相加

给出两个 非空 的链表用来表示两个非负的整数。其中&#xff0c;它们各自的位数是按照 逆序 的方式存储的&#xff0c;并且它们的每个节点只能存储 一位 数字。 如果&#xff0c;我们将这两个数相加起来&#xff0c;则会返回一个新的链表来表示它们的和。 您可以假设除了数字…

【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…

Leetcode--24. 两两交换链表中的结点

给定一个链表&#xff0c;两两交换其中相邻的节点&#xff0c;并返回交换后的链表。 你不能只是单纯的改变节点内部的值&#xff0c;而是需要实际的进行节点交换。 示例: 给定 1->2->3->4, 你应该返回 2->1->4->3. 提交的代码: /** * Definition for sin…

linux db2备份,db2实现备份

db2实现备份/var/db2/db2inst1/sqllib/db2profile;dbbackpath/db2/db2inst1/1;dblogpath/db2/NODE0000;mv $dbbackpath/file/*.gz $dbbackpath/all;mv $dbbackpath/logs/*.gz $dbbackpath/all;mv $dbbackpath/logs/*.tar $dbbackpath/all;db2 backup db urp_rs online to $dbba…

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制造的国际象棋计算机“深蓝”和国际象棋世界冠军加里卡斯…

Ajax:异步js和xml

如果通过之前的转发&#xff0c;或者重定向&#xff0c;很多问题没法解决 比如我给某个视频点个赞&#xff0c;你经过转发或者重定向&#xff0c;最后虽然点赞成功了&#xff0c;但页面刷新了&#xff0c;视频从头开始放了。 异步刷新&#xff1a;如果网页某一个地方需要修改&…

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;人类语言仍是一项独特且…

分层结构,协议,接口,服务

发送文件前的工作&#xff1a; 1. 发起通信的计算机必须将数据通信的通路进行激活 2. 要告诉网络如何识别目的主机 3. 发起通信的计算机要查明目的主机是否开机&#xff0c;并且网络连接正常 4. 发起通信的计算机要清楚&#xff0c;对方计算机中文件管理程序是否做好准备工…

linux怎么抓sip包,Ubuntu下使用Wireshark进行抓包分析(含SIP和RTP包)

遇到需要在Linux下抓包分析的问题&#xff0c;便用到了wireshark&#xff0c;非常强大的抓包分析软件&#xff0c;直接在系统里面安装&#xff0c;然后使用明亮抓包即可!我这里用的是Ubuntuserver版&#xff0c;执行安装&#xff1a;1、apt-get install wireshark安装成功后使用…

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…

php 流(Stream)

http://laravelacademy.org/post/7459.html转载于:https://www.cnblogs.com/cxscode/p/9373936.html