【问题标题】:How Can I Restart The Redis Server If It Goes Down Automatically using a script?如果 Redis 服务器自动停机,如何使用脚本重新启动?
【发布时间】:2017-06-21 07:27:05
【问题描述】:

Redis 有主从配置。如果主服务器宕机,从服务器成为新的主服务器。我如何使用脚本重新启动以前的 redis 主服务器(作为新主服务器的从服务器,或者如果它再次成为主服务器,那很好)。我不想手动操作。

【问题讨论】:

  • 告诉我们你做了什么?
  • @KrishnaKuntala 使用“redis-cli -p 6379 DEBUG sleep 30”我正在杀死我的主人,奴隶成为主人。但早期的主人既不是奴隶也不是主人。所以我想重新启动它。我手动完成了,但我可以为此编写任何脚本

标签: bash redis node-redis


【解决方案1】:

这可以使用一个小脚本来完成。制作一个观察者脚本,在端口 6379 上持续 ping REDIS,如果它失败。只需使用 redis-server 命令重新启动服务器。

#!/bin/bash
a=$(redis-cli -p 6379 PING)
if [ "$a" = "PONG" ]
then
    echo 'Already running'
else
    b=$(/etc/init.d/redis_6379 start)   
    echo $b
fi

现在在 crontab 中为每个人安排这个脚本。

【讨论】:

    【解决方案2】:

    好的。在 redis 死机和死机导致灾难性服务器故障后,我不得不自学:

    1. 编辑/etc/systemd/system/multi-user.target.wants/redis.service 并将其添加到底部的[Service] 部分:

      重启=总是 重启秒=10s

    2. 运行sudo systemctl daemon-reload

    3. 运行sudo systemctl restart redis

    现在每次崩溃 10 秒后都会重新启动。

    这对于 redis 来说通常是“足够好”的。

    【讨论】:

      【解决方案3】:
      #!/bin/bash
      a=$(redis-cli -p 6379 PING)
      if ["$a" != "PONG" ]
          b=$(systemctl start redis)
          echo $b
      fi
      

      【讨论】:

      • 能否在您的帖子中添加一些解释性文字
      • 所提供的答案被标记为低质量帖子以供审核。以下是How do I write a good answer? 的一些指南。提供的这个答案可能是正确的,但它可以从解释中受益。仅代码答案不被视为“好”答案。来自review
      【解决方案4】:

      从上面的答案中,我添加了更多的描述,以便更容易理解。

      第一步:在根文件夹或您选择的文件夹上创建脚本 使用命令:

      vi redis-watch.sh 
      

      第二步:粘贴下面的脚本:

       #!/bin/bash
      a=$(redis-cli -p 6379 PING)
      if [ "$a" = "PONG" ]
      then
          echo 'Already running'
      else
          b=$(systemctl start redis)
          echo $b
      fi
      

      保存更改。

      第三步:更改文件的权限,防止执行时权限被拒绝响应。运行:

      sudo chmod 777 redis-watch.sh
      

      测试脚本是否执行。运行:

      ./redis-watch.sh
      

      如果 Redis 已经正常运行,则预期的响应应该是 Already running,否则脚本将启动 redis。

      第四步:要自动执行检查,请创建一个 cronjob 以按照您选择的时间间隔运行脚本。对于我们的案例,我们将让它每秒运行一次。

      运行:crontab -e 并粘贴该行:

      * * * * * ./redis-watch.sh
      

      应该是这样的。

      Cent OS 8测试

      【讨论】:

        猜你喜欢
        • 2017-12-29
        • 1970-01-01
        • 2012-11-04
        • 2019-02-12
        • 2017-11-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-07-02
        相关资源
        最近更新 更多