小白到运维工程师自学之路 第三十九集 (LVS架构)

news2024/11/28 5:39:46

一、概述

1、lvs

        LVS是Linux Virtual Server的缩写,是一种基于Linux内核的高性能、高可用性的

负载均衡软件。它可以将多台服务器组成一个虚拟的服务器集群,通过负载均衡算法将

客户端请求分发到不同的服务器上,从而提高系统的可用性和性能。LVS支持多种负载

均衡算法,包括轮询、加权轮询、最少连接数等,同时还支持会话保持和健康检查等功

能。LVS是开源软件,广泛应用于互联网、电子商务、游戏等领域。

2、keepalived

        keepalived是一个开源的高可用性软件,它可以在多个服务器之间提供负载均衡

和故障转移。它可以监控服务器的状态,并在服务器出现故障时自动将流量转移到其他

可用的服务器上,以确保服务的连续性和可用性。keepalived支持多种负载均衡算法,

包括轮询、加权轮询、最小连接数等。它还支持多种协议,包括TCP、HTTP、SMTP

等。keepalived可以在Linux和Unix操作系统上运行,并且可以与其他软件集成,如

HAProxy、Nginx等。

二、工作原理

lvs

1. 客户端向LVS发送请求,请求被LVS接收。

2. LVS根据负载均衡算法(如轮询、加权轮询、源地址哈希等)选择一台真实服务器。

3. LVS将请求转发给选中的真实服务器。

4. 真实服务器处理请求并将响应返回给LVS。

5. LVS将响应返回给客户端。

keepalived

1. keepalived在每个节点上运行,每个节点都有一个虚拟IP地址和一个实际IP地址。

2. 当主节点出现故障时,备份节点会接管主节点的虚拟IP地址,从而保证服务的高可用性。

3. keepalived使用VRRP协议来实现节点之间的通信和状态同步。VRRP协议定义了一个虚拟路由器,由多个节点共同维护,其中一个节点为主节点,其他节点为备份节点。

4. 主节点会定期发送VRRP广告包,告知其他节点自己的状态和优先级。备份节点会监听这些广告包,如果主节点出现故障或者优先级比备份节点低,备份节点会接管虚拟IP地址。

5. keepalived还支持健康检查功能,可以定期检查服务的可用性,如果服务不可用,就会将节点的优先级降低,从而避免将故障节点作为主节点。

三、准备工作

1、五台服务器

 2、关闭防火墙

3、lvs主从服务器安装keepalived   ipvsadm

4、web1  web2 服务器安装http

5、nfs文件共享服务器安装nfs

四、部署安装web服务(两台同时部署)

1、配置临时IP

cd /etc/sysconfig/network-scripts/     进入网卡配置文件夹

cp ifcfg-lo ifcfg-lo:666               复制虚拟网卡配置文件

vim ifcfg-lo:666                       配置虚拟网卡

DEVICE=lo:666                          设备名称
IPADDR=192.168.1.234                  虚拟网卡IP
NETMASK=255.255.255.255                虚拟网卡子网掩码
ONBOOT=yes                             是否开机自启
NAME=loopback:666                      虚拟网卡名称

systemctl restart network              重启网卡

route add -host 192.168.1.234/32 dev lo:666   添加本地回环

vim /etc/sysctl.conf     调整ARP参数

net.ipv4.conf.all.arp_ignore=1     表示当接收到ARP请求时,忽略所有接口的IP地址与请求中的目标IP地址不匹配的情况。         
net.ipv4.conf.all.arp_announce=2   表示当发送ARP请求时,使用接口的IP地址作为源IP地址,并将目标IP地址设置为请求中的目标IP地址。            
net.ipv4.conf.default.arp_ignore=1 表示当接收到ARP请求时,忽略默认接口的IP地址与请求中的目标IP地址不匹配的情况。
net.ipv4.conf.default.arp_announce = 2 表示当发送ARP请求时,使用默认接口的IP地址作为源IP地址,并将目标IP地址设置为请求中的目标IP地址。
net.ipv4.conf.lo.arp_ignore = 1    表示当接收到ARP请求时,忽略回环接口的IP地址与请求中的目标IP地址不匹配的情况。
net.ipv4.conf.lo.arp_announce=2    表示当发送ARP请求时,使用回环接口的IP地址作为源IP地址,并将目标IP地址设置为请求中的目标IP地址。

2、安装http

yum -y install httpd       安装http

echo "syh1" >/var/www/html/index.html   在首页文件中写入内容 方便测试

五、部署LVS主服务器

vim /etc/sysctl.conf            调整ARP参数

net.ipv4.conf.all.send_redirects = 0        禁止所有网络接口发送 ICMP 重定向报文
net.ipv4.conf.default.send_redirects=0      禁止默认网络接口发送 ICMP 重定向报文
net.ipv4.conf.ens33.send_redirects = 0      禁止名为 ens33 的网络接口发送 ICMP 重定向报文

touch /etc/sysconfig/ipvsadm    创建lvs负载均衡配置文件

yum install -y keepalived ipvsadm      安装keepalived ipvsadm

vim /etc/keepalived/keepalived.conf    进入keepalived配置文件

global_defs {                       
   router_id LVS_DEVEL1                指定了LVS的路由器ID
}

vrrp_instance master {                 定义了一个VRRP,用于实现高可用性
    state MASTER
    interface ens33
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {                指定了虚拟IP地址
    192.168.1.234
    }
}

virtual_server 192.168.1.234 80 {      定义了一个虚拟服务器,用于实现负载均衡 
    delay_loop 6                       指定了LVS的延迟时间,lb_algo指定了负载均衡算法
    lb_algo rr
    lb_kind DR                         指定了负载均衡的方式,protocol指定了虚拟服务器使用的协议
    #persistence_timeout 50
    protocol TCP

    real_server 192.168.1.211 80 {     定义了实际的服务器
        weight 1                       指定了服务器的权重
        HTTP_GET {                     指定了健康检查的方式
            url {                      url指定了健康检查的URL路径
              path /
            }
            connect_timeout 3          指定了连接超时时间
            nb_get_retry 3             指定了重试次数
            delay_before_retry 3       指定了重试前的延迟时间
        }
    }
    real_server 192.168.1.220 80 {
        weight 1
        HTTP_GET {
            url {
              path /
            }
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
}
               

 

六、部署lvs备份服务器

vim /etc/sysctl.conf            调整ARP参数

net.ipv4.conf.all.send_redirects = 0        禁止所有网络接口发送 ICMP 重定向报文
net.ipv4.conf.default.send_redirects=0      禁止默认网络接口发送 ICMP 重定向报文
net.ipv4.conf.ens33.send_redirects = 0      禁止名为 ens33 的网络接口发送 ICMP 重定向报文

touch /etc/sysconfig/ipvsadm    创建lvs负载均衡配置文件

yum install -y keepalived ipvsadm      安装keepalived ipvsadm

vim /etc/keepalived/keepalived.conf    进入keepalived配置文件


global_defs {
   router_id LVS_DEVEL2                这个地方需要将ID修改为2
}

vrrp_instance master {
    state backup                       将这里修改为备份服务器
    interface ens33
    virtual_router_id 51
    priority 99                        将这里修改为99
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
    192.168.1.234        
    }
}

virtual_server 192.168.1.234 80 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
    #persistence_timeout 50
    protocol TCP

    real_server 192.168.1.211 80 {
        weight 1
        HTTP_GET {
            url {
              path /
            }
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
    real_server 192.168.1.220 80 {
        weight 1
        HTTP_GET {
            url {
              path /
            }
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
}

七、测试

systemctl start keepalived                启动keepalived

systemctl start ipvsadm                   启动ipvsadm

modprobe ip_vs                            加载ip_vs模块

ipvsadm -ln                               查看lvs节点状态

 

 

停掉web1的服务

就可以看到web2的访问页面了

以上就是lvs架构的基本配置方法

如有错误欢迎各位大佬批评指正,我们共同进步

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

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

相关文章

【MQTT 5.0】协议 ——发布订阅模式、Qos、keepalive、连接认证、消息结构

一、前言1.1 MQTT 协议概述1.2 MQTT规范 二、MQTT 协议基本概念2.1 发布/订阅模式2.11 MQTT 发布/订阅模式2.12 MQTT 发布/订阅中的消息路由2.13 MQTT 与 HTTP 对比2.14 MQTT 与消息队列 2.2 服务质量:QoS2.21 QoS 0 最多分发一次2.22 QoS1 至少分发一次2.23 QoS 2 …

一款可以支持SNMP协议的网络型温湿度变送器资料

简单网络管理协议(SNMP),由一组网络管理的标准组成,包含一个应用层协议(application layer protocol)、数据库模型(database schema)和一组资料物件。该协议能够支持网络管理系统&am…

generator和promise和async的异同

一、generator(生成器)是ES6标准引入的新数据类型,他和promise一样都是异步事件的解决方案 //generator函数生成斐波那契// generator(生成器)是ES6标准引入的新数据类型,async就是 Generator 函数的语法糖//本质:用来处理异步事件的对象/包含异步操作的容器functio…

Rust语言从入门到入坑——(4)Rust语法(中)

文章目录 0 引入1、函数1.1、函数参数1.2、函数体1.3、函数返回值 2、条件语句3、循环3.1 、while3.2 、for3.3 、loop循环 4、总结 0 引入 在这里我们需要介绍Rust语法,一共分三部分,第二部分主要是一些如函数,编程中的循环等语法的介绍&am…

小白到运维工程师自学之路 第三十九集 (HAproxy 负载均衡)

一、概述 HAProxy是一款高性能的负载均衡软件,可以将来自客户端的请求分发到多个服务器上,以提高系统的可用性和性能。HAProxy支持多种负载均衡算法,包括轮询、加权轮询、最少连接数等。同时,HAProxy还支持会话保持、健康检查、SS…

redis和mysql

文章目录 一、redis1.1 redis的数据结构都有哪些?1.2 持久化方式有哪些?1.3 怎么保证缓存和数据库数据的一致性?1.4 redis缓存是什么意思? 二、数据库2.1 基本数据类型2.2 MySQL 的内连接、左连接、右连接有什么区别?2.3 MySQL 问题排查都有…

第二章(第三节):导数的应用

1.洛必达法则 1.用途 能够使用洛必达法则解决常见的未定式问题。2.极限下的未定式 如果当 x→a 或 x→∞ 时,函数f(x)和g(x)均趋于零或者无穷,那么极限:可以存在,也可能不存在。通常这种极限为:0/0型或∞/∞型未定式。3.示例 1.lim x→0; (1-cosx) / x 2 ^2

机器人开发--Fast DDS

机器人开发--Fast DDS 1 介绍1.1 DDS概述1.2 Fast DDS 介绍域与域通信跨网络通信 2 内容要素与组件介绍IDL (Interface Definition Language)eProsima Fast DDS-Gen? 3 安装步骤3.1 安装选择(linux源码cmakec)3.2 模块…

shardingsphere第四课shardingsphere-proxy的使用

一、为什么要有服务端分库分表? 配合 ORM 框架使用更友好 当使用 ShardingSphere-JDBC 时,需要在代码中直接编写分库分表的逻辑,如果使用 ORM 框架,会产生冲突。ShardingSphere-Proxy 作为服务端中间件,可以无缝对接 ORM 框架。 对 DBA 更加友好 ShardingSphere-Pr…

第八章 time模块

1. time模块介绍 time 模块提供了各种时间相关的函数,该模块中对于时间表示的格式有如下三种: 时间戳(timestamp):时间戳表示的是从1970 年1 月1 日00:00:00 开始按秒计算的偏移量。 时间元组(struct_tim…

每日复盘|6月19日

7:00-7:20 起床洗漱到教室 7:30-8:15 乐词 8:15-9:05 听力con*1 lec*1 9:05-10:47 听力真题 11:00-11:50 考研英语阅读真题 12:00-12:30 午饭🥣+桃子🍑 12:30-13:30 不背单词 13:30-14:00 午睡 14:00-…

SpringMVC07:Ajax研究

目录 一、项目启动时报错点 二、简介 三、伪造Ajax 四、jQuery.ajax 五、Springmvc实现一个list集合显示前端 六、注册提示效果 一、项目启动时报错点 6月 16, 2023 10:34:37 上午 org.apache.catalina.core.StandardContext filterStart 严重: 启动过滤器异常 java.lan…

6-JMM

目录 1.主内存与工作内存 2.内存间交互操作 Java内存模型的三大特性: happens-before原则(先行发生原则): 3.volatile型变量的特殊规则 ①保证此变量对所有线程的可见性 ②使用volatile变量的语义是禁止指令重排序 JVM定义…

node.js+vue+express企业客户关系管理系统mysql

开发语言 node.js 框架:Express 前端:Vue.js 数据库:mysql 数据库工具:Navicat 开发软件:VScode 随着科学技术的飞速发展,社会的方方面面、各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身…

21.模糊神经网络预测水质评价(附matlab程序)

1.简述 学习目标:模糊神经网络预测水质评价——重风水厂、 高升水厂、秦玺水厂 采用模糊神经网络预测这三个水厂的水质,并进行对比 模糊神经网络(Fuzzy Neural Network, FNN) 背景 系统复杂度的增加,人工智能深度化发展 模糊数学创始人L. A…

io.netty学习(四)ChannelHandler

目录 前言 正文 ChannelHandler ChannelInboundHandler ChannelOutboundHandler ChannelDuplexHandler 总结 前言 先简略了解一下ChannelPipeline和ChannelHandler的概念。 想象一个流水线车间。当组件从流水线头部进入,穿越流水线,流水线上的工…

第四章 组合逻辑电路--数电(期末复习笔记)

第四章 组合逻辑电路 本章重点: 1. 组合逻辑电路的分析与设计方法 2. 常用组合逻辑模块的使用 4.1 概述 4.11 组合逻辑电路 任一时刻的输出仅取决于该时刻的输入,与电路原来的状态无关。4.12 时序逻辑电路 任一时刻的输出不仅取决于现时的输入&am…

电容的基本工作原理

目录 电容器的发展历程现象发现第一个存储电荷的元器件:莱顿瓶真正出名的时刻 为什么电容器的容量单位称为法拉?电容器和电容的区别电容的组成电介质与电解质对电容的影响电容是如何工作的通交流阻直流阻直流通交流 电容器的单位电容的容抗电容常见的种类…

Idea Mybatis插件:提高CRUD效率

mybatis-sql-viewer插件主要提供能力:将mybatis xml转成真实SQL语句、参数mock、SQL规范检查、SQL索引检查、SQL运行、SQL压测及Mybatis SQL语句扫描。 1. 简介 虽然写了很久的CRUD,但是依旧觉得写好CRUD是一件非常难且麻烦的事情,以下的情…

chatgpt赋能Python-python找出不同部分

介绍 在SEO(Search Engine Optimization)领域,比较常见的问题之一是如何快速有效地查找出两段文本的不同部分。这对于优化网站内容或对比竞争对手的网站内容都非常有用。Python作为一种强大的编程语言,其特性和库使得这种任务变得…