keepalived安装部署及Flume+keepalived高可用

企业数据安全第一关:手把手教你私有化部署TableAgent数据分析智能体 本文详细介绍了企业如何私有化部署TableAgent数据分析智能体,确保数据安全合规。从硬件选型、网络隔离到加密通信和权限控制,提供全流程部署指南,帮助金融、制造等行业构建安全高效的数据分析体系,满足金融级安全标准。 阅读详情

Keepalived简介

        keepalived是一款失效转发机制的软件, 基于VRRP协议来实现的WEB服务高可用方案,可以利用其来避免单点故障。它的作用是检测web服务器的状态,一个WEB服务至少会有2台服务器运行Keepalived,一台为主服务器(MASTER),一台为备份服务器(BACKUP),但是对外表现为一个虚拟IP,主服务器会发送特定的消息给备份服务器,当备份服务器收不到这个消息的时候,即主服务器宕机的时候,备份服务器就会接管虚拟IP,继续提供服务,从而保证了高可用性。
 

Keepalived工作机制

        在一个VRRP虚拟路由器中,有多台物理的VRRP路由器,但是这多台的物理的机器并不能同时工作,而是由一台称为MASTER的负责路由工作,其它的都是BACKUP,MASTER并非一成不变,VRRP让每个VRRP路由器参与竞选,最终获胜的就是MASTER。MASTER拥有一些特权,比如拥有虚拟路由器的IP地址,我们的主机就是用这个IP地址作为静态路由的。拥有特权的MASTER要负责转发发送给网关地址的包和响应ARP请求。

        VRRP通过竞选协议来实现虚拟路由器的功能,所有的协议报文都是通过IP多播(multicast)包(多播地址224.0.0.18)形式发送的。虚拟路由器由VRID(范围0-255)和一组IP地址组成,对外表现为一个周知的MAC地址。所以,在一个虚拟路由器中,不管谁是MASTER,对外都是相同的MAC和IP(称之为VIP)。客户端主机并不需要因为MASTER的改变而修改自己的路由配置,对他们来说,这种主从的切换是透明的。

        在一个虚拟路由器中,只有作为MASTER的VRRP路由器会一直发送VRRP广告包(VRRPAdvertisement message),BACKUP不会抢占MASTER,除非它的优先级(priority)更高。当MASTER不可用时(BACKUP收不到广告包), 多台BACKUP中优先级最高的这台会被抢占为MASTER。这种抢占是非常快速的(<1s),以保证服务的连续性。
由于安全性考虑,VRRP包使用了加密协议进行加密。
 

初始化

       路由器启动时,如果路由器的优先级是255(最高优先级,路由器拥有路由器地址),要发送VRRP通告信息,并发送广播ARP信息通告路由器IP地址对应的MAC地址为路由虚拟MAC,设置通告信息定时器准备定时发送VRRP通告信息,转为MASTER状态;否则进入BACKUP状态,设置定时器检查定时检查是否收到MASTER的通告信息。

 

MASTER服务器:

主机状态下的路由器要完成如下功能:
设置定时通告定时器;
用VRRP虚拟MAC地址响应路由器IP地址的ARP请求;
转发目的MAC是VRRP虚拟MAC的数据包;
如果是虚拟路由器IP的拥有者,将接受目的地址是虚拟路由器IP的数据包,否则丢弃;
当收到shutdown的事件时删除定时通告定时器,发送优先权级为0的通告包,转初始化状态;
如果定时通告定时器超时时,发送VRRP通告信息;
收到VRRP通告信息时,如果优先权为0,发送VRRP通告信息;否则判断数据的优先级是否高于本机,或相等而且实际IP地址大于本地实际IP,设置定时通告定时器,复位主机超时定时器,转BACKUP状态;否则的话,丢弃该通告包;


BACKUP服务器:
备机状态下的路由器要实现以下功能:
设置主机超时定时器;
不能响应针对虚拟路由器IP的ARP请求信息;
丢弃所有目的MAC地址是虚拟路由器MAC地址的数据包;
不接受目的是虚拟路由器IP的所有数据包;
当收到shutdown的事件时删除主机超时定时器,转初始化状态;
主机超时定时器超时的时候,发送VRRP通告信息,广播ARP地址信息,转MASTER状态;

收到VRRP通告信息时,如果优先权为0,表示进入MASTER选举;否则判断数据的优先级是否高于本机,如果高的话承认MASTER有效,复位主机超时定时器;否则的话,丢弃该通告包;


ARP查询处理

 

 

       当内部主机通过ARP查询虚拟路由器IP地址对应的MAC地址时,MASTER路由器回复的MAC地址为虚拟的VRRP的MAC地址,而不是实际网卡的 MAC地址,这样在路由器切换时让内网机器觉察不到;而在路由器重新启动时,不能主动发送本机网卡的实际MAC地址。如果虚拟路由器开启的ARP代理 (proxy_arp)功能,代理的ARP回应也回应VRRP虚拟MAC地址;

 

 

 

 

安装Keepalived


下载地址:http://www.keepalived.org/download.html

安装keepalived依赖组件:
yum install -y openssl-devel openssl
yum install -y popt-devel

编译安装:
tar zxvf keepalived-1.2.19.tar.gz
cd keepalived-1.2.19
./configure --prefix=/usr/local/keepalived
make && make install

配置为服务:
cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/rc.d/init.d
cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
mkdir /etc/keepalived
cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
cp /usr/local/keepalived/sbin/keepalived /usr/sbin/ 

可以这样启动/停止:
service keepalived start|stop|reload|restart|condrestart|status

设为开机启动:
chkconfig keepalived on

查看keepalived日志:
tail -f  /var/log/message

 

keepalived+flume搭建高可用采集框架

下面以keepalived+flume为例,通过keepalived虚拟ip搭建Flume的高可用框架:
主服务器IP:10.0.1.68
从服务器IP:10.0.1.69
虚拟IP:10.0.1.71
主从服务器分别安装Nginx 和 Keepalived,可以将网站的域名解析到虚拟IP:10.0.1.254,这样主从服务器可以轮流的接管该虚拟IP,保证网站正常的对外访问。
主服务器(10.0.1.68)Keepalived的配置:

[root@testcluster68 data]# cat /etc/keepalived/keepalived.conf 
! Configuration File for keepalived

global_defs {
   notification_email {
	517894513@qq.com	#这里可以定义多个报警邮箱
   }
   notification_email_from 516973786@qq.com
   smtp_server smtp.qq.com
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}


vrrp_script check_port {
   script "/data/check_port.sh"
   interval 2     #检测的间隔
   weight 2     #如果脚本执行结果非0,并且weight配置的值小于0,则优先级相应的减少;如果脚本执行结果为0,并且weight配置的值大于0,则优先级相应的增加;其他情况,维持原本prority的优先级。
}

vrrp_instance VI_1 {
    state MASTER     #显示定义为主服务器
    interface eth0   #绑定的网口,该网口即上面提到的两个IP的接口
    virtual_router_id 51     #定义的ID,官方的是 51,主从服务器必须一致
    mcast_src_ip 10.0.1.68   #主服务器的IP
    priority 100    #优先级,任意定义,但是一定要比从服务器高
    advert_int 1    #VRRP Multicast 广播周期秒数
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {    #绑定的虚IP
        10.0.1.71
    }
    track_script {
        check_port    #调用检测脚本
    }
}


从服务器(10.0.1.69)Keepalived的配置:

[root@testcluster69 data]# vi /etc/keepalived/keepalived.conf 

! Configuration File for keepalived

global_defs {
   notification_email {
        517894513@qq.com    #这里可以定义多个报警邮箱
   }
   notification_email_from 516973786@qq.com  #报警人
   smtp_server smtp.qq.com
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}

vrrp_script check_port {
   script "/data/check_port.sh"
   interval 2    #检测的间隔
   weight 2      #如果脚本执行结果非0,并且weight配置的值小于0,则优先级相应的减少;如果脚本执行结果为0,并且weight配置的值大于0,则优先级相应的增加;其他情况,维持原本prority的优先级。
}

vrrp_instance VI_1 {
    state BACKUP     #显示定义为从服务器
    interface eth0   #绑定的网口,该网口即上面提到的两个IP的接口
    virtual_router_id 51     #定义的ID,官方的是 51,主从服务器必须一致
    mcast_src_ip 10.0.1.69   #从服务器的IP
    priority 100     #优先级,任意定义,但是一定要比从服务器高
    advert_int 1     #VRRP Multicast 广播周期秒数
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {   #绑定的虚IP
        10.0.1.71
    }
    track_script {
        check_port     #调用检测脚本
    }
}


主从服务器的check_port.sh脚本:
这是脚本检查flume进程是否存在,如果不存在就killall keepalived,来达到主从切换的作用,这样keepalived的Backup服务器就无法收到Master服务器的消息,就会促使Backup服务器选举出Master服务器。

[root@testcluster68 data]# cat check_port.sh 
#!/bin/bash
N=`ps aux|grep flume | grep -v grep | wc -l`
if [ $N -eq 0 ];then
   killall keepalived
fi
<pre name="code" class="java">[root@testcluster68 data]# chmod 755 check_port.sh
修改成可执行的文件。
 

启动主从服务器后,查看主服务器的IP情况:

[root@testcluster68 ~]# /sbin/ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 74:d4:35:2e:dd:9b brd ff:ff:ff:ff:ff:ff
    inet 10.0.1.68/24 brd 10.0.1.255 scope global eth0
    inet 10.0.1.71/32 scope global eth0
    inet6 fe80::76d4:35ff:fe2e:dd9b/64 scope link 
       valid_lft forever preferred_lft forever


查看从服务器的IP情况:

[root@testcluster69 ~]# /sbin/ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 74:d4:35:2e:dd:92 brd ff:ff:ff:ff:ff:ff
    inet 10.0.1.69/24 brd 10.0.1.255 scope global eth0
    inet6 fe80::76d4:35ff:fe2e:dd92/64 scope link 
       valid_lft forever preferred_lft forever

可见虚拟IP已经绑定到10.0.1.68。


现在我们关闭主服务器的Flume进程,查看主服务器的虚拟IP变化:

[root@testcluster68 ~]# /sbin/ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 74:d4:35:2e:dd:9b brd ff:ff:ff:ff:ff:ff
    inet 10.0.1.68/24 brd 10.0.1.255 scope global eth0
    inet6 fe80::76d4:35ff:fe2e:dd9b/64 scope link 
       valid_lft forever preferred_lft forever

虚拟IP被移除,keepalived进程也被kill。

查看从服务器的虚拟IP变化:

[root@testcluster69 ~]# /sbin/ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 74:d4:35:2e:dd:92 brd ff:ff:ff:ff:ff:ff
    inet 10.0.1.69/24 brd 10.0.1.255 scope global eth0
    inet 10.0.1.71/32 scope global eth0
    inet6 fe80::76d4:35ff:fe2e:dd92/64 scope link 
       valid_lft forever preferred_lft forever

从服务器挂载了虚拟IP

 

 

 

flume-ng性能优化与架构设计 如图1所示,一个flume-ng agent主要包括source,channel和sink三部分,三部分运行在java JVM中,JVM一般运行在linux'操作系统上,因此,这些因素都可能影响最终的性能。flume-ng性能优化与架构设计,简单来讲,也主要包括以上部分。 1, 主键的参数设计 1.1 source的配置 有时候不需要每台主机均安装flume agent,可以和s 阅读详情

相关推荐

linux之keepalive实际操作

目录一、keepalive基础1.1vrrp技术1.2VRRP相关技术二、keepalived介绍2.1kkepalived的功能2.2keepalived架构2.3keepalived相关文件2.4配置组成2.5全局配置2.6配置虚拟路由器三、实际操作3.1开启四台真机 一、keepalive基础 1.1vrrp技术 vrrp相关术语 虚拟路由器:Virtual Router 虚拟路由器标识:VRID(0-255),唯一标识虚拟路由器 VIP:Virtual IP VMAC:Virutal

Stephencurr的博客 3568

Flume + Keepalived构建高可用分布式采集系统

上一篇《Flume之Failover和Load balancing原理及实例》的实例的架构如下: 10.0.1.76作为Client,通过exec获取nginx的日志信息,然后将数据传到10.0.1.68(配置了Failover和Load balancing)的节点,最后10.0.1.68将数据发送的10.0.1.70,77,85,86,87节点,这些节点最终将数据写到本地硬盘。 那么...

iteye_14970的博客 256

【信息科学与工程学】【通信工程】计算机科学与自动化——第二百三十三篇 云NaaS服务 系列二02

字段内容类型​云网络自定义路由表(Custom Route Table):允许用户自定义 VPC 或子网的路由规则,控制流量走向,支持黑白名单、策略路由。端计算节点->边缘计算节点->边缘DC->中心云的网络情况及存储需求及配置情况列表​端计算节点为 VPC 内的云资源。边缘计算节点不适用。边缘 DC 和中心云为路由表管理平台。存储需求:路由条目存储于数据库。网络:路由表在虚拟路由器中执行。QoS:无。网络的端到端配置(从接入到汇聚到核心)​。

weixin_49199313的博客 329

HAProxy + Keepalived + Flume 构建高性能高可用分布式日志系统

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34258838的博客 146

flume 性能优化

如图1所示,一个flume-ng agent主要包括source,channel和sink三部分,三部分运行在Java JVM中,JVM一般运行在linux'操作系统上,因此,这些因素都可能影响最终的性能。flume-ng性能优化与架构设计,简单来讲,也主要包括以上部分。 1, 主键的参数设计 1.1 source的配置 有时候不需要每台主机均安装flume agent,可以和s

Java海洋 3325

开源网格划分软件-Gmsh二次开发教程 (4)网格生成与控制​

​本章将深入讲解Gmsh的网格生成技术,包括全局/局部网格控制、边界层生成、自适应细化等,并提供完整的代码示例。

ZQGG的博客 1473

借助keepalived + nginx双机热备加固flume线路

原来的状况: 两台flume ,10.0.15.70,10.0.15.71。在这两台flume机器上,分别会启2个mina的server端,监听客户端发送到8080,8081端口的数据,flume收集数据写入到kafka及hdf...

csdn19011的博客 221

在win10系统上安装opnet14.5注意事项和步聚

opnet 14.5安装避坑!

miracle_eicont的专栏 1037

flume性能调优

一个flume-ng agent主要包括source,channel和sink三部分,三部分运行在Java JVM中,JVM一般运行在Linux'操作系统上,因此,这些因素都可能影响最终的性能。flume-ng性能优化与架构设计,简单来讲,也主要包括以上部分。 1, 主键的参数设计 1.1 source的配置 有时候不需要每台主机均安装flume agent,可以和sshpass等命

旧时明月 5273

分位数映射数据后处理-Quantile Mapping后处理 (R语言)

统计后处理器基本上是统计模型,将观察到的关注变量与从气象或水文模型的直接模型输出(DMO)导出的适当预测变量相关联。统计后处理的重要性早已在气象预报中得到认可。早期的工作包括完善的预测(perfect prognosis),模型输出统计(MOS)和模拟方法(analog method)等模型。 近年来,已经提出了许多其他后处理方法,包括秩直方图校准(rank histogram calibrati...

水滴石穿,绳锯木断 1万+

手把手教你用ArduPilot搭建低成本无人车(附APM飞控+有刷电调配置清单)

本文提供了一份基于ArduPilot开源平台搭建低成本智能无人车的详细实战指南。核心内容包括APM架构飞控的选型、双向有刷电调的兼容性配置与校准、系统连接逻辑,以及通过Mission Planner地面站进行参数调校和自主导航功能设置的完整流程,帮助爱好者快速实现从手动控制到自主行驶的跨越。

java5的博客 850

数据埋点日志收集测试环境搭建

1.前置环境安装准备 1.1主机环境 ip地址 主机名称 系统 192.168.199.111 master centos7 192.168.199.112 node1 centos7 192.168.199.113 node2 centos7 1.2 其他软件版本 软件名称 版本 链接地址 java 1.8.0_161-b12 nginx nginx-1.9.9 https://nginx.org/download/nginx-1.9.9.tar.gz

h335146502的专栏 1200

STM32-TIM4-定时器中断

#include "project.h" #include "timer.h" //TIM4_Init(2000 ,72);//定时2ms /* 定时器中断的定时时间设定 定时器只需要配置时钟、TIM和NVIC即可 */ void TIM4_Init(u16 period, u16 prescaler) { NVIC_InitTypeDef NVIC_InitStructure; TIM_...

snaygo 6204

keepalived+lvs高可用部署

Configuration File for keepalived # 全局配置 global_defs {vrrp_garp_interval 0 vrrp_gna_interval 0 } # vrrp实例配置 vrrp_instance VI_1 {192.168 .200.16 192.168 .200.17 192.168 .200.18 } } # VS配置1:https virtual_server 192.168 .200.100 443 {

云原生 276

YOLOv11改进 | Conv/卷积篇 | 轻量化多尺度异构卷积(MSHC)优化YOLOv11精度(全网独家首发)

本文介绍了Hype-YOLO提出的MANet结构,这是C3、C2f、C3k2的升级版,能显著增强特征提取能力。MANet整合了DSConv和C2f结构,通过多分支异构设计提升梯度流动和特征语义深度。文章详细解析了MSHC模块的原理,包括其多尺度并行建模、通道混洗等核心机制,并提供了完整的代码实现和训练教程。实验表明,Hype-YOLO的精度优于YOLOv11。该结构在保持轻量化的同时,通过异构分支设计实现了更丰富的特征表达,适用于目标检测等视觉任务。

Snu77的博客 949

STM32入门教程:车牌识别

在本文中,我们介绍了如何使用STM32实现车牌识别功能,并提供了详细的代码案例。通过以上步骤,你可以开始开发自己的车牌识别系统了。希望本文对你有所帮助!

2401_85258012的博客 874

高可用高性能日志收集系统平台搭建步骤(详细步骤)

高可用高性能日志收集系统平台搭建

Aisen_bear的博客 5517

【QNX+Android虚拟化方案】12 - 设备虚拟化 之 Passthrough透传、Vdev Trap、HAB Socket 原理解析

【QNX+Android虚拟化方案】12 - 设备虚拟化 之 Passthrough透传、Vdev Trap、HAB Socket 原理解析

|~~~热爱生活、努力学习的小伙汁~~~| 1371

利用keepalived实现高可靠 动态管理 ngnix

实际工作中ngnix肯定要做成高可用模式,防止一个ngnix挂了,所有请求都无法访问成功,我们可以利用keepalived实现高可靠来动态管理ngnix,cong从而让ngnix也具备高可用性。 1 ,keepalived实现高可靠(HA) HA(High Available), 高可用性集群,是保证业务连续性的有效解决方案,一般有两个或两个以上的节点,且分为活动节点及备用节点,keepali...

香宝的私房小厨 403

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

集群高可用架构整理

在大型系统或是对稳定性要求较高的项目中,集群高可用架构是必不可少的,这里整理一些平时用到过的集群/高可用技术,不断更新中。。。 二种最基本的集群模型: M-S 型集群: M-S 型的集群一般用于高可用架构,主节点挂掉时从节点顶上,一般不具有分流(负载均衡)的作用。M-M 型集群: M-M 型的集群一般用于分流(负载均衡),部分 M-M 型集群会包含 M-S 型的主从功能(像 Red

MayMatrix 的博客 1126

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

近一月翻阅资料小结

近一个月接触的东西比较多,梳理一下。 Nginx+Tomcat, 实现负载均衡,同时采用keepalived的形式实现HA。负载后,关键问题就是session共享的问题,可实现的思路较多:Tomcat6以后本身可以使用cluster技术达成。也可以借鉴第三方软件实现。Memcached,redis都是采用的方案,【tomcat8在redis的方案中兼容性稍...

anmishi2025的博客 130

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Nginx之——Nginx+Keepalive 实现高可用负载均衡方案

主nginx负载均衡器:192.168.0.99  (通过keepalived配置了VIP:192.168.0.101供外使用) 副nginx负载均衡器:192.168.0.100 (通过keepalived配置了VIP:192.168.0.101供外使用) 后端web服务器: 192.168.0.73 192.168.0.74 一、配置主副nginx负载均衡器 192.168.0

冰河的专栏 1万+

flume如何实现高可用和高性能?

flume的高可用,是依赖tomcat集群来实现的,每一个tomcat的项目都会与一个flume相关联,tomcat高可用的同时,flume也是高可用的.

醉糊涂仙的博客 4155
上一篇: Flume之Failover和Load balancing原理及实例
下一篇: Flume + Keepalived构建高可用分布式采集系统
qianshanding0708
博客等级 码龄11年 425粉丝 96原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值