keepalive和haproxy

1、keepalive

1.1概念

调度器的高可用

vip地址主备之间的切换,主在工作时,vip地址只在主上,主停止工作,vip漂移到备服务器

在主备的优先级不变的情况下,主恢复工作,vip会飘回到主服务器

1、配优先级

2、配置vip和真实服务器

3、主备的id要一致

4、主备的id要区分

keepalive是专门为lvs打造的,但是不是为lvs专门服务的

keepalive也可以使用nginx、haproxy

keepalive+nginx实现高可用

1.2如何监测vip的漂移?

用一个监控的脚本,来监控nginx1的状态,如果nginx1挂了,nginx1的keepalive会停掉,vip漂移到nginx2上

nginx+keepalive实现主备切换,实验步骤:

关闭防火墙,安装keepalive

 编写监控的脚本

vim check_nginx.sh

 /usr/bin/curl -I http://localhost &> /dev/null
if [ $? -ne 0 ]
then
  systemctl stop keepalived
fi

 重启keepalived,查看keepalived的状态

[root@nginx1 opt]# systemctl restart keepalived
[root@nginx1 opt]# systemctl status keepalived

 给脚本赋权

[root@nginx1 opt]# chmod 777 check_nginx.sh

 打开keepalived的配置文件

[root@nginx1 keepalived]# vim keepalived.conf

 重启keepalived,查看状态

[root@nginx1 keepalived]# systemctl restart nginx
[root@nginx1 keepalived]# systemctl restart keepalived.service

 暂停nginx,查看keepalived状态

 将配置文件发送给nginx2

[root@nginx2 ~]# scp root@192.168.230.60:/etc/keepalived/keepalived.conf  /etc/keepalived

编辑配置文件

 [root@nginx2 ~]# scp root@192.168.230.60:/etc/keepalived/keepalived.conf  /etc/keepalived

 开启nginx1和keepalived

vip地址生成了

[root@nginx1 keepalived]# systemctl start nginx
[root@nginx1 keepalived]# systemctl start keepalived.service 

[root@nginx1 keepalived]# ip addr

 重启nginx2和keepalived,没有生成vip地址

 修改nginx1和2的访问页面

[root@nginx1 keepalived]# vim /usr/local/nginx/html/index.html

 

 

 访问vip地址,只能访问nginx1,不会轮询

 暂停nginx1,vip地址消失了,漂移到nginx2上,此时访问的是nginx2

 恢复nginx1,开始keepalived,vip从nginx2漂移到nginx1上,此时访问的是nginx1

2、脑裂

2.1概念

HA高可用架构中的一个特殊现象,只要使用vip地址代理的冗余模式的高可用,都有可能出现脑裂的问题。

主和备同时都有vip地址

主和备无法确定各自的身份,同时出现了vip地址,两边都起来了,但是两边都无法使用。

2.2原因

1、keepalive的配置文件问题

2、心跳线(网线)断了,老化

3、网卡出了问题(硬件),ip地址配置冲突

4、防火墙的策略,iptables的策略,屏蔽了组播的地址广播,屏蔽了vrrp协议的报文

5、两台服务器的时间不同步也可能导致

6、其他的服务配置对心跳线的检测造成了干扰

2.3解决方法

1、进入keepalive的配置文件,查看哪一步的配置出现问题

2、查看服务器之间的网络连接是否正常,如果网线老化了,更换新的网线

3、检查硬件比如网卡是否正常,ip地址是否配置正确或者与其他地址冲突了

4、关闭防火墙,查看iptables的策略,vrrp协议的报文能否正常发送

5、保证两台服务器的时间同步,设置时间同步协议

6、检查其他服务配置是否有问题

3、Haproxy负载均衡

nginx:四层转发,七层转发(走的是用户态)

lvs:四层转发,走的是内核态

Haproxy:四层转发,七层转发

3.1Haproxy的作用和使用场景

3.1.1场景

用于高并发的web场景,可以支持一万个以上的并发请求,是高性能的tcp和http的负载均衡器

3.1.2工作原理

提供一个代理地址访问集群

3.2作用

1、进行四层和七层转发

2、支持https

3、Haproxy本身不自带缓存功能,请求当中添加cookie,使用缓存

4、支持主备切换(keepalive)

3.3特点

可靠性高,稳定性好

可以同时维护40000-50000个并发,单位时间内可以处理的最大请求数20000个

支持负载均衡算法,虽然不带缓存,但是可以支持会话保持

算法:rr wrr leastconn

3.4七层转发配置

安装test1的依赖环境

[root@localhost opt]# yum install -y pcre-devel bzip2-devel gcc gcc-c++ make

 

 将haproxy的安装包拖进来,解压

[root@localhost opt]# tar -xf haproxy-1.5.19.tar.gz 

 查看内核版本

[root@localhost haproxy-1.5.19]# uname -r
3.10.0-957.el7.x86_64

 make,target使用的版本要大于linux.2.60以上的版本

[root@localhost haproxy-1.5.19]# make TARGET=linux2628 ARCH=x86_64

安装

 [root@localhost haproxy-1.5.19]# make TARGET=linux2628 ARCH=x86_64

创建目录 

[root@localhost haproxy-1.5.19]# mkdir /etc/haproxy

 复制haproxy.cfg

[root@localhost examples]# cp haproxy.cfg /etc/haproxy

 修改配置文件

[root@localhost haproxy]# vim haproxy.cfg

  1 # this config needs haproxy-1.1.28 or haproxy-1.2.1
  2 
  3 global
  4         log /dev/log    local0 info
  5         log /dev/log    local1 notice
  6         #log loghost    local0 info
  7         maxconn 4096
  8         #最大连接数,推荐10240
  9         #chroot /usr/share/haproxy
 10         uid 99
 11         gid 99
 12         daemon
 13         nbproc 6
 15         #debug
 18 defaults
 19 #这里是默认参数配置,包含了连接配置、监听配置以及代理配置
 20         log     global
 21         mode    http
 22         option  httplog
 23         option  dontlognull
 24         retries 3
 26         redispatch
 28         maxconn 2000    
 30         #contimeout     5000
 31         #clitimeout     50000
 40         #客户端超时时间
 41         timeout server 1m
 42         #服务端的超时时间
 43         timeout http-keep-alive 10s
 44         #默认长连接的超时时间
 39         timeout client 1m
 40         #客户端超时时间
 41         timeout server 1m
 42         #服务端的超时时间
 43         timeout http-keep-alive 10s
 44         #默认长连接的超时时间
 45         timeout check 10s
 46         #检查后端服务器的超时时间
 47 #转发请求的设置,既可以是四层也可以是七层
 48 #七层的配置
 49 listen  xy102 0.0.0.0:80
 50         option httpchk GET /index.html
 51 #设置转发请求的内容
 52         balance static-rr
 53 #轮询算法
 54         server  rs01 192.168.230.60:80 check inter 2000 fall 3 weight 2
 55         server  rs02 192.168.230.70:80 check inter 2000 fall 3 weight 3
 56 #server指定真实服务器,rs01自定义后台服务器名称,check inter 2000启动对后端服务器进行检查,间隔是2000毫秒。fall 3连续3次检测不到认为失败

 复制 haproxy.init,赋权

[root@localhost examples]# cp [root@localhost examples]# cp haproxy.init /etc/init.d/haproxy
[root@localhost examples]# chmod 777 /etc/init.d/haproxy

 添加到管理服务中

[root@localhost examples]# chkconfig --add /etc/init.d/haproxy

 建立软连接

[root@localhost examples]# ln -s /usr/local/sbin/haproxy /usr/sbin/

 关闭防火墙,重启haproxy,访问成功实现轮询

3.5四层转发配置

配置文件haproxy.cfg

#四层转发
frontend test
bind *:80
mode tcp
default_backend test
backend test
mode tcp
balance roundrobin
server server1 192.168.230.60:80 check inter 2000 fall 3 weight 2
server server2 192.168.230.70:80 check inter 2000 fall 3 weight 2

 重启,访问成功

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

智能优化算法之蚁群算法ACO

蚁群算法(Ant Colony Optimization, ACO)由意大利学者马尔科多里戈(Marco Dorigo)于1992年在其博士论文中首次提出。灵感来自于自然界中的蚂蚁群体行为,特别是蚂蚁在寻找食物过程中所展示的路径优化能力。蚁群算法属于…

基于stm32+小程序开发智能家居门禁系统-硬件-软件实现

视频演示: 基于stm32智能家居门禁系统小程序开发项目 视频还有添加删除卡号,添加删除指纹,关闭继电器电源等没有演示。 代码Git: https://github.com/Abear6666/stm32lock 总体功能: 本门禁系统主要解锁功能分别为卡…

一文彻底学会Vue3路由:全面讲解路由流程、路由模式、传参等——全栈开发之路--前端篇(7)路由详解

全栈开发一条龙——前端篇 第一篇:框架确定、ide设置与项目创建 第二篇:介绍项目文件意义、组件结构与导入以及setup的引入。 第三篇:setup语法,设置响应式数据。 第四篇:数据绑定、计算属性和watch监视 第五篇 : 组件…

离线 VisualStudio2022 安装包在无互联网的环境下安装

文章目录 下载 Visual Studio 引导程序以创建布局离线安装包将离线包更新为产品的最新版本将布局更新为产品的特定版本 下载 Visual Studio 引导程序以创建布局 https://learn.microsoft.com/zh-cn/visualstudio/install/create-a-network-installation-of-visual-studio?vie…

Golang | Leetcode Golang题解之第223题矩形面积

题目: 题解: func computeArea(ax1, ay1, ax2, ay2, bx1, by1, bx2, by2 int) int {area1 : (ax2 - ax1) * (ay2 - ay1)area2 : (bx2 - bx1) * (by2 - by1)overlapWidth : min(ax2, bx2) - max(ax1, bx1)overlapHeight : min(ay2, by2) - max(ay1, by1)…

浅谈后置处理器之JSON提取器

浅谈后置处理器之JSON提取器 JMeter 的 JSON 提取器(JSON Extractor)是一个强大的后置处理器,它允许用户从HTTP响应、数据库查询或其他类型的响应中提取JSON数据,并将这些数据存储为变量,以便在后续的请求中重用。这对…

从数据仓库到数据湖(上):数据湖导论

文章目录 一、什么是数据湖?起源数据湖的特征 二、为什么要用数据湖?三、数据湖与数据仓库的区别数据仓库和数据湖的对比 四、数据湖本质数据存储架构数据处理工具:三类第一类工具第二类工具第三类工具 小结 五、总结六、参考资料 一、什么是…

Spring Boot中@Async注解的使用及原理 + 常见问题及解决方案

😄 19年之后由于某些原因断更了三年,23年重新扬帆起航,推出更多优质博文,希望大家多多支持~ 🌷 古之立大事者,不惟有超世之才,亦必有坚忍不拔之志 🎐 个人CSND主页——Mi…

手机怎么用代理ip上网

在数字化时代,网络已经成为我们生活中不可或缺的一部分。然而,有时候出于安全、隐私或访问特定网络资源的需要,我们可能需要使用代理IP来上网。那么,什么是代理IP?如何在手机上设置并使用它呢?本文将为您详…

南通网站制作基本步骤有哪些

南通网站制作是一个非常重要的工作,它可以帮助企业展示产品、服务和品牌形象,吸引更多的客户和创造更多的商机。网站制作的基本步骤包括需求分析、规划设计、页面制作、网站测试和上线等。 首先是需求分析。在南通网站制作的初期阶段,需要和客…

SpringCloud Alibaba Sentinel网关流量控制实践总结

官网地址:https://sentinelguard.io/zh-cn/docs/api-gateway-flow-control.html GitHub地址:GitHub Sentinel 网关限流 【1】概述 Sentinel 支持对 Spring Cloud Gateway、Zuul 等主流的 API Gateway 进行限流。 Sentinel 1.6.0 引入了 Sentinel API …

QFileDialog的简单了解

ps:写了点垃圾(哈哈哈) 现在感觉Qt库应该是调用了Windows提供的这块的接口了。 它继承自QDialog 这是Windows自己的文件夹 这是两者的对比图: 通过看QFileDialog的源码,来分析它是怎么实现这样的效果的。 源码组成…

探索Java网络编程精髓:UDP与TCP的实战魔法!

Java 中提供了专门的网络编程程序包 java.net,提供了两种通信协议:UDP(数据报协议)和 TCP(传输控制协议),本文对两种通信协议的开发进行详细介绍。 1 UDP 介绍 UDP:User Datagram Pr…

node-gyp 重新安装,解决编译遇到的问题【超详细图解】

一、报错信息 npm ERR! gyp info it worked if it ends with ok npm ERR! gyp info using node-gyp10.0.1 npm ERR! gyp info using node18.19.0 | darwin | arm64 npm ERR! gyp info find Python using Python version 3.12.2 found at "/opt/homebrew/opt/python3.12/…

3D工艺大师快速生成装配动画,驱动汽车工业装配流程革新

在现代制造业的一般生产流程中,车间装配环节是产品由蓝图迈向市场前至关重要的一道工序。随着产品结构的日益复杂化和个性化需求的不断增长,车间装配工作面临着前所未有的挑战。高精密度的装配要求、错综复杂的组件关系以及频繁变更的生产计划&#xff0…

《代理选择与反爬虫策略探究:如何优化网络爬虫效率与稳定性》

代理IP如何选以及常见反爬策略 为什么需要代理? 因为有的网站会封IP,用户如果没有登录,那IP就是身份标识,如果网站发现用户行为异常就非常可能封IP 什么是代理IP 就是让一个人帮你转交请求,帮你转交的人对面不熟&a…

华为OD机试 - 堆内存申请(Java 2024 D卷 100分)

华为OD机试 2024D卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试(JAVA)真题(D卷C卷A卷B卷)》。 刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测…

VMware安装Ubuntu以及利用vscode远程Ubuntu

一、VMware安装Ubuntu (1)VMware安装Ubuntu主要参考此文VMware虚拟机安装Ubuntu22.04图文教程(超详细!!!)。 (2)VMware密钥参考此文24年VMware 17密钥(附下载链接&#…

【经典面试题】是否形成有环链表

1.环形链表oj 2. oj解法 利用快慢指针: /*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*/typedef struct ListNode ListNode; bool hasCycle(struct ListNode *head) {ListNode* slow head, *fast…

M J更改图像生成方式的参数选项

一个完整的/imagine命令可能包含几个内容,例如图像 URL、图像权重、算法版本和其他开关。 /imagine参数应遵循以下顺序: /imagine prompt: https://example/tulip.jpg a field of tulips in the style of Mary Blair --no farms --iw .5 --ar 3:2 在这种情况下,“开关”是指…