本文已参与「新人创作礼」活动,一起开启掘金创作之路。
4.更换ambari-server
首先要监控ambari-server1是否正常,如果不正常才进行更换
监控ambari-server1
curl -o /dev/null -s -m 10 --connect-timeout 10 -w %{http_code} http://<ambari-server1>:8080
更换ambari-server
在amabri-server2启动amabri-server
ambari-server start
5.重启amabri-agaent
修改配置
ambari-agent 向ambari-server提交心跳 更换ambari-agent 配置中的amabri-server IP
sed -i 's/<ambari-server1>/<ambari-server2>/g' /etc/ambari-agent/conf/ambari-agent.ini
重启ambari-agent
ambari-agent restart
三、环境
这里我选用的纯离线安装方式,原因主要是受网络限制 需要下载的依赖包: ambari-2.5.0.3-centos7.tar.gz HDP-2.6.5.0-centos7-rpm.tar.gz HDP-UTILS-1.1.0.21-centos7.tar.gz ansible-2.4-rpms.el7.tar.gz(包含安装ansible各种依赖) mysql-5.7.27-el7-x86_64.tar.gz mysql-connector-java-5.1.47.jar jdk-8u201-linux-x64.tar.gz
四、mysql主从配置
设置从库只读
set global read_only=1;#针对普通MySQL数据库用户设置为只读
set global super_read_only=1;#针对super类MySQL数据库用户设置为只读,比如root用户
flush tables with read lock;#设定全局锁,如果只是需要只读,并不需要加锁
show global variables like "%read_only%";#查询全局变量表数据情况
我这里使用的是root 只执行第2条即可,最好都执行一下,第三条关闭客户端就失效了,可不执行。
五、同步配置文件
scp /etc/ambari-server/conf/password.dat root@<ambari-server2>:/etc/ambari-server/conf/
scp ambari.properties root@<ambari-server2>:/etc/ambari-server/conf
六、实现脚本
server_status_code="curl -o /dev/null -s -m 10 --connect-timeout 10 -w %{http_code} http://<ambari-server1>:8080"
if [ "$server_status_code" != "200" ]; then
mysql -uroot -p123456 -h127.0.0.1 -e"set global super_read_only=0;"
ambari-server start
ALL_CLIENTS=`cat /etc/hosts| grep "10.20.10" | awk '{print $2}'`
for client in $ALL_CLIENTS
do
ssh $client "sed -i 's/<ambari-server1>/<ambari-server2>/g' /etc/ambari-agent/conf/ambari-agent.ini; ambari-agent restart"
done
fi
七、缺陷
1.没有实时监控,这个可利用crontab -e解决
#*/2 * * * * /opt/ambari-serverHA.sh &
2.监控只有8080端口,应该加上pid的监控可参考ambari自定义服务解决(这个之前有写只写了一半还没发布你看看之前的文章有参考意义)
八、展望
问题
1.ambari元数据mysql备份,备份产生的问题,时效性,让HAserver切换受到影响 2.agent只能向一个server提交心跳,HAserver切换受到影响
展望
1.随着mysql 8.0 发布,MySQL NDB集群发展,第一个问题可以得到解决 2.apache对ambari-agent就赢一定的修改,或者我们有能力自己改一下也可以github上有源码 我相信解决上述2个我认为的关键问题,不久的将来官网会出ambari基于mysql8.0的一个HA方案,而且CDH HDP合并了,相信合并之后会更好,就是不知道还能不能免费使用。
7月3号补充
keepalived
解决amabri serve 和mysql 切换
ambari agent 不需要重新配置了
参考
- 使用keepalived 做Carbon Thrift Server HA添加链接描述
后续
mysql双主+keepalived实现mysql高可用并为ambari 与hive 提供服务
用于解决keepalive问题