zoukankan      html  css  js  c++  java
  • 编写shell脚本一键启动zookeeper集群!!

    踩了一个多小时坑终于解决了:

    这里分享给大家,更主要的目的是记住这些坑,避免以后重复走!!!

    首先,这里采用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后面,否则会报错:

    第三: 第一时间看日志,然后查找相关问题,这是解决问题最快的!然后其他常见错误在我之前写的一篇博客中有,这里就不重复写了!

  • 相关阅读:
    Java实现 LeetCode 440 字典序的第K小数字
    Java实现 LeetCode 438 找到字符串中所有字母异位词
    route命令详解与使用实例
    Google protobuf的安装及使用
    linux内核驱动中_IO, _IOR, _IOW, _IOWR 宏的用法与解析
    _GUN_SOURCE宏
    CodeViz产生函数调用图
    linux下阅读源代码的工具
    linux gcc 编译时头文件和库文件搜索路径
    Makefile第四讲:include 引用其它makefile文件
  • 原文地址:https://www.cnblogs.com/houzheng/p/10004410.html
Copyright © 2011-2022 走看看