踩了一个多小时坑终于解决了:
这里分享给大家,更主要的目的是记住这些坑,避免以后重复走!!!
首先,这里采用ssh秘钥方式进行集群主机之间免密登录执行启动命令
这里简单说下原理:
通过ssh去另外一台机器执行命令,直接执行还不行,因为需要环境变量,而ssh登录之后不在同一个进程里面,所以环境变量不共享
可以在登录之后先执行 source /src/profile初始化环境配置,这样环境变量就有了,ssh登录默认不会执行初始化操作,
而从客户端登录会执行初始化一系列命令,包括这个,这个不多说
步骤:
1 配置三台(我用了三台)主机之间ssh可以互相登录, 命令 ssh-keygen 生成秘钥,然后去/root/.ssh/目录下将生成的秘钥
拷贝到其他两个主机上面:
再将秘钥 id_rsa.pub 追加到主机的auth这个文件中,没有可以vim创建一个
注意是在/root/.ssh/目录下面,配置好之后,测试一下 直接用 ssh ip 看是否可以登录,能不用密码直接登录就证明成功了!
然后就是编写shell了,这里直接执行ZkServer.sh start 肯定是不行的,日志会报没有java目录,即没有环境变量,所以可以
在执行之前执行环境变量初始化 source /etc/profile 就行了:
这个是我的!!
然后chomd 755 文件就可以直接执行启动了!
如果不成功,就得看日志了,因为是ssh启动,所以日志在~目录中,即 /root目录,这里我总结了几点坑:
坑:重点来了
第一: 确保集群之间通信的端口开放,默认是2888,3888都必须开放,可以使用firewall-cmd --zone=public --add-port=2888/tcp --permanent 添加,然后重新加载
firewall使用教程:https://www.cnblogs.com/moxiaoan/p/5683743.html
第二: java安装时候必须在环境变量配置JAVA_HOME,不能直接添加在$PATH后面,否则会报错:
第三: 第一时间看日志,然后查找相关问题,这是解决问题最快的!然后其他常见错误在我之前写的一篇博客中有,这里就不重复写了!