c++获取可用端口号_Haproxy详解以及基于Haproxy的高可用实战

Haproxy与Keepalived VRRP 介绍

软件:haproxy---主要是做负载均衡的7层,也可以做4层负载均衡 apache也可以做7层负载均衡,但是很麻烦。实际工作中没有人用。 负载均衡是通过OSI协议对应的 7层负载均衡:用的7层http协议, 4层负载均衡:用的是tcp协议加端口号做的负载均衡


ha-proxy概述

ha-proxy是一款高性能的负载均衡软件。因为其专注于负载均衡这一些事情,因此与nginx比起来在负载均衡这件事情上做更好,更专业。

ha-proxy的特点

ha-proxy 作为目前流行的负载均衡软件,必须有其出色的一面。下面介绍一下ha-proxy相对LVS,Nginx等负载均衡软件的优点。 •支持tcp / http 两种协议层的负载均衡,使得其负载均衡功能非常丰富。 •支持8种左右的负载均衡算法,尤其是在http模式时,有许多非常实在的负载均衡算法,适用各种需求。 •性能非常优秀,基于单进程处理模式(和Nginx类似)让其性能卓越。 •拥有一个功能出色的监控页面,实时了解系统的当前状况。 •功能强大的ACL支持,给用户极大的方便。

haproxy算法:

1.roundrobin 基于权重进行轮询,在服务器的处理时间保持均匀分布时,这是最平衡,最公平的算法.此算法是动态的,这表示其权重可以在运行时进行调整. 2.static-rr 基于权重进行轮询,与roundrobin类似,但是为静态方法,在运行时调整其服务器权重不会生效.不过,其在后端服务器连接数上没有限制 3.leastconn 新的连接请求被派发至具有最少连接数目的后端服务器.

keepalived是什么

keepalived是集群管理中保证集群高可用的一个服务软件,用来防止单点故障。

keepalived工作原理

keepalived是以VRRP协议为实现基础的,VRRP全称Virtual Router Redundancy Protocol,即虚拟路由冗余协议。(云服务器不支持VRRP) 虚拟路由冗余协议,可以认为是实现高可用的协议,即将N台提供相同功能的路由器组成一个路由器组,这个组里面有一个master和多个backup,master上面有一个对外提供服务的vip(该路由器所在局域网内其他机器的默认路由为该vip),master会发组播,当backup收不到vrrp包时就认为master宕掉了,这时就需要根据VRRP的优先级来选举一个backup当master。这样的话就可以保证路由器的高可用了。

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

脑裂(裂脑): Keepalived的BACKUP主机在收到不MASTER主机报文后就会切换成为master,如果是它们之间的通信线路出现问题,无法接收到彼此的组播通知,但是两个节点实际都处于正常工作状态,这时两个节点均为master强行绑定虚拟IP,导致不可预料的后果,这就是脑裂。 解决方式: 1、添加更多的检测手段,比如冗余的心跳线(两块网卡做健康监测),ping对方等等。尽量减少"裂脑"发生机会。(指标不治本,只是提高了检测到的概率); 2、做好对裂脑的监控报警(如邮件及手机短信等或值班).在问题发生时人为第一时间介入仲裁,降低损失。例如,百度的监控报警短倍就有上行和下行的区别。报警消息发送到管理员手机上,管理员可以通过手机回复对应数字或简单的字符串操作返回给服务器.让服务器根据指令自动处理相应故障,这样解决故障的时间更短. 3、爆头,将master停掉。然后检查机器之间的防火墙。网络之间的通信

》》点击此处获取更多学习资料https://ke.magedu.com

项目准备

准备四台虚拟机,两台做代理服务器,两台做真实服务器(真实服务器只是用来进行web测试) 1、选择两台Haproxy服务器作为代理服务器(一台master 一台backup)。 真实服务器需要nginx来提供web服务进行测试 2、给两台代理服务器安装keepalived制作高可用生成VIP 3、配置nginx的负载均衡 以上两台nginx服务器配置文件一致 根据站点分区进行调度 配置upstream文件

[root@master ~

我们也可以养成一个良好的习惯,不管用不用的到,我们都要对IP进行解析,不仅是为了自己方便,也便于其他人。

[root@master ~

nginx安装

只给两台真实服务器配置安装nginx ,所有机器关闭防火墙和selinux

[root@real-server1 ~

调度器配置Haproxy(主/备)都执行

[root@ha-proxy-master ~

其中你需要修改的地方

cd351f1b3abcbfd4ee9b898a393082e6.png

如果我们访问http://192.168.13.144:81/haproxy

61ec412108313dfae286995417939fc1.png

479e4fb218bc46988339b3ff53898ccc.png

页面主要参数解释 Queue Cur: current queued requests //当前的队列请求数量 Max:max queued requests //最大的队列请求数量 Limit: //队列限制数量

Errors Req:request errors //错误请求 Conn:connection errors //错误的连接

Server列表: Status:状态,包括up(后端机活动)和down(后端机挂掉)两种状态 LastChk: 持续检查后端服务器的时间 Wght: (weight) : 权重

haproxy_connect_any

Keepalived实现调度器HA(两个节点都需要下载)

注:主/备调度器均能够实现正常调度 1.主/备调度器安装软件

[root@localhost ~

2.启动KeepAlived(主备均启动)

[root@master ~

[root@backup ~]# systemctl enable keepalived 注意: 如果你网页访问不到,可能是配置文件出错了。如果你是直接复制本文章的代码,建议你将注释都去掉,有时候可能你的输入法的问题,导致配置文件出现一些多余的空格之类的。 访问你自己设置的VIP 192.168.13.144

》》点击此处获取更多学习资料https://ke.magedu.com

492f35b95a3ff2f33fea5f72b78b39b9.png

079106ea1c06a02db112ff79aa27517e.png

查看两个节点服务器,你会发现VIP在主节点

4224cc35fb716438819775a244b08778.png

如果这个时候主节点服务器宕机了(我们把服务停止了用来测试),VIP会自己漂移到备用节点上。

eb3ea46cf627ef4c481510fbaf9ae109.png

但是用户访问时却感觉不到

492f35b95a3ff2f33fea5f72b78b39b9.png

网页照样可以继续使用,这就是高可用性。

基于nginx的高可用性

以上我们只是实现了高可用,基于Haproxy的前提是Haproxy服务是正常。如果有突发情况使得nginx服务不能启动,但是我们的keepalived服务是正常,这个时候用户是访问不到的,VIP也不会自动漂移到备用的节点服务器上。所以我们需要写一些代码来判断一下Haproxy服务是不是正常,如果不正常的话我们就将Haproxy服务关掉,然后实现VIP的漂移,这个时候用户就不会出现无法访问的情况了。

[root@master ~

测试访问: 将keepalived集群的主节点的nginx服务关闭,查看vip是否漂移,如果漂移,即成功

42d6312f6b56c8f73ae0e914c17cef97.png

cdeffd2529c0e48cda6bfcb3ee69e891.png

配置haproxy的日志

两台机器都配置haproxy的日志:需要打开注释并添加

[root@master ~

d0fc7fab530cef335ccb7b8184fb657a.png

3facfa5e3728c4e32f24e07e162ddad7.png
[root@master ~

》》点击此处获取更多学习资料https://ke.magedu.com

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值