一、背景
-
基于我们前面给大家介绍 zookeeper版本选择与配置参数调优的flink_ha版本适配问题,我们cdh自带的zookeeper_3.4.5 版本不符合业务使用要求,因此这篇文章带大家来了解一下如何升级我们cdh自带的zookeeper版本(自建parcels升级)
二、升级方案
- 升级方案有两种,这里主要介绍的是第二种(自建parcels升级)至于为什么,下面会给大家介绍
-
替换cdh自带的zookeeper.jar包的方式,具体详见:zookeeper升级到 3.4.14
-
自建parcels升级,和原来的cdh自带的zookeeper互不影响,相互独立
原生cdh自带的zookeeper已经有很多组件在上面使用了,如:hdfs,yarn,hbase等。如果直接以上面方案1替换jar包的方式,可能会引起组件兼容性问题,再有如果业务节点比较多,共用一套zookeeper集群,很容易引起各种问题,最好把zookeeper集群分开部署使用,如Hadoop集群一套zk;flink、kyuubi、clickhouse一套zk;这样单独的资源分开,出现问题也好排查,方便运维人员维护,基于我们的flink业务场景,需要单独部署一套zookeeper集群给到flink来用,所以我们使用方案2。
三、CDH自建parcel
前面已经介绍了关于如何打parcles包的教程以及相关规则,不太懂的同学可以看前面的文章 CDH自建parcels包,这里不再讲述。
四、添加zookeeper服务
- 相关安装包已经分享到百度网盘,需要的可以自取
链接:https://pan.baidu.com/s/1BhK6I7Vt04ejMSEdb4u5LA
提取码:C3hp
1、分发CDH Parcel包
1、将parcel包和parcel.sha拷贝到cm节点的/opt/cloudera/parcel-repo/目录
2、将csd jar包拷贝到/opt/cloudera/csd目录下
3、执行重启 cloudera-scm-server
systemctl restart cloudera-scm-server
4、分配 激活 Parcel包
- 【主机】
- 【Parcel】
- 【检查新Parcel】
- 【分配】
- 【激活】
2、添加 Zookeeper服务
1、点击添加服务
2、选择添加Flink_zookeeper服务
3、选择要添加的zookeeper主机节点(记得安装java jdk)
4、选择配置目录
5、为zookeeper集群添加myid,(每台服务器myid不同,需要分别修改,例如server.1对应的myid内容为1,server.2对应的myid内容为2,server.3对应的myid为3。)
6、添加高级配置(相关配置参数,前面文章有相关介绍)
4lw.commands.whitelist=*
metricsProvider.exportJvmInfo=true
skipACL=yes
forceSync=no
#authProvider.1=org.apache.zookeeper.server.auth.SASLAuthenticationProvider
#jaasLoginRenew=3600000
#requireClientAuthScheme=sasl
metricsProvider.className=org.apache.zookeeper.metrics.prometheus.PrometheusMetricsProvider
metricsProvider.httpPort=7000
server.1=10.10.214.169:2888:3888
server.2=10.10.214.172:2888:3888
server.3=10.10.214.168:2888:3888
7、依次启动zookeeper_server节点
8、验证服务zk是否正常
echo stat | nc zk.server 2181
五、zookeeper监控
- zookeeper metrics
官方监控指南
上面我们在高级里面加入了zookeeper自带的metrics监控,现在可以用prometheus+grafana进行监控展示
# 如果将此属性设置为true,则Prometheus.io将导出有关JVM的指标,默认值为true
metricsProvider.exportJvmInfo=true
# metric Prometheus 监控配置,如果用的其它监控方案这里可以注释掉
metricsProvider.className=org.apache.zookeeper.metrics.prometheus.PrometheusMetricsProvider
# metric Prometheus 监控端口,同上,如果用的其它监控方案这里可以注释掉
metricsProvider.httpPort=7000
浏览器访问 http://IP:7000/metrics,查看是否访问正常
- 配置prometheus进行数据收集
vim /etc/prometheus/prometheus.yml
- job_name: zk
metrics_path: /metrics
scrape_interval: 20s
scrape_timeout: 10s
static_configs:
- targets:
- '10.10.214.168:7000'
- '10.10.214.169:7000'
- '10.10.214.172:7000'
- 重启或者reload让配置文件生效
/usr/bin/curl 'http://localhost:9090/-/reload' -X POST
- 配置grafana监控面板,下载Dashboard 进行导入,下载地址
- 导入grafana模板 import–>upload–>json–>load
- 导入效果
六、补充
- 本篇文章主要给大家介绍了如何添加cdh自定义zookeeper parcles包,以便能够在cdh上面添加多版本zookeeper,同时更方便的维护好集群
- 监控方面使用zookeeper自带的metrics结合prometheus+grafana,另还可以使用第三方zookeeper_exporter 进行监控,这个用起来没有自带的metrics多,比较简洁,主要关注点jmx,连接数、延时等,有兴趣小伙伴可以自行了解。
- 待优化,如zookeeper日志目前在cm中看不了,后续有时间再继续调试,有兴趣小伙伴也可以多多交流完善。