首页 > 其他分享 > KeepAlived和HAproxy的介绍和原理及应用

KeepAlived和HAproxy的介绍和原理及应用

时间:2023-06-17 17:02:14浏览次数:47  
标签:HAproxy KeepAlived keepalived 192.168 web2 web1 原理 root eth0

KeepAlived是一款基于VRRP协议实现的负载均衡软件,可以在多个服务器节点之间实现高可用部署和负载均衡。它通过检测后端节点的健康状态,将请求分发到可用的节点上。同时,Keepalived还支持多种健康检查方式和自定义的负载均衡算法,可以满足不同场景的需求。

 KeepAlived和HAproxy的介绍和原理及应用_linux


HAproxy是一款高性能的负载均衡软件,可以通过轮询、加权轮询、最少连接数、URL Hash等多种算法,将请求分发到后端节点上,以实现高可用和性能优化。同时,HAproxy还支持各种健康检查方式,可以自动剔除故障节点,确保服务的可用性和稳定性。

 KeepAlived和HAproxy的介绍和原理及应用_vim_02

两者的原理都是通过集中式的负载均衡器将流量分发到后端多个服务器上,从而提升系统的可用性和性能。它们通过监听前端的请求,将请求分发到后端的应用服务器上,同时进行健康检查,算法调度等处理,在后端节点出现故障时,自动将流量切换到其他可用节点上,以保证服务的可用性和稳定性

KeepAlived应用:

打开ip转发功能的内核参数

环境说明:

web1:eth0->192.168.88.100/24

web2:eth0->192.168.88.200/24

配置keepalived步骤
# 在两台web服务器上安装keepalived
[root@web1 ~]# yum install -y keepalived httpd
[root@web2 ~]# yum install -y keepalived httpd
# 修改配置文件
[root@web1 ~]#  vim /etc/keepalived/keepalived.conf 
12    router_id web1    # 设置本机在集群中的唯一识别符
13    vrrp_iptables     # 自动配置iptables放行规则新添加的
 20 vrrp_instance VI_1 {
 21     state MASTER          # 状态,主为MASTER,备为BACKUP 
 22     interface eth0            # 网卡 
 23     virtual_router_id 51   # 虚拟路由器地址     
 24     priority 100                # 优先级
 25     advert_int 1               # 发送心跳消息的间隔
 26     authentication {
 27         auth_type PASS     # 认证类型为共享密码
 28         auth_pass 1111      # 集群中的机器密码相同,才能成为集群
 29     }   
 30     virtual_ipaddress {
 31         192.168.88.80/24    #对外公布的VIP地址
 32     }   
 33 }
 # 删除下面所有行
 [root@web1 ~]# tail -f /var/log/messages | grep -i keepalived
 # 打开一个新的终端监控日志,新日志将出持续显示在屏幕上。退出按ctrl+c
 [root@web1 ~]# systemctl start keepalived
 # 在前一个终端启动服务
 [root@web1 ~]# ip a s eth0   # eth0将会增加额外的88.80地址
 # 等几秒服务完全启动后,可以查看到vip
 # 配置web2
 [root@web1 ~]# scp /etc/keepalived/keepalived.conf 192.168.88.200:/etc/keepalived/
 [root@web2 ~]# vim /etc/keepalived/keepalived.conf 
 12    router_id web2          # 改id
 13    vrrp_iptables
 ... ... 
 20 vrrp_instance VI_1 {
 21     state BACKUP           # 改状态
 22     interface eth0
 23     virtual_router_id 51
 24     priority 80                 # 改优先级
 25     advert_int 1
 26     authentication {
 27         auth_type PASS
 28         auth_pass 1111
 29     }
 30     virtual_ipaddress {
 31         192.168.88.80/24
 32     }
 33 }
 [root@web2 ~]# systemctl start keepalived
 # 启动服务
 [root@web2 ~]# ip a s eth0 	# 查看地址,eth0不会出现vip
 [root@client1 ~]# curl http://192.168.88.80/
 # 测试,访问88.80,看到web1上的内容
 192.168.88.100
 [root@web2 ~]# tail -f /var/log/messages | grep -i keepalived
 # 在web2上监控日志
 [root@web1 ~]# systemctl stop keepalived.service 
 # 关闭web1上的keepalived,观察web2的日志输出
 [root@client1 ~]# curl http://192.168.88.80/
 # 测试,访问88.80,看到web2上的内容
 192.168.88.200
 [root@web2 ~]# ip a s eth0
#在web2上查看vip,可以查看到vip 192.168.88.80

HAproxy应用

HAProxy的工作模式:

mode http:只适用于web服务

mode tcp:适用于各种服务

mode health:仅做健康检查,很少使用

环境准备:

client1:eth0 -> 192.168.88.10 

HAProxy:eth0 -> 192.168.88.5

web1: eth0 -> 192.168.99.100

web2: eth0 -> 192.168.99.200

[root@haproxy1 ~]# yum install -y haproxy
[root@haproxy1 ~]# vim /etc/haproxy/haproxy.cfg
# 配置文件中,global是全局配置;default是缺省配置,如果后续有和default相同的配置,default配置将会被覆盖。
# 配置文件中,frontend描述haproxy怎么和用户交互;backend描述haproxy怎么和后台应用服务器交互。这两个选项,一般不单独使用,而是合并到一起,名为listen。
# 将61行之后全部删除,写入以下内容
61 listen myweb 0.0.0.0:80   # 定义本机监听地址
62     balance roundrobin      # 调度算法为轮询
63     server web1 192.168.99.100 check inter 2000 rise 2 fall 5  #对99.100和99.200轮询
64     server web2 192.168.99.200 check inter 2000 rise 2 fall 5	#对99.100和99.200轮询
66 listen stats 0.0.0.0:1080    # 定义监控地址
67     stats refresh 30s      # 设置监控页面自动刷新时间为30秒
68     stats uri /stats          # 定义监控地址是/stats
69     stats auth admin:admin  # 监控页面的用户名和密码都是admin

# 启服务
[root@haproxy1 ~]# systemctl start haproxy.service 
# 使用firefox访问监控地址 http://192.168.88.5:1080/stats
监控地址 http://192.168.88.5:1080/stats


标签:HAproxy,KeepAlived,keepalived,192.168,web2,web1,原理,root,eth0
From: https://blog.51cto.com/u_16164093/6505443

相关文章

  • 了解ASEMI代理光宝光耦LTV-6314的工作原理和应用领域
    编辑-Z本文将详细介绍光耦LTV-6314的工作原理和应用领域。首先,我们将介绍光耦的基本概念和工作原理。然后,我们将详细解析LTV-6314的特点和性能参数。接下来,我们将探讨LTV-6314在电力控制、通信设备和工业自动化等领域的应用。最后,我们将总结光耦LTV-6314的优势和适用性。 1、......
  • GPT 模型的工作原理 你知道吗?
    动动发财的小手,点个赞吧!Source简介当我使用GPT模型编写我的前几行代码时是2021年,那一刻我意识到文本生成已经到了一个拐点。在此之前,我在研究生院从头开始编写语言模型,并且我有使用其他文本生成系统的经验,所以我知道让它们产生有用的结果是多么困难。作为我在AzureOpenAI......
  • 【深入浅出Docker原理及实战】「原理实战体系」零基础+全方位带你学习探索Docker容器
    专栏简介本专栏将带领您进入Docker的世界。您是否对Docker有所耳闻?那么,您是否知道使用Docker可以带来什么样的好处呢?如果您还不了解Docker,不用担心,让我们一起探索这个神奇的世界吧!DockerDocker最初是dotCloud公司内部项目,由SolomonHykes在法国创立。它基于dotCloud公司多年......
  • 《编译原理》实验四:自下而上的语法分析(SLR分析法)
    本实验采用SLR分析法,对PL/0语言的算术运算进行语法分析。本程序由我个人独立完成,代码为C++98,因此可能较丑陋,且不能保证完全正确,还请见谅 ( ̄□ ̄;)一.设计思想1.文法因实验二、三中的文法均不是LR(0)文法,所以本次实验采用了实验三中的文法进行SLR分析。(1)EBNF<表达式>::=[+|-]<......
  • MySQL高可用MHA原理及测试
     2020年03月22日00:06 ·  阅读5810MySQL高可用MHA原理及测试文章来源: 陶老师运维笔记-微信公众号1.MHA简介  MHA架构介绍:github.com/yoshinorim/…github下载地址:github.com/yoshinorim/…MHA简介:MHA(MasterHighAvailability)目前在MySQL......
  • DragGAN图像生成原理与实现
    DragGAN图像生成原理与实现DragGAN模型是什么呢1.DragGAN背景介绍2.模型方法2.1算法原理2.1.1MotionSupervision2.1.2点跟踪3.实现部署步骤3.1安装PyTorch3.2安装DragGAN3.3运行DragGANDemo3.4功能介绍项目地址:https://github.com/Zeqiang-Lai/DragGAN论文地址:http......
  • SYN Flood攻击原理,SYN Cookie算法
    SYNFlood是一种非常危险而常见的Dos攻击方式。到目前为止,能够有效防范SYNFlood攻击的手段并不多,SYNCookie就是其中最著名的一种。SYNFlood攻击原理SYNFlood攻击是一种典型的拒绝服务(DenialofService)攻击。所谓的拒绝服务攻击就是通过进行攻击,使受害主机或网络不能提供良好......
  • Controller Manager原理分析
    Controller Manager通过API Server提供的(List-Watch)接口实时监控集群中特定资源的状态变化,当发生各种故障导致某资源对象的状态发生变化时,Controller会尝试将其状态调整为期望的状态。Controller Manager的内部包含Replication Controller、Node Controller、ResourceQuota......
  • springboot2 自动装配原理
    springboot自动装配Spring支持两种bean配置方式:XML配置、JavaConfig配置@SpringBootApplication注解我们创建一个springboot项目后,一般要用该注解,然后在springbootApplication.run方法传入标注了该注解的类,这样就可以去加载spring的相关操作@SpringBootApplicationpublic......
  • Java类加载原理中为何要设计双亲委派机制
    首先,给大家演示两个示例代码,我们自定义一个与Java核心类库中java.lang.String类名相同的代码:packagejava.lang;/***自定义java.lang.String类**@author编程老司机*@date2023-06-16*/publicclassString{static{System.out.println("加载自......