centos7.2 mysql5.7(centos7下载地址)
很多朋友对于centos7.2 mysql5.7和centos7下载地址不太懂,今天就由小编来为大家分享,希望可以帮助到大家,下面一起来看看吧!
记一次kfd(kafka+flink+doris)的实时操作
在一次关于kafka+flink+doris的实时操作项目中,我们的目标是为某市医院构建一个统一的数据中心主索引,同时处理历史离线数据和增量实时数据,确保数据的实时性和准确性。我们的技术栈包括centos 7.2作为操作系统,mysql 5.7.30用于数据存储,kafka 2.11负责数据传输,flink 1.10.1作为流处理引擎,以及doris 0.12.0来高效地进行数据存储和分析。
离线处理策略是利用doris的强大能力,通过创建外部映射表并加载到ods库,生成包含患者身份证号的主索引。这个过程是关键的初始化步骤,为后续实时处理奠定了基础。
在增量处理方面,我们采取了高效的策略:首先,canal监控mysql的binlog,实时捕获数据库的更改,然后将增量数据推送到kafka。flink作为实时数据处理引擎,从kafka中读取这些变更,通过Redis缓存进行实时检查。当新数据的身份证号、档案号和医院代码匹配主索引时,flink会进行数据验证和处理,确保数据一致性,不存在时则生成新的索引,并将更新同步到Redis和doris。这一步骤对于实时索引的维护至关重要,避免了重复数据的插入。
项目依赖的库包括flink的kafka连接器、scala编程语言,以及log4j用于日志管理和Redis缓存。以下是一些关键依赖的配置:
org.apache.flink
flink-connector-kafka_${scala.binary.version}
${flink.version}
mysql
mysql-connector-java
5.1.47
redis.clients
jedis
${redis.version}
dorisdb-maven-releases
在实施过程中,我们遇到了一些挑战,如FE资源限制和数据格式的兼容性问题。通过不断优化,我们最终选择使用HTTP PUT方法进行数据写入,并采取每100条数据或3秒一次的频率,确保了数据的高效处理。整个流程包括mysql本地数据的写入、canal的实时同步、kafka的数据推送,以及flink和doris之间的无缝对接,实现了实时数据的实时处理和更新。
通过这次实践,我们不仅提升了数据处理的实时性,还锻炼了团队在分布式系统中的协作和问题解决能力。这次kafka+flink+doris的结合,为医院的数据中心管理带来了显著的效率提升和数据一致性保障。
Keepalived工作原理
Keepalived软件起初是专为LVS负载均衡软件设计的,用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入了可以实现高可用的VRRP功能。因此,Keepalived除了能够管理LVS软件外,还可以作为其他服务(例如:Nginx、Haproxy、MySQL等)的高可用解决方案软件。
Keepalived采用是模块化设计,不同模块实现不同的功能。
keepalived主要有三个模块,分别是core、check和vrrp。
core:是keepalived的核心,负责主进程的启动和维护,全局配置文件的加载解析等
check: 负责healthchecker(健康检查),包括了各种健康检查方式,以及对应的配置的解析包括LVS的配置解析;可基于脚本检查对IPVS后端服务器健康状况进行检查
vrrp:VRRPD子进程,VRRPD子进程就是来实现VRRP协议的
keepalived配置文件:
Keepalived配置文件为:keepalived.conf;
主要有三个配置区域,分别是:全局配置(Global Configuration)、VRRPD配置、LVS配置
全局配置又包括两个子配置: 全局定义(global definition) 静态IP地址/路由配置(static
ipaddress/routes)
Keepalived服务VRRP的工作原理:
Keepalived高可用对之间是通过 VRRP进行通信的, VRRP是通过竞选机制来确定主备的,主的优先级高于备,因此,工作时主会优先获得所有的资源,备节点处于等待状态,当主宕机的时候,备节点就会接管主节点的资源,然后顶替主节点对外提供服务
在Keepalived服务对之间,只有作为主的服务器会一直发送 VRRP广播包,告诉备它还活着,此时备不会抢占主,当主不可用时,即备监听不到主发送的广播包时,就会启动相关服务接管资源,保证业务的连续性.接管速度最快
出现脑裂的原因:
高可用服务器对之间心跳线链路发生故障,导致无法正常通信。
因心跳线坏了(包括断了,老化)。
因网卡及相关驱动坏了,ip配置及冲突问题(网卡直连)
因心跳线间连接的设备故障(网卡及交换机)
因仲裁的机器出问题(采用仲裁的方案)
高可用服务器上开启了 iptables防火墙阻挡了心跳消息传输。
高可用服务器上心跳网卡地址等信息配置不正确,导致发送心跳失败
其他服务配置不当等原因,如心跳方式不同,心跳广插冲突、软件Bug等。
如何解决脑裂:
① 同时使用串行电缆和以太网电缆连接,同时用两条心跳线路,这样一条线路坏了,另一个还是好的,依然能传送心跳消息。
② 当检测到裂脑时强行关闭一个心跳节点(这个功能需特殊设备支持,如Stonith、feyce)。相当于备节点接收不到心跳消患,通过单独的线路发送关机命令关闭主节点的电源。
③ 做好对裂脑的监控报警(如邮件及手机短信等或值班).在问题发生时人为第一时间介入仲裁,降低损失。管理员可以通过手机回复对应数字或简单的字符串操作返回给服务器.让服务器根据指令自动处理相应故障这样解决故障的时间更短。
一、实验环境
操作系统:CentOS7.2 Minial
###################
serverA:
eno16777736 192.168.1.104
eno33554984 192.168.1.105
##########################
serverB:
eno16777736 192.168.1.109
eno33554984 192.168.1.106
###########################
vip01:192.168.1.111
vip02:192.168.1.112
二、设置防火墙
/usr/bin/firewall-cmd--direct
--permanent--add-rule ipv4 filter INPUT 0--in-interface eth0--destination${组播地址}--protocol vrrp-jACCEPT
/usr/bin/firewall-cmd--reload
三、软件安装
在serverA和serverB上
# rpm-ivh--force libnl3-3.2.28-4.el7.x86_64.rpm
# rpm-ivh--forcelm_sensors-libs-3.4.0-4.20160601gitf9185e5.el7.x86_64.rpm
# rpm-ivh--force net-snmp-agent-libs-5.7.2-32.el7.x86_64.rpm
# rpm-ivh--force net-snmp-libs-5.7.2-32.el7.x86_64.rpm
# rpm-ivh--force ipset-libs-6.38-3.el7_6.x86_64.rpm
# rpm-ivh--force keepalived-1.3.5-6.el7.x86_64.rpm
四、配置keepalived
如果不使用 VRRP Sync Groups如果keepalived主机有两个网段,每个网段开启一个VRRP实例,如果对外的网段出现问题,VRRPD认为自己仍然认为健康,因此 Master和Backup相互切换,从而导致服务不能正常使用,同时高可用集群也不能正常运行,Sync group就是为了解决该问题,可以把两个实例放进同一个Sync Group中!
serverA
# vim/etc/keepalived/keepalived.conf
######################################
! Configuration File for keepalived
global_defs{
router_id LVS_DEVEL
}
vrrp_sync_group VG1{
group{
VI_1
VI_2
}
}
vrrp_instance VI_1{
state BACKUP
interface eno16777736
virtual_router_id 51
priority 100
nopreempt
advert_int 1
authentication{
auth_type PASS
auth_pass 1111
}
track_interface{
eno16777736
eno33554984
}
virtual_ipaddress{
192.168.1.111
}
}
vrrp_instance VI_2{
state BACKUP
interface eno33554984
virtual_router_id 52
priority 100
nopreempt
advert_int 1
authentication{
auth_type PASS
auth_pass 2222
}
track_interface{
eno16777736
eno33554984
}
virtual_ipaddress{
192.168.1.112
}
}
serverB
# vim/etc/keepalived/keepalived.conf
######################################
! Configuration File for keepalived
global_defs{
router_id LVS_DEVEL
}
vrrp_sync_group VG1{
group{
VI_1
VI_2
}
}
vrrp_instance VI_1{
state BACKUP
interface eno16777736
virtual_router_id 51
priority 90
nopreempt
advert_int 1
authentication{
auth_type PASS
auth_pass 1111
}
track_interface{
eno16777736
eno33554984
}
virtual_ipaddress{
192.168.1.111
}
}
vrrp_instance VI_2{
state BACKUP
interface eno33554984
virtual_router_id 52
priority 90
nopreempt
advert_int 1
authentication{
auth_type PASS
auth_pass 2222
}
track_interface{
eno16777736
eno33554984
}
virtual_ipaddress{
192.168.1.112
}
}
五、测试
在serverA和 serverB上
# systemclt start keepalived
在serverA