博客
关于我
python3 一键部署redis主从哨兵服务(centos|ubuntu)
阅读量:331 次
发布时间:2019-03-04

本文共 3573 字,大约阅读时间需要 11 分钟。

Redis 安装与配置指南

系统检测与工具准备

在开始安装 Redis 之前,需要确保目标服务器已具备必要的工具和环境。我们将依次检测并安装以下必需工具:curlwgettar

检测工具安装

# 检测并安装 Curlif ! command -v curl &> /dev/null; then    echo "正在安装 Curl"    if [ Ubuntu ]; then        sudo apt-get -y install curl    else        sudo yum -y install curl    fifi# 检测并安装 Wgetif ! command -v wget &> /dev/null; then    echo "正在安装 Wget"    if [ Ubuntu ]; then        sudo apt-get -y install wget    else        sudo yum -y install wget    fifi# 检测并安装 Tarif ! command -v tar &> /dev/null; then    echo "正在安装 Tar"    if [ Ubuntu ]; then        sudo apt-get -y install tar    else        sudo yum -y install tar    fifi

Redis 安装

接下来,我们将按照以下步骤安装 Redis:

1. 下载 Redis 源码

# 下载 Redis 最新版本wget http://download.redis.io/releases/redis-6.2.0.tar.gz

2. 解压并编译安装

# 解压tar -xzf redis-6.2.0.tar.gz -C /usr/local/cd /usr/local/redis-6.2.0make && make install

3. 配置 Redis

# 创建必要的目录mkdir -p /etc/redis/{conf,log,pid,redis6981,redis6982,redis6983,sentinel26981,sentinel26982,sentinel26983}# 编写配置文件# 例如:/etc/redis/conf/redis6981.confecho "bind 0.0.0.0protected-mode noport 6981tcp-backlog 511unixsocket /tmp/redis6981.sockunixsocketperm 700timeout 0tcp-keepalive 300daemonize yessupervised nopidfile /etc/redis/pid/redis_6981.pidloglevel noticelogfile /etc/redis/log/redis6981.logdatabases 16always-show-logo yes# 持久化配置save 900 1save 300 10save 60 10000stop-writes-on-bgsave-error yesrdbcompression yesrdbchecksum yesdbfilename "dump6981.rdb"dir /etc/redis/redis6981# 主从配置masterauth {}replica-serve-stale-data yesreplica-read-only yesrepl-diskless-sync norepl-diskless-sync-delay 5repl-backlog-size 10mbrepl-backlog-ttl 3600# 安全认证requirepass {}rename-command CONFIG "b840fc02d524045429941cc43f59e41cb7be6c52"# LUA 脚本支持lua-time-limit 5000# 慢日志slowlog-log-slower-than 10000slowlog-max-len 128# 高级设置activerehashing yesclient-output-buffer-limit normal 0 0 0client-output-buffer-limit slave 1024mb 256mb 300client-output-buffer-limit pubsub 32mb 8mb 60client-query-buffer-limit 1gb" > /etc/redis/conf/redis6981.conf# 编写 Sentinel 配置文件echo "port 26981daemonize yespidfile /etc/redis/pid/redis-sentinel26981.pidlogfile /etc/redis/log/sentinel26981.logdir /etc/redis/sentinel26981sentinel deny-scripts-reconfig yessentinel monitor mymaster {} 6981 2sentinel auth-pass mymaster {}" > /etc/redis/conf/sentinel26981.conf

3. 创建服务文件

# 创建服务文件mkdir -p /opt/scriptswith open('redis.py', 'w', encoding='utf-8') do:    rs.write('''#!/usr/bin/env python3import sysimport osif sys.argv[1] == 'start':    for start_id in [1, 2, 3]:        os.system(f'redis-server /etc/redis/conf/redis698{start_id}.conf')        print(f'启动 Redis {start_id}')        os.system(f'redis-sentinel /etc/redis/conf/sentinel2698{start_id}.conf')        print(f'启动 Sentinel {start_id}')elif sys.argv[1] == 'stop':    passwd='%s'    for stop_id in [1, 2, 3]:        os.system(f'redis-cli -p 698{stop_id} -a {passwd} shutdown > /dev/null 2>&1 &')        print(f'停止 Redis {stop_id}')        os.system(f'redis-cli -p 2698{stop_id} shutdown > /dev/null 2>&1 &')        print(f'停止 Sentinel {stop_id}')else:    print('请进入 start 或 stop 命令')''' % (passwd))# 生成服务文件chmod u+x redis.py

4. 启动服务

# 启动 Redis 集群systemctl enable redis{1,2,3}.servicesystemctl start redis{1,2,3}.servicesystemctl enable sentinel{1,2,3}.servicesystemctl start sentinel{1,2,3}.service

常见问题

1. 部署失败

如果部署过程中遇到问题,可以尝试以下解决方案:

  • 检查网络连接是否正常。
  • 确保 Redis 配置文件路径正确。
  • 查看日志文件 (/etc/redis/log/redis6981.log) 以获取错误信息。

2. 服务无法启动

  • 检查 Redis 和 Sentinel 的日志文件。
  • 确保相关用户拥有足够的权限。
  • 检查防火墙设置,确保 Redis 端口开放。

总结

通过以上步骤,您可以成功部署一个 Redis 集群。从工具检测到源码安装,再到配置和服务管理,每一步都需要细致完成。请确保在实际操作中按照文档进行,避免因疏忽导致配置错误。

转载地址:http://ameh.baihongyu.com/

你可能感兴趣的文章
Objective-C实现largest subarray sum最大子数组和算法(附完整源码)
查看>>
Objective-C实现largestPrime最大素数的算法 (附完整源码)
查看>>
Objective-C实现lazy segment tree惰性段树算法(附完整源码)
查看>>
Objective-C实现LBP特征提取(附完整源码)
查看>>
Objective-C实现LDPC码(附完整源码)
查看>>
Objective-C实现least common multiple最小公倍数算法(附完整源码)
查看>>
Objective-C实现Lempel-Ziv压缩算法(附完整源码)
查看>>
Objective-C实现Length conversion长度转换算法(附完整源码)
查看>>
Objective-C实现levenshteinDistance字符串编辑距离算法(附完整源码)
查看>>
Objective-C实现linear congruential generator线性同余发生器算法(附完整源码)
查看>>
Objective-C实现linear search线性搜索算法(附完整源码)
查看>>
Objective-C实现LinkedListNode链表节点类算法(附完整源码)
查看>>
Objective-C实现LinkedList链表算法(附完整源码)
查看>>
Objective-C实现logistic regression逻辑回归算法(附完整源码)
查看>>
Objective-C实现longest increasing subsequence最长递增子序列算法(附完整源码)
查看>>
Objective-C实现longestCommonSubsequence最长公共子序列算法(附完整源码)
查看>>
Objective-C实现LongestIncreasingSubsequence最长递增子序列算法(附完整源码)
查看>>
Objective-C实现lorenz transformation 洛伦兹变换算法(附完整源码)
查看>>
Objective-C实现Lower-Upper Decomposition上下分解算法(附完整源码)
查看>>
Objective-C实现lowest common ancestor最低共同祖先算法(附完整源码)
查看>>