下载Flink安装包
https://mirror.bit.edu.cn/apache/flink/flink-1.11.2/flink-1.11.2-bin-scala_2.12.tgz #镜像链接下载速度快
mkdir flink
tar -xvf flink-1.11.2-bin-scala_2.12.tgz
添加一个专用用户,并附加管理员角色
#添加shower用户
sudo adduser shower
#管理员为shower添加管理员权限
sudo adduser shower sudo
#更改flink文件权限为shower所有
sudo chown -R shower:shower flink
#更换为shower用户登录
su shower
下载Java8
sudo apt install openjdk-8-jdk-headless
sudo update-alternatives --config java
sudo vi /etc/profile
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64
export JAVA_BIN=/usr/lib/jvm/java-1.8.0-openjdk-amd64/bin
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME JAVA_BIN PATH CLASSPATH
source /etc/profile #配置即刻生效
cd /usr/bin
sudo ln -s -f /usr/lib/jvm/java-1.8.0-openjdk-amd64/jre/bin/java
sudo ln -s -f /usr/lib/jvm/java-1.8.0-openjdk-amd64/bin/javac
集群之间免密登录
1.为集群每一台机器配置域名,方便通过域名相互访问
sudo vi /etc/hosts
ip1 node1
ip2 node2
ip3 node3
2. node1,node2,node3...每台机器上都生成密钥
ssh-keygen -t rsa
cd /home/shower/.ssh
cp id_rsa.pub authorized_keys
3.密钥授权到node1上
ssh-copy-id -i node1 #登录node1执行
ssh-copy-id -i node1 #登录node2执行
ssh-copy-id -i node1 #登录node3执行
4.登录node1,密钥分发
chmod 600 authorized_keys
scp /home/shower/.ssh/authorized_keys node2:/home/shower/.ssh/
scp /home/shower/.ssh/authorized_keys node3:/home/shower/.ssh/
使用 Flink 自带的脚本部署 Zookeeper
1.修改Zookeeper 集群的脚本配置
根据你要部署的 Zookeeper Server 的机器数来配置“server.X=addressX:peerPort:leaderPort”,其中“X”是一个 Zookeeper Server 的唯一 ID,且必须是数字。
#vi conf/zoo.cfg
clientPort=2181
server.1=node1:4888:5888
server.2=node2:4888:5888
server.3=node3:4888:5888
2.启动zookeeper
./bin/start-zookeeper-quorum.sh
tips:启动可能会报异常ClassNotFoundException,缺失的是log4j中的类,我们可以把其他项目中用到的log4j.jar直接拷贝到$JAVA_HOME/jre/lib/ext/下。至此启动正常
3.查看集群主备情况
echo stat|nc node2 2181
4.关闭zookeeper
./bin/stop-zookeeper-quorum.sh
配置并启动flink
1.修改 conf/masters 文件,设置两个master
$vi conf/masters
node1:8081
node2:8081
cd /home/shower/flink/flink-1.11.2/
#拷贝到集群其他机器
scp conf/masters node1:/home/shower/flink/flink-1.11.2/conf/
scp conf/masters node2:/home/shower/flink/flink-1.11.2/conf/
2.修改 conf/workers文件,设置3个worker
$vi conf/workers
node1
node2
node3
#拷贝到集群其他机器
scp conf/workers node1:/home/shower/flink/flink-1.11.2/conf/
scp conf/workers node2:/home/shower/flink/flink-1.11.2/conf/
3.修改Flink的HA配置
$vi conf/flink-conf.yaml
high-availability: zookeeper # 基于zookeeper实现高可用
high-availability.storageDir: file:///share # JobManager 的 meta 信息放在 dfs,建议使用Hdfs
high-availability.zookeeper.quorum: node1:2181,node2:2181,node3:2181 # zookeeper集群
#拷贝到集群其他机器
scp conf/flink-conf.yaml node1:/home/shower/flink/flink-1.11.2/conf/
scp conf/flink-conf.yaml node2:/home/shower/flink/flink-1.11.2/conf/
4.启动zookeeper集群和flink集群
./bin/start-zookeeper-quorum.sh
./bin/start-cluster.sh
5.访问node1,node2的web页面
6.HA验证
删除node1上的StandaloneSessionClusterEntrypoint进程,node1已经不能访问 但是node2还是能正常访问
kill -9 40468
然后再次启动node1,node1 node2都可以访问,且页面显示的集群指标数据一样
./bin/jobmanager.sh start node1 8081