首先要安装JDK及zookeeper,参考  及 

另外需要各服务器之间SSH免密码登录,这个自行百度,要注意的是自己SSH自己也要免密码

除此之外还需要准备一个共享的存储目录,可以是hdfs、ceph、S3、nfs

 

环境说明:三台百度云服务器,内网IP分别为: 192.168.32.36、192.168.32.37、192.168.32.38, 不开放公网IP访问

 

分别在三台服务器上执行以下操作:

1.创建目录及下载解压

mkdir /usr/local/flink
cd /usr/local/flink
wget https://mirrors.tuna.tsinghua.edu.cn/apache/flink/flink-1.11.1/flink-1.11.1-bin-scala_2.11.tgz
tar zxvf flink-1.11.1-bin-scala_2.11.tgz

2.编辑master文件

vim /usr/local/flink/flink-1.11.1/conf/masters
# 设置为以下内容
192.168.32.36:8081
192.168.32.37:8081
192.168.32.38:8081

3.编辑配置文件

vim /usr/local/flink/flink-1.11.1/conf/flink-conf.yaml
# 首先将jobmanager.rpc.address项注释掉
# 然后设置高可用相关的配置项
high-availability: zookeeper
high-availability.storageDir: /nfs/flink/ha/ # 存储目录 这里直接使用了百度云的CFS文件系统,三台均挂载到了/nfs下
high-availability.zookeeper.quorum: 192.168.32.36:2181,192.168.32.37:2181,192.168.32.38:2181 # ZooKeeper quorum是ZooKeeper服务器的复制组,它提供分布式协调服务
high-availability.zookeeper.path.root: /flink # 根ZooKeeper节点,在该节点下放置所有集群节点
high-availability.cluster-id: /ccreate-flink-cluster # cluster-id ZooKeeper节点,在该节点下放置集群的所有必需协调数据
# 另外以下几个参数看情况调整
jobmanager.memory.process.size: 10240m
taskmanager.memory.process.size: 10240m
taskmanager.numberOfTaskSlots: 8 # flink槽数量 建议设置为当前服务器的CPU核数
parallelism.default: 1 # 这个可以在JOB中指定,这里设不设置影响不大, 优先级最低

4.检验集群启动和停止

cd /usr/local/flink/flink-1.11.1/

# 启动集群 这个操作会在三台服务器上各启动一个jobmanager守护程序,以及在当前服务器上启动一个taskmanager守护程序,所以最终还是需要三台服务器都运行一下这个命令
bin/start-cluster.sh
# 停止集群 这个具体停止哪些守护程序未进行测试
bin/stop-cluster.sh 

# 这两个命令建议多运行几次直到没有YES弹出,另外如果弹出让你输密码的提示说明你SSH免密码可能没有配置好 

# 确认可以无障碍启动集群后可以登录WEB查看 http://192.168.32.36:8081  

# webUI有一点要注意只有在leader的webUI中才可以查看Task Managers的信息,其他的如果停留在Task Managers页面会循环报错,经验证离开页面后报错就会停止不会无限产生日志导致磁盘爆满

5.添加到服务管理

vim /usr/lib/systemd/system/flink.service
# 添加以下内容
[Unit]
Description=flink-1.11.1 service
After=syslog.target network.target zookeeper.service

[Service]
Restart=always
RestartSec=1
Type=forking
TimeoutSec=120

User=root
Environment=JAVA_HOME=/usr/local/java/jdk1.8.0_261

ExecStart=/usr/local/flink/flink-1.11.1/bin/start-cluster.sh
ExecStop=/usr/local/flink/flink-1.11.1/bin/stop-cluster.sh

[Install]
WantedBy=multi-user.target

6.设置服务生效及开机自启动

systemctl daemon-reload
systemctl enable flink.service

7.启动flink集群

systemctl start flink
systemctl status flink