o点击蓝色“Java极客技术”关注我哟
加个“星标”,一起快乐成长

这是 Java 极客技术的第 277 篇原创文章
1 前言
前面理论性的知识是不是有点太“干货”,所以来点实战性的内容吧,这次记录了如何搭建高可用的 Flink 集群。
在正式配置前,来讲下为何要配置高可用(High Availability)
目前越来越多公司的线上应用,都采用的是分布式架构(一主多从),从而避免单点故障引起的服务不可用。
而在 Flink 中,同样也有集群保障服务的高可用,任何时候都有一个主 JobManager 和多个备 JobManager,当前主节点宕机后,立刻会有备 JobManager 当选成为主 JobManager ,接管集群,让每个作业继续正常进行。
出于这样的考虑,在 Flink 应用上线前,需要有这样一个集群来进行保障,下面就来看下该如何进行配置吧。
2 前置工作
2.1 机器准备
在本次搭建前,我通过了本地单机模拟,监听了 8081 和 8082 端口,启动了两个 JobManager 和三个 TaskManager。
| 序号 | IP | 启动进程 | UI PORT |
|---|---|---|---|
| 1 | 127.0.0.1 | JobManager、TaskManager | 8081 |
| 2 | 127.0.0.1 | JobManager、TaskManager | 8082 |
| 3 | 127.0.0.1 | TaskManager | / |
一般来说,JobManager 任务调度器所在的机器配置可以低一些,而 TaskManager 任务执行者所在的机器配置会高一些,所以基于上述机器的配置,请各位使用时进行合理分配。
2.1.2 机器之间 SSH 免密登录
本质上,我们只需要修改一份配置,然后将修改后的 Flink 包通过 SCP 命令传送到其它机器上。
接着在单台服务器上启动,它会根据 masters 和 slaves 文件找到对应的服务器,登录上去,判断启动 JobManager 、TaskManager 或者两者都启动。
总结一下机器之间 SSH 免密登录的要点:
1. 每台机器生成公私钥:ssh-keygen 命令
2. 将本机生成的公钥(id_rsa.pub)拷贝到其它机器的认证列表中(authorized_keys)
使用该命令 ssh-copy-id -i id_rsa.pub root@118.25.xxx.xxx
3. 重复上述命令,将本机的公钥添加到集群中的每一台服务器上
4. 免密登录所在的服务器,就是待会我们启动 ./start_cluster.sh 脚本所在的服务器哟

参考上面的图片,将公钥拷贝到远程服务器后,我们就能通过 ssh root@xxx.xxx.xx.xx,免密码登录到远程服务器啦。
2.2 安装 Zookeeper
为了启用 JobManager 高可用这个功能,需要在 flink_conf.yaml 中将 高可用模式 设置为 zookeeper
Flink 利用 Zookeeper 管理 JobManager 和 TaskManager,进行分布式协调(熟悉 Dubbo 系的小伙伴,应该对我们的 Zookeeper 注册中心感到熟悉)。
Zookeeper 是独立于 Flink 的一项服务,该服务通过节点选举和轻量级一致状

本文详细介绍了如何搭建Flink的伪集群高可用环境,涉及Zookeeper和Hadoop的安装,以及Flink配置和启动过程中的常见问题与解决方法,通过实例演示了主节点故障时的集群切换。
最低0.47元/天 解锁文章
882

被折叠的 条评论
为什么被折叠?



