lvs+keeplive

article/2025/11/7 12:22:29

Keepalived概述

  • 调度出现单点故障,如何解决?
  • Keepalived实现了高可用集群
  • Keeepalived最初是为LVS设计的,专门监控各服务器节点状态
  • Keepalived后来加入了VRRP功能,防止单点故障

Keepalived运行原理

  • Keepalived检测每个服务器节点状态
  • 服务器节点异常或工作出现故障,Keepalived将故障节点从集群系统剔除
  • 故障节点恢复后,Keepalived再将其加入集群系统中
  • 所有工作自动完成,无需人工干预

lvs+keepalived
Keepalived安装

RHEL7中已经包含Keepalived软件包yum安装即可

yum -y install keepalived

配置文件解析

  • /etc/keepalived/keepalived.conf
  • 备注:配置文件中大括号" { " 前应有宫格,否则会出现 keepalived无法启动或ipvsadm -Ln 无信息
! Configuration File for keepalivedglobal_defs {	notification_email {root@localhost			# 设置报警收件人信箱}notification_email_from admin@keepalived.cn   # 设置发件人smtp_server 127.0.0.1			# 定义邮箱服务器smtp_connect_timeout 30router_id LVS_DEVEL			# 设置路由 IDvrrp_skip_check_adv_addr
#   vrrp_strictvrrp_garp_interval 0vrrp_gna_interval 0
}vrrp_instance VI_1 {		# 定义VRRP热备实例state MASTER			# 热备状态,MASTER表示主服务器,BACKUP表示从服务器interface eth0				# 配置lvs对外开放的IPvirtual_router_id 52		# 随便写,主辅VRID号必须一致priority 150				   # 服务器优先级,数值越大优先级越高advert_int 1				# 通告间隔秒数(心跳频率)authentication {		# 热备认证信息,每个热备组保持一致auth_type PASS		认证类型auth_pass 1111		# /密码字符串,主辅服务器密码必须一致,}virtual_ipaddress {192.168.4.100         #  指定漂移地址(VIP),可以有多个}
}virtual_server 192.168.4.100 80 {          # 设置 vip(地址与端口之间是空格,而不是 “ : ”)delay_loop 6		# 健康检查的间隔时间(秒)lb_algo rr				# 设置调度算法	lb_kind DR			# 设置lvs的工作模式persistence_timeout 50		#  保持客户端的请求在这个时间段内全部发到同一个真实服务器protocol TCP			# 应用服务器采用的是TCP协议real_server 192.168.4.1 80{		第一个Web服务器节点的地址、端口weight 1				# 设置加权轮询权重TCP_CHECK {		# 健康检查方式connect_timeout 3  	# 连接超时(秒)nb_get_retry 3		# 重试次数delay_before_retry 3	#重试间隔}}real_server 192.168.4.2 80{	# 第二个Web服务器节点的地址、端口weight 1TCP_CHECK {connect_timeout 3nb_get_retry 3delay_before_retry 3}}
}

Keepalived + LVS

  • 使用Keepalived高可用解决调度器单点失败问题
  • 主、备调度器上配置lvs 、 keepalived
  • 主调度器异常时,Keepalived启用备用调度器
  • RealServer 运行在DR模式下,修改内核参数并附加VIP

个人实验:
使用5台虚拟机,1台作为客户端主机、2台作为LVS调度器、2台作为Real Server

拓扑:
在这里插入图片描述
步骤:

1、配置web服务器

1> 配置eth0 ip地址
2> 复制网卡配置文件配置 ifcfg-lo:0 配置VIP地址
3> 这里因为web1也配置与代理一样的VIP地址,所以需要修改内核参数,保证VIP地址不会与调度器冲突
4>重启网络服务,设置防火墙与SELinux
5>安装并启动httpd

2、配置调度器(不配置VIP,有keepalvied自动配置)

1> 配置eth0 ip地址
2> 重启网络服务,设置防火墙与SELinux
3> 安装ipvsadm ,若已存在,则需ipvsadm -C 清空规则
4> 安装Keepalived ,修改配置(见配置文件处)

3、客户端测试

1> 停止其中一台httpd服务
2> 在调度器端 ipvsam -Ln 查看状态
3> shutdown其中一台服务器
4> 在调度器端 ip addr show eth0 查看是否获取到了VIP
5> 客户端使用curl命令反复连接http://192.168.4.5,查看访问的页面是否会轮询到不同的后端真实服务器。

名词解释:
VRRP: 虚拟冗余路由,IETF公共标准
HSRP:热备份路由协议,cisco专有。

lvs + keepalived双主配置
通过2个VIP让2台LVS主机均处于工作状态,就是一边为MARSTER时,对应的互备配置就是BACKUP,互为主备结构,提高资源利用率!


http://chatgpt.dhexx.cn/article/U0RYohES.shtml

相关文章

使用keeplive处理socket网络异常断开

网络异常断开原因主要有那些呢?归纳起来主要有以下两种: 1、客户端程序异常。 对于这种情况,我们很好处理,因为客户端程序异常退出会在服务端引发ConnectionReset的Socket异常(就是WinSock2中的10054异常)。…

mysql mm keeplive_mysql +keeplive

下载tar包 ./configure --prefix/usr/local/keepalived --with-kernel-dir/usr/src/kernels/2.6.32-431.el6.x86_64/ \ 注意加内核 &&make && make install cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/ cp /usr/local/keepalived…

解决keep-live使用之后的问题

keep-aliv能够帮助我们实现页面ajax请求只被请求一次,在你跳转页面的时候,也不会被请求多次,可是比如在旅游页面中,当我们在城市选择页面重新选择城市,这个时候就需要重新发送一个ajax请求,来显示对应城市的…

nginx和keeplive实现负载均衡高可用

一、 Keeplive服务介绍 Keeplive期初是专门为LVS设计的,专门用来监控LVS集群系统中各个服务节点的状态,后来又加入VRRP的功能,因此除了配合LVS服务以外,也可以作为其他服务(nginx,haroxy)的高可…

php用Ajax传递数组

代码如下: 定义array数组 var array [1,2,3];$.ajax({url:"cart.php?actdelcart",async:false,type:POST,data:{array:array},dataType:json,traditional: true,success:function(data){alert(data)},error:function(){alert("#");}}); 当我们用ajax传递…

【JQuery】Ajax 参数为数组 的方法

背景介绍 前端页面为HTML, 后端为Spring html中根据多选框的值,使用ajax请求接口动态加载其他元素的选项值。 代码 // select 下拉多选框的值var idCardType $("#idCardType").val();// [2075, 2077, 2078]$.ajax({url : url,type : "…

使用ajax传递数组和后台接收

使用ajax异步的提交多选框得到需要操作的对象的id,这时我们可以把每一个id做出一个对象,之后放到一个数组中,再使用JSON.stringify()对这个数组进行json的格式化;在后台中再inputStream中解析出我们的json字符串,之后只…

ajax传数组,后端接收数组

ajax内容 使用JSON.stringify()将数组转换为JSON字符串 //发送ajax将数组发送给handler$.ajax({url:"admin/batch/remove.json", //服务器接收请求的URL地址type:"post", //设置请求方式postcontentType:"application/json;charsetUTF-8&…

教你怎么用ajax传数组(也可以是转为json)

我之前写过一个关于ajax的详解,那个是标准的ajax,今天介绍的是怎么用ajax传递数组这样的数据类型呢?很多的时候我们需要给后端的数据不是几个单独的数据,一般见到的代码的是这样的: data: { id : id, name : name, se…

Ajax传递数组到后台的两种方式

直接传输不可行 第一种 将ajax参数传递修改为tradition: traditional: true $.ajax({xhrFields: {withCredentials: true},async: true,url: basePath "/consumer/work",type: "post",dataType: "json",traditional: true,data : {sql :text,/…

前端ajax发送数组请求的两种方式

今天踩了一个大坑 就是使用ajax将数组发送到后台 后台的controller接收不到 好的 废话不多说 直接上干货 第一种方式: 直接传送数组 后台接收的话需要使用 RequestParam(value "userIds") Long[ ] 来接收 第二种方式: 将数组转换为List …

jquery ajax 向后台传递数组参数

Ajax 传递数组到后台 博客分类: JavaScript jquery ajax 向后台传递数组参数示例 Js代码 function login123(){ var nameArr new Array(); nameArr.push("adm,in"); nameArr.push("jo,in"); nameArr.p…

JFINAL+Ajax传参 array 数组方法 获取request中数组

前台代码js var _list [];for (var i 0; i < array.length; i) { _list[i] array[i]; } $.ajax({ type: "post",url: "",data: {"ids": _list },dataType: "json",success: function(data){alert("添加成功"); …

ajax向后端传递数组

https://blog.csdn.net/feinifi/article/details/81180673 https://blog.csdn.net/weixin_44150474/article/details/103526735 https://www.cnblogs.com/lijianda/p/9936775.html https://blog.csdn.net/weixin_44150474/article/details/103526735 ajax在web项目开发中经常…

ajax通过post方法传数组

ajax在web项目开发中经常会用到&#xff0c;平时我们传递数据&#xff0c;基本都是一个参数名对应一个参数值&#xff0c;后端通过参数名就可以得到参数&#xff0c;从而进行相关逻辑处理&#xff0c;但是有时候我们会遇到批量操作&#xff0c;比如批量删除一个列表&#xff0c…

ajax 传数组

使用 ajax 传数组&#xff0c;可以有很多种方式实现&#xff0c;如将数组序列化成 json字符串&#xff0c;或者将数组转换成字符串&#xff0c;都能实现。这里介绍一种方式&#xff0c;添加属性 traditional: true&#xff0c;直接传 代码如下 controller package com.approv…

Ajax传递数组

Ajax传递数组与后端接收 在此记录刚开始做开发的时候&#xff0c;Ajax都不怎么会用&#xff0c;都只是传一些简单的字符串&#xff0c;那Ajax怎么将数组传到服务器&#xff0c;先看一下Ajax的结构 //建立两种类型的数组,这两种类型的数组都是经常用到的var arryA new Array(…

ajax传递数组怎么传?ajax数组传递

在我们平时的开发中&#xff0c;经常会需要用到ajax&#xff0c;关于ajax是什么&#xff0c;又该如何传递参数&#xff0c;相信通过上几篇文章你们已经有所了解。但是&#xff0c;ajax中要如何传递数组你们又知道吗&#xff1f;今天我们就来聊一聊ajax中该如何传递数组。 ajax…

java10 var关键字浅析

2018年3月20日&#xff0c;Oracle发布java10。java10为java带来了很多新特性&#xff0c;其中让人眼前一亮的便是var关键字的引入。 从今以后我们可以这样写java代码了。 public class Example {public static void main(String[] args) {var eg new Example;eg.emptyFunc()…

VAR模型Stata实例操作

一.步骤 1.序列平稳性检验 2.确定滞后阶数 3.模型平稳性检验 4.格兰杰因果关系检验 上述检验都通过后再进行以下步骤 5.脉冲响应分析 6.方差分解 二.各步骤的具体解释 1.序列平稳性检验 主要两种方法&#xff1a;单位根检验&#xff0c;看ACF、PACF图的截尾拖尾情况 …