高可用集群HA、LVS+Keepalived、健康检测

 keepalived是集群管理中保证集群高可用(HA)的一个服务软件,其功能类似于heartbeat,用来防止单点故障。

2.工作原理

keepalived是以VRRP协议为实现基础的,当backup收不到vrrp包时就认为master宕掉了,这时就需要根据VRRP的优先级来选举一个backup当master。这样我们就可以保证集群的高可用

keepalived主要有三个模块,分别是core、check和vrrp。core模块为keepalived的核心,负责主进程的启动、维护以及全局配置文件的加载和解析。check负责健康检查,包括常见的各种检查方式。vrrp模块是来实现VRRP协议的

如何判断谁是master:看vip,vip在谁上谁就是master

什么是脑裂

脑裂(split-brain):指在一个高可用(HA)系统中,当联系着的两个节点断开联系时,本来为一个整体的系统,分裂为两个独立节点,这时两个节点开始争抢共享资源,结果会导致系统混乱,数据损坏

脑裂:backup强资源,master不认为自己会死,他俩抢着为客户端服务

解决方案:爆头 master

二:LVS+Keepalived


web-1

加载缓存

yum -y install httpd //安装阿帕奇

systemctl start httpd

切换到默认发布目录:cd /var/www/html/

写内容 echo 

systemctl enable httpd

web-2

加载缓存

yum -y install httpd

systemctl enable httpd

2台负载均衡服务器

Nginx-Master(默认master对外提供服务)

仓库文件

yum -y install  nginx

systemctl start nginx

systemctl enable nginx

创建池子

调用地址池

nginx -t 检查语法错误

nginx -s reload 

安装keepalived软件

yum -y install keepalived 

加配置文件

! Configuration File for keepalived

global_defs {
   router_id director1  
}

vrrp_instance VI_1 {
    state MASTER      
    interface ens33   
    virtual_router_id 80  
    priority 100                        //  master优先级
    advert_int 1                      //每隔一秒检查一次
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {          //VIP
        10.0.0.110/24            //注意与IP为同一个网段
    }
}

systemctl start keepalived

systemctl enable keepalived

Nginx-Backup

vi /etc/yum.repos.d/nginx.repo

yum -y install keepalived 

! Configuration File for keepalived

global_defs {
   router_id director2
}

vrrp_instance VI_1 {
    state BACKUP
    interface ens33
    virtual_router_id 80
    priority 60
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.142.110/24
    }
}

systemctl start keepalived

systemctl enable keepalived

测试:

负载均衡出现问题,keepalived正常

解决问题:keepalived停止,在keepalived做健康检测

健康检测

Nginx-Master

systemctl stop nginx 

#!/bin/bash
#+检查nginx进程是否存在   ps查看进程  
counter=$(ps -C nginx --no-heading|wc -l)         
    if [ "${counter}" = "0" ]; then
  systemctl stop keepalived 
fi

vi keepalived.conf

vi keepalived.conf

systemctl restart keepalived

Nginx-Backup

测试:

可以访问

二:LVS+Keepalived

给2lvs做高可用

web-1、web-2环境同上

测试是否可以用

web-1

在回环接口lo绑定VIP

永久开始忽略arp广播(前两条)and永久开始路由转发(最后一条)

web-2

在回环接口lo绑定VIP

永久开始忽略arp广播(前两条)and永久开始路由转发(最后一条)

实现负载均衡

设置VIP10.9.12.110

生成配置文件

创建ipvsadm的文件用来存放lvs的规则

添加规则

访问测试

lvs高可用部署

! Configuration File for keepalived

global_defs {
   router_id lvs-keepalived-master   
}

vrrp_instance VI_1 {
    state MASTER
    interface ens33              
    virtual_router_id 80                
    priority 100           
    advert_int 1            
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.142.110/24   
    }
}

virtual_server 192.168.142.110 80 {   
    delay_loop 3
    lb_algo rr  
    lb_kind DR     
    nat_mask 255.255.255.0
    protocol TCP     
    real_server 192.168.142.145 80 {
        weight 1
        inhibit_on_failure   
        TCP_CHECK {        
            connect_port 80   
            connect_timeout 3  
            }
        }
    real_server 192.168.142.149 80 {
        weight 1
        inhibit_on_failure
        TCP_CHECK {
            connect_timeout 3
            connect_port 80
            }
        }
}
 

nginx-backup

lvs高可用部署

! Configuration File for keepalived

global_defs {
   router_id lvs-keepalived-backup
}

vrrp_instance VI_1 {
    state BACKUP
    interface ens33
    nopreempt                    #不抢占资源
    virtual_router_id 80
    priority 50
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.142.110/24
    }
}
virtual_server 192.168.142.110 80 {
    delay_loop 3
    lb_algo rr
    lb_kind DR
    nat_mask 255.255.255.0
    persistence_timeout 20
    protocol TCP
    real_server 192.168.142.145 80 {
        weight 1
        inhibit_on_failure
        TCP_CHECK {
            connect_port 80
            connect_timeout 3
            }
        }
    real_server 192.168.142.149 80 {
        weight 1
        inhibit_on_failure
        TCP_CHECK {
            connect_timeout 3
            connect_port 80
            }
        }
}

最后访问:

扩展1:

keepalived坏了可以继续使用

扩展2

模拟web-1出现故障、

利用监控检测

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

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

相关文章

如何把文件从本地上传云服务器

1、从服务器下载文件到本地(如win电脑) scp:命令, iss_train0110.33.16.2是服务器用户名,10.33.16.2是服务器ip, :是选择 /mnt/linaro/sample/sample/YOLOv8/cpp/yolov8_bmcv/yolov8_bmcv.soc:服…

vue中预览xml并高亮显示

项目中有需要将接口返回的数据流显示出来&#xff0c;并高亮显示&#xff1b; 1.后端接口返回blob,类型为xml,如图 2.页面中使用pre code标签&#xff1a; <pre v-if"showXML"><code class"language-xml">{{xml}}</code></pre> …

【操作系统】进程的通信IPC

进程通信是指进程之间的信息交换。 低级通信方式&#xff1a;PV操作 高级通信方式&#xff1a;1.共享存储2.消息传递3.管道通信 共享存储 低级数据结构共享&#xff0c;高级存储区共享。 对共享空间进行读写操作时&#xff0c;需要用到互斥工具。 消息传递 利用发送消息和…

真空腔体的设计要点

真空腔体是保持内部为真空状态的容器&#xff0c;真空腔体设计制作要考虑容积、材质和形状。 1、根据应用需求选择腔体形状。几种代表性的真空腔体包括垂直真空腔体、水平真空腔体、立方真空腔体和球形真空腔体。 2、根据获得真空度选择腔体材质。钛用于极高真空&#xff1b;…

Navicat连接mysql8.0:提示无法加载身份验证插件“caching_sha2_password”

Navicat连接mysql时&#xff0c;提示&#xff1a;Unable to load authentication plugin ‘caching_sha2_password‘. 原因&#xff1a;mysql 8.0 默认使用 caching_sha2_password 身份验证机制。 D:\MySQL8.0\install\bin>mysql -uroot -p123456789 #登录 mysql: [War…

基于hutool实现国密SM2的加解密,简直不要太简单!

程序员的公众号&#xff1a;源1024&#xff0c;获取更多资料&#xff0c;无加密无套路&#xff01; 最近整理了一波电子书籍资料&#xff0c;包含《Effective Java中文版 第2版》《深入JAVA虚拟机》&#xff0c;《重构改善既有代码设计》&#xff0c;《MySQL高性能-第3版》&am…

【C#项目实战】控制台游戏 勇士斗恶龙(2)——游戏场景的设置以及玩家战斗逻辑

君兮_的个人主页 即使走的再远&#xff0c;也勿忘启程时的初心 C/C 游戏开发 Hello,米娜桑们&#xff0c;这里是君兮_&#xff0c;最近开始正式的步入学习游戏开发的正轨&#xff0c;想要通过写博客的方式来分享自己学到的知识和经验&#xff0c;这就是开设本专栏的目的。希望…

2023年五一杯数学建模A题无人机定点投放问题求解全过程论文及程序

2023年五一杯数学建模 A题 无人机定点投放问题 原题再现&#xff1a; 随着科学技术的不断发展&#xff0c;无人机在许多领域都有着广泛的应用。对于空中执行定点投放任务的无人机&#xff0c;其投放精度不仅依赖于无人机的操作技术&#xff0c;而且还与无人机执行任务时所处状…

JVM 虚拟机 ----> Java 类加载机制

文章目录 JVM 虚拟机 ----> Java 类加载机制一、概述二、类的生命周期1、类加载过程&#xff08;Loading&#xff09;&#xff08;1&#xff09;加载&#xff08;2&#xff09;验证&#xff08;3&#xff09;准备&#xff08;4&#xff09;解析&#xff08;5&#xff09;初始…

IMU+摄像头实现无标记运动捕捉

惯性传感和计算机视觉的进步为在临床和自然环境中获得精准数据带来了新可能。然而在临床应用时需要仔细地将传感器与身体对齐&#xff0c;这减慢了数据收集过程。 随着无标记运动捕捉的发展&#xff0c;研究者们提出了一个新的深度学习模型&#xff0c;利用来自视觉、惯性传感…

【Linux常用命令】

编程不良人 Linux 笔记 一、防火墙相关 1、查看防火墙状态 systemctl status flrewalld2、如果防火墙是开启状态的&#xff0c;需要关闭 systemctl stop firewalld3、永久行关闭操作&#xff08;禁止开机自启动&#xff09; 因为防火默认是开启状态的&#xff0c;如果只是手…

idea把项目打成jar包步骤详解

最近产品需要预研一个小功能&#xff0c;开始后在本地开发测试好之后&#xff0c;需要打成jar提供出去&#xff0c;今天弄完了&#xff0c;决定把这个步骤记录下来&#xff0c;便于以后轻车熟路。 打成jar要有mian方法的入口&#xff0c;所以我们在代码中需要定义一个main方法&…

工业机器人仿真参考

最近有一些朋友看到我做的关于Unity3d仿真机器人的项目&#xff0c;本次我在平台做以分享&#xff0c;希望的朋友或者有需要在此基础做开发的可以参考下。 开发工具&#xff1a; 下位机&#xff1a;Unity3D 上位机&#xff1a;Visual Studio 机械臂模型&#xff1a;TH6-QKM…

【已解决】您所使用的密钥ak有问题,不支持jsapi服务,可以访问该网址了解如何获取有效密钥。

您所使用的密钥ak有问题&#xff0c;不支持jsapi服务&#xff0c;可以访问该网址了解如何获取有效密钥。详情查看&#xff1a;http://lbsyun.baidu.com/apiconsole/key#。 问题 百度密钥过期 思路 注册成为开发者 如果还没注册百度地图api账号的&#xff0c;点击以后就进入…

LeetCode(力扣)452. 用最少数量的箭引爆气球Python

LeetCode452. 用最少数量的箭引爆气球 题目链接代码 题目链接 https://leetcode.cn/problems/minimum-number-of-arrows-to-burst-balloons/description/ 代码 class Solution:def findMinArrowShots(self, points: List[List[int]]) -> int:if len(points) 0:return 0…

无涯教程-JavaScript - SHEETS函数

描述 SHEETS函数返回参考中的页数。 语法 SHEETS (reference) 争论 Argument描述Required/OptionalReference 参考是您想知道其包含的页数的参考。 如果省略"引用",SHEETS将返回工作簿中包含该功能的页数。 Optional Notes SHEETS包括所有其他工作表类型(宏,图表…

飞行动力学 - 第25节-特征根与动稳定性 之 基础点摘要

飞行动力学 - 第25节-特征根与动稳定性 之 基础点摘要 1. 特征根2. 实根3. 复根4. 参考资料 1. 特征根 动稳定性考虑的是扰动后飞机的时间响应&#xff0c;即 x 0 ≠ 0 x_0 \ne 0 x0​0, u 0 u 0 u0 2. 实根 x x 0 e λ t x x_0 e^{\lambda t } xx0​eλt 3. 复根 4.…

驱动开发,stm32mp157a开发板的led灯控制实验

1.实验目的 编写LED灯的驱动&#xff0c;在应用程序中编写控制LED灯亮灭的代码逻辑实现LED灯功能的控制&#xff1b; 2.LED灯相关寄存器分析 LED1->PE10 LED1亮灭&#xff1a; RCC寄存器[4]->1 0X50000A28 GPIOE_MODER[21:20]->01 (输出) 0X50006000 GPIOE_ODR[10]-&g…

Cglib代理和JDK代理原理的区别

一、JDK Jdk动态代理&#xff0c;拿到目标类所继承的接口&#xff0c;生成代理类&#xff0c;并且代理类也会实现和目标类一样的接口。 二、Cglib Cglib代理功能更强&#xff0c;无论目标类是否实现接口都可以代理&#xff0c;他是基于继承的方式类代理目标类&#xff0c;如果…

数学实验-数列与级数(Mathematica实现)

一、实验名称&#xff1a;数列与级数 二、实验环境&#xff1a;Mathematica 10.3软件 三、实验目的&#xff1a;本实验通过Mathematica 10.3软件编程演示Fibonacci数列、调和级数的函数图像及函数关系式&#xff0c;通过Mathematica 10.3软件发现数列与极限状态的性质&#x…