2. keepalived结合LVS配合使用

news2024/11/15 8:22:32

keepalived结合LVS配合使用

  • 1、后端nfs存储提供项目文件
  • 2、后端nfs上集中安装MySQL,共用数据库
  • 3、业务服务器通过LNMP正常部署wordpress博客,客户端通过DNS解析可正常访问
  • 4、所有业务服务器上修改arp参数、配置VIP
  • 5、配置keepalived实现LVS高可用
    • 5.1 keepalived结合LVS的作用
    • 5.2 在负载均衡器上安装keepalived
    • 5.3 编辑keepalived配置文件
    • 5.4 启动keepalived服务,查看验证
    • 5.5 测试通过VIP访问业务

在这里插入图片描述

1、后端nfs存储提供项目文件

2、后端nfs上集中安装MySQL,共用数据库

3、业务服务器通过LNMP正常部署wordpress博客,客户端通过DNS解析可正常访问

4、所有业务服务器上修改arp参数、配置VIP

[root@web01 ~]# vim /etc/sysctl.conf 
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1

[root@web01 ~]# sysctl -p
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
[root@web01 ~]# ip addr add dev lo 192.168.140.100/32
[root@web01 ~]# ip addr show lo
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet 192.168.140.100/32 scope global lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever

5、配置keepalived实现LVS高可用

5.1 keepalived结合LVS的作用

1、自动生成负载均衡规则(虚拟服务、后端real server)
2、实现lvs负载均衡器的高可用
3、对后端业务服务器有健康状态检查功能

5.2 在负载均衡器上安装keepalived

[root@master_lvs ~]# yum install -y keepalived ipvsadm 

5.3 编辑keepalived配置文件

主调度器的配置

[root@master_lvs ~]# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived

global_defs {
   router_id master_lvs
}

vrrp_instance blog {             // keepalived虚拟组名
    state MASTER								// 状态
    interface ens33							// 在哪块网卡配置VIP
    virtual_router_id 51			  // 虚拟组ID
    priority 100								// 优先级
    advert_int 1								// 心跳间隔,单位秒
    authentication {
        auth_type PASS
        auth_pass redhat
    }
    virtual_ipaddress {
        192.168.140.100
    }
}

virtual_server 192.168.140.100 80 { 
    delay_loop 6
    lb_algo rr
    lb_kind DR
    persistence_timeout 300
    protocol TCP

    real_server 192.168.140.12 80 {
        weight 1
        TCP_CHECK {
            connect_port 80
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
    real_server 192.168.140.13 80 {
        weight 1
        TCP_CHECK {
            connect_port 80
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
}

从调度器的配置

[root@slave_lvs ~]# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived

global_defs {
   router_id slave_lvs
}

vrrp_instance blog {
    state BACKUP							// BACKUP代表从状态
    interface ens33
    virtual_router_id 51
    priority 50							// 低优先级
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass redhat
    }
    virtual_ipaddress {
        192.168.140.100
    }
}

virtual_server 192.168.140.100 80 { 
    delay_loop 6
    lb_algo rr
    lb_kind DR
    persistence_timeout 300
    protocol TCP

    real_server 192.168.140.12 80 {
        weight 1
        TCP_CHECK {
            connect_port 80
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
    real_server 192.168.140.13 80 {
        weight 1
        TCP_CHECK {
            connect_port 80
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
}

5.4 启动keepalived服务,查看验证

[root@master_lvs ~]# 
[root@master_lvs ~]# systemctl enable --now keepalived
Created symlink from /etc/systemd/system/multi-user.target.wants/keepalived.service to /usr/lib/systemd/system/keepalived.service.
[root@master_lvs ~]# 

[root@slave_lvs ~]# systemctl enable --now keepalived
Created symlink from /etc/systemd/system/multi-user.target.wants/keepalived.service to /usr/lib/systemd/system/keepalived.service.
[root@slave_lvs ~]# 

分别在主、备调度上查看LVS负载均衡规则

[root@master_lvs ~]# 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.140.100:80 rr persistent 300
  -> 192.168.140.12:80            Route   1      0          0         
  -> 192.168.140.13:80            Route   1      0          0      
[root@slave_lvs ~]# 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.140.100:80 rr persistent 300
  -> 192.168.140.12:80            Route   1      0          0         
  -> 192.168.140.13:80            Route   1      0          0   

正常情况下,只有主调度上会出现VIP,客户端所有的流量从主经过

[root@master_lvs ~]# ip addr show 
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:cc:6b:2f brd ff:ff:ff:ff:ff:ff
    inet 192.168.140.10/24 brd 192.168.140.255 scope global noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet 192.168.140.100/32 scope global ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fecc:6b2f/64 scope link 
       valid_lft forever preferred_lft forever

5.5 测试通过VIP访问业务

修改解析

C:\Users\admin>ping blog.linux.com

正在 Ping blog.linux.com [192.168.140.100] 具有 32 字节的数据:
来自 192.168.140.100 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.140.100 的回复: 字节=32 时间<1ms TTL=64

在这里插入图片描述将主调度停掉,在从调度上查看VIP

[root@slave_lvs ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:29:e5:43 brd ff:ff:ff:ff:ff:ff
    inet 192.168.140.11/24 brd 192.168.140.255 scope global noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet 192.168.140.100/32 scope global ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe29:e543/64 scope link 
       valid_lft forever preferred_lft forever

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

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

相关文章

【大学物理】期末复习双语笔记

3 vectors and scalar 20 damped harmonic motion,forced harmonic motion, superposition of SHM damped harmonic motion underdamped motion:欠阻尼 critical damped零界阻尼 over damped过阻尼 energy of damped harmonic motion application of damped oscillation:减震器…

Python的super方法两种调用方式解析

Python由于具有多继承的特点&#xff0c;因此在使用super()方法的时候&#xff0c;需要考虑调用的是哪个父类的方法&#xff0c;这里面涉及到以下内容&#xff1a; 菱形继承(钻石集成)MRO&#xff08;method resolution order&#xff09; 下面的图像就是菱形继承。 抛开复…

Spring 中如何控制 Bean 的加载顺序?

如果你脱口而出说添加 Order 注解或者是实现 Ordered 接口&#xff0c;那么恭喜&#xff0c;你掉坑了。 一 Order 注解和 Ordered 接口 在 Spring 框架中&#xff0c;Order 是一个非常实用的元注解&#xff0c;它位于 spring-core 包下&#xff0c;主要用于控制某些特定上下文…

va_start和va_end使用介绍

一 概述 采用C语言编程的时候&#xff0c;函数中形式参数的数目通常是确定的&#xff0c;在调用时要依次给出与形式参数对应的所有实际参数。但在某些情况下希望函数的参数个数可以根据需要确定。典型的例子有大家熟悉的函数printf()、scanf()和系统调用execl()等。那么它们是怎…

【Docker】学习笔记(超万字图文整理)

前言 再此感谢黑马程序员提供的Docker课程&#xff01; 什么是Docker&#xff1f;看这一篇干货文章就够了&#xff01; UPD: 补充更新微服务集群、Docker镜像仓库部分内容 所有笔记、生活分享首发于个人博客 想要获得最佳的阅读体验&#xff08;无广告且清爽&#xff09;&#…

ai写作神器app有哪些?好用的智能写作APP推荐

ai写作神器app有哪些&#xff1f;AI写作神器app在现代写作领域正迅速崭露头角&#xff0c;它们不仅极大提升了创作效率&#xff0c;而且通过集成前沿的人工智能技术&#xff0c;为创作者们提供了前所未有的便利。这些app能够智能分析写作需求&#xff0c;快速生成高质量的内容&…

PMP(项目管理)- PMBOK第七版重点解析

PMP&#xff08;项目管理&#xff09;- PMBOK第七版重点解析 本文内容是PMBOK第七版的重点章节精华提炼 参考资料内容&#xff1a;PMBOK第七版&PRINCE2第七版 参考资料在文末获取&#xff0c;关注我&#xff0c;分享优质前沿资料&#xff08;IT、运维、编码、互联网…&a…

边缘计算的AI小板——OrangePi AI Pro

简介 OrangePi AI Pro是一款基于Allwinner H6处理器的嵌入式AI计算设备&#xff0c;适用于物联网和边缘计算。它具有强大的性能、低功耗、多接口和小尺寸。 本文分为三个部分&#xff1a; 一、对该板进行简单的开箱介绍。 二、 将SD卡中的系统迁移到由于该板支持SD卡、SSD…

Kong网关身份认证

认证的步骤&#xff1a; 启用认证插件。创建用户。给用户分配认证信息&#xff08;扩展&#xff1a;账号密码 等&#xff09;。请求时&#xff0c;带上认证信息。 key-auth: 创建用户&#xff1a; [rootlocalhost etc]# curl -i -X POST http://localhost:8001/consumers -…

【教程】如何实现WordPress网站降级(用于解决插件和主题问题)

在最新可用版本上运行WordPress安装、插件和主题是使用该平台的关键最佳实践。还建议使用最新版本的PHP。但是,在某些情况下,这是不谨慎或不可能的。 如果您发现自己处于这种情况,您可能需要撤消更新并降级您的WordPress网站(或其中的一部分)。幸运的是,有一些方法可用于…

数字逻辑电路交通信号灯控制器设计与multisim仿真

当今时代是一个自动化时代,交通灯控制等很多行业的设备都与计算机密切相关。因此,一个好的交通灯控制系统,将给道路拥挤、违章控制等方面给技术革新。随着大规模的集成电路及计算机技术的迅速发展,以及人工智能在控制技术方面的广泛运用,智能设备有了很大的发展,是现在科…

Systemd服务配置排坑-TasksMax参数

一、背景 由于产品是Java程序&#xff0c;之前都是通过封装的start.sh运行即可。但是出于架构调整&#xff0c;改换为Ansible进行自动化部署&#xff0c;同时改用Systemd service的方式来对程序进行管理。 但不知道为啥原因&#xff0c;使用systemctl启动这个程序&#xff0c;就…

如何优雅的解析多层JSON报文数据?什么是Ognl?

在日常项目开发中&#xff0c;经常遇到与其他数据交互就需要进行数据传输处理&#xff0c;那么当对方系统返回的数据报文有多层复杂的json数据时候&#xff0c;如何简单快捷的获取指定节点的数据呢&#xff0c;答案是可以使用Ognl来解决。 1.什么是ognl&#xff1f; OGNL全称…

一位美国的PM分享:AI产品经理的10大技能

从传统角度来看&#xff0c;一款成功的产品需要拥有稳定的功能&#xff0c;至少要满足甚至超出用户的期望&#xff0c;并且能够为业务的增长作出重大贡献。产品经理的主要职责包括设定和管理用户期望&#xff0c;定期收集可量化的反馈信息&#xff0c;严格地与工程师进行沟通&a…

【代码随想录——动态规划——理论基础】

1.理论基础 动态规划&#xff0c;英文&#xff1a;Dynamic Programming&#xff0c;简称DP&#xff0c;如果某一问题有很多重叠子问题&#xff0c;使用动态规划是最有效的。 所以动态规划中每一个状态一定是由上一个状态推导出来的&#xff0c;这一点就区分于贪心&#xff0c…

Jenkins的jdk和maven配置

目录 传送门前言一、概念二、JDK的配置三、Maven配置四、环境变量配置五、坑 传送门 SpringMVC的源码解析&#xff08;精品&#xff09; Spring6的源码解析&#xff08;精品&#xff09; SpringBoot3框架&#xff08;精品&#xff09; MyBatis框架&#xff08;精品&#xff09…

Java+前端+Vue 后端Spring boot 开发的全套UWB定位方案,0.1米高精度定位系统源码

Java前端Vue 后端Spring boot 开发的全套UWB定位方案,0.1米高精度定位系统源码 UWB定位系统由硬件定位设备、定位引擎和应用软件组成。该定位系统应用软件支持PC端和移动端访问&#xff0c;并提供位置实时显示、历史轨迹回放、人员考勤、电子围栏、行为分析、智能巡检等功能…

基于docker的oracle12.2.0.1部署及oracle使用与docker镜像容器制作迁移方法

基于docker的oracle12.2.0.1部署及oracle使用与docker镜像容器制作迁移方法 本文介绍了基于docker的oracle12.2.0.1部署&#xff0c;包含了oracle基本配置、监听器和实例启动方法、PDB和CDB操作方法、表空间建立和用户数据库建立、常见启动问题解决等&#xff0c;并介绍了镜像制…

resultType的类型错误

resultType的类型错误&#xff0c;不能是List而应该是对应的返回Bean对象的类型&#xff0c;VO 这里是引用 org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException: Error querying database. Cause: java.lang…

【Python】【PVE】使用PVE-API对虚拟机进行远程关机

源代码 import requests import urllib3 urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)address "填写PVE的域名/IP:端口" path "/api2/json/nodes/填写节点名称/qemu/填写虚拟机VMID/status/shutdown" url "https://&quo…