keepalived+lvs(DR)

目录

一、作用

二、安装

1、在192.168.115.3 和192.168.115.4 上安装ipvs和keepalived:

2、配置keepalived

3、查看lvs节点状态

4、web节点配置

5、在web节点上调整ARP参数

6、配置虚拟IP地址与添加回环路由

7、配置nginx网页文档

8、启动服务

9、测试


一、作用

Keepalived 和 LVS(Linux Virtual Server)结合使用可以实现高可用性的负载均衡。在 LVS 中,DR(Direct Routing)模式是其中一种常见的负载均衡模式。

在 Keepalived + LVS(DR)的架构中,Keepalived负责监控主服务器的状态以及进行故障检测。当主服务器发生故障时,Keepalived会自动将虚拟 IP 地址(VIP)移动到备份服务器上,以确保服务的连续性。

而 LVS(DR)负责实际的负载均衡功能。在 DR 模式下,LVS 将负载均衡器配置为直接路由数据包。当客户端发送请求时,数据包会直接发送到目标服务器,而负载均衡器只处理响应数据包的返回路由。这种方式避免了数据包的二次转发,减少了负载均衡器的开销,提高了性能。

这种架构的优点是:
- 可以实现高可用性,通过 Keepalived 监控主服务器的状态并自动进行故障切换。
- 可以实现负载均衡,通过 LVS 将客户端请求均匀地分发到多个服务器上,提高服务性能和可扩展性。
- DR 模式减少了数据包的二次转发,降低了负载均衡器的负载,提高了性能。

总之,Keepalived + LVS(DR)的组合可以提供高可用性的负载均衡解决方案,确保服务的连续性和性能的提升。

二、安装

在四台虚拟机上,我们以如下方式搭建集群:

192.168.115.3 lvs+keepalived
192.168.115.4 lvs+keepalived
192.168.115.5 nginx
192.168.115.6 nginx

1、在192.168.115.3 和192.168.115.4 上安装ipvs和keepalived:

yum install -y keepalived

yum install -y ipvsadm

modprobe ip_vs

lsmod |grep ip_vs

2、配置keepalived

主(192.168.115.3)

vim /etc/keepalived/keepalived.conf

修改后
global_defs {router_id LVS_DEVEL1
}vrrp_instance VI_1 {state MASTERinterface ens33virtual_router_id 51priority 100advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.115.200		}
}virtual_server 192.168.115.200 80 {delay_loop 6lb_algo rrlb_kind DR#persistence_timeout 50protocol TCPreal_server 192.168.115.5 80 {weight 1HTTP_GET {url {path /}connect_timeout 3nb_get_retry 3delay_before_retry 3}}real_server 192.168.115.6 80 {weight 1HTTP_GET {url {path /}connect_timeout 3nb_get_retry 3delay_before_retry 3}}
}

备(192.168.115.4)

vim /etc/keepalived/keepalived.conf

修改后
global_defs {router_id LVS_DEVEL2
}vrrp_instance VI_1 {state BACKUPinterface ens33virtual_router_id 51priority 90advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.115.200		}
}virtual_server 192.168.115.200 80 {delay_loop 6lb_algo rrlb_kind DR# persistence_timeout 50protocol TCPreal_server 192.168.115.5 80 {weight 1HTTP_GET {url {path /}connect_timeout 3nb_get_retry 3delay_before_retry 3}}real_server 192.168.115.6 80 {weight 1HTTP_GET {url {path /}connect_timeout 3nb_get_retry 3delay_before_retry 3}}
}
3、查看lvs节点状态

systemctl start keepalived

ipvsadm -ln

ip a

 备

4、web节点配置

在192.168.115.5 和192.168.115.6 上安装nginx

5、在web节点上调整ARP参数

vim /etc/sysctl.conf

net.ipv4.conf.all.arp_ignore=1 

net.ipv4.conf.all.arp_announce=2 

net.ipv4.conf.default.arp_ignore=1 

net.ipv4.conf.default.arp_announce = 2 

net.ipv4.conf.lo.arp_ignore = 1 

net.ipv4.conf.lo.arp_announce=2

sysctl -p

6、配置虚拟IP地址与添加回环路由

cd /etc/sysconfig/network-scripts/

cp ifcfg-lo ifcfg-lo:0

vim ifcfg-lo:0

ip a

添加回环路由   route add -host 192.168.115.200/32 dev lo:0

7、配置nginx网页文档

8、启动服务

9、测试

客户端访问

 

断掉主,测试备

 主

客户端访问

 

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

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

相关文章

猜数字游戏过程honest(诚实)判定

根据记录的游戏过程文本,判定Tom是否不老实作弊。 (本笔记适合初通 Python 的 coder 翻阅) 【学习的细节是欢悦的历程】 Python 官网:https://www.python.org/ Free:大咖免费“圣经”教程《 python 完全自学教程》,不仅仅是基础那…

更高效稳定 | 基于ACM32 MCU的编程直流电源应用方案

随着电子设备的多样化发展,面对不同的应用场景,需要采用特定的供电电源。因此,在电子产品的开发测试过程中,必不可少使用编程直流电源来提供测试电压,协助完成初步的开发测试过程。 编程直流电源概述 编程直流电源结构…

浅拷贝与深拷贝

作者简介: zoro-1,目前大一,正在学习Java,数据结构等 作者主页: zoro-1的主页 欢迎大家点赞 👍 收藏 ⭐ 加关注哦!💖💖 浅拷贝与深拷贝 浅拷贝浅拷贝定义浅拷贝代码演示浅…

【seaweedfs】3、f4: Facebook’s Warm BLOB Storage System 分布式对象存储的冷热数据

论文地址 Facebook的照片、视频和其他需要可靠存储和快速访问的二进制大型对象(BLOB)的语料库非常庞大,而且还在继续增长。随着BLOB占用空间的增加,将它们存储在我们传统的存储系统-- Haystack 中变得越来越低效。为了提高我们的存储效率(以Blob的有效复…

WPF实战项目十二(API篇):配置AutoMapper

1、新建类库WPFProjectShared,在类库下新建文件夹Dtos,新建BaseDto.cs,继承INotifyPropertyChanged,实现通知更新。 public class BaseDto : INotifyPropertyChanged{public int Id { get; set; }public event PropertyChangedEv…

uniapp 开发微信小程序使用echart的dataZoom属性缩放功能不生效!bug记录!

在本项目中使用的是这个echart库 在项目中添加了dataZoom配置项但是不生效,突然想到微信小程序代码大小的限制,之前的echarts.js是定制的,有可能没有加dataZoom组件。故重新定制echarts.js。之前用的echarts版本是5.0.0,这次也是…

linux系统(centos、ubuntu、银河麒麟服务、uos、deepin)判断程序是否已安装,通用判断方法:使用所有应用和命令的判断

前言 项目中需要判断linux服务器中是否已经安装了某个服务 方法有很多种,但是很多都不通用, 脚本代码就不容易做成统一的 解决方案 用下面的脚本代码去进行判断 用jdk测试 脚本意思如下: 输入java -version命令,将返回的字…

aws PinPoint发附件demo

php 版aws PinPoint发附件demo Laravel8框架,安装了"aws/aws-sdk-php": "^3.257" 主要代码: public function sendRawMail(Request $request) {$file $request->file(attachment);/*echo count($file);dd($file);*/$filenam…

Webstorm 入门级玩转uni-app 项目-微信小程序+移动端项目方案

1. Webstorm uni-app语法插件 : Uniapp Support Uniapp Support - IntelliJ IDEs Plugin | Marketplace 第一个是不收费,第二个收费 我选择了第二个Uniapp Support ,有试用30天,安装重启webstorm之后,可以提高生产率…

二叉树中的最大路径和-递归

路径 被定义为一条从树中任意节点出发,沿父节点-子节点连接,达到任意节点的序列。同一个节点在一条路径序列中 至多出现一次 。该路径 至少包含一个 节点,且不一定经过根节点。 路径和 是路径中各节点值的总和。 给你一个二叉树的根节点 root…

pgadmin4中的备份与恢复

一,postgresql 数据的备份与恢复 (一)数据库备份与恢复 1,备份 windows环境 1> dump 逻辑备份 1,用管理员身份打开power shell 2,切换到本机 postgresql 安装目录下的 bin 目录: PS C…

ChatGPT + Flutter快速开发多端聊天机器人App

下载地址:ChatGPT Flutter快速开发多端聊天机器人App 下载地址:ChatGPT Flutter快速开发多端聊天机器人App