简介
快速帮助开发者搭建一个redis集群
脚本下载地址:
下载后: https://download.csdn.net/download/tianjia125/12517841
- 先执行 createFile.py 生成对应的配置文件和目录
- 根据脚本提示启动容器,加入集群即可搭建完成
准备redis.conf配置文件
bind $ip
#bind 172.18.0.1
#bind 0.0.0.0
protected-mode yes
port $port
tcp-backlog 511
timeout 0
tcp-keepalive 300
#daemonize yes
supervised no
pidfile "/data/pid/redis.pid"
loglevel notice
#logfile "/data/logs/redis.log"
databases 16
always-show-logo yes
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename "dump.rdb"
dir "/data/nodes"
replica-serve-stale-data yes
replica-read-only yes
repl-diskless-sync no
repl-diskless-sync-delay 5
repl-disable-tcp-nodelay no
replica-priority 100
lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
replica-lazy-flush no
appendonly no
appendfilename "appendonly.aof"
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
aof-use-rdb-preamble yes
lua-time-limit 5000
cluster-enabled yes
cluster-config-file "/data/nodes/nodes.conf"
cluster-node-timeout 15000
cluster-announce-bus-port 1$port
cluster-announce-ip $ip
slowlog-max-len 128
latency-monitor-threshold 0
notify-keyspace-events ""
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-size -2
list-compress-depth 0
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
hll-sparse-max-bytes 3000
stream-node-max-bytes 4096
stream-node-max-entries 100
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit replica 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
hz 10
dynamic-hz yes
aof-rewrite-incremental-fsync yes
rdb-save-incremental-fsync yes
# Generated by CONFIG REWRITE
masterauth "$password"
requirepass "$password"
准备docker-compose.yml文件
version: "3"
services:
redis-cluster-6380:
image: redis:5.0.5
container_name: node-80
network_mode: host
ports:
- 6380:6380
- 16380:16380
volumes:
- ./conf/redis-6380.conf:/usr/local/etc/redis/redis.conf
#- ./log:/var/log/redis
- ./data/6380:/data
command: sh -c "redis-server /usr/local/etc/redis/redis.conf"
environment:
# 设置时区为上海,否则时间会有问题
- TZ=Asia/Shanghai
redis-cluster-6381:
image: redis:5.0.5
container_name: node-81
network_mode: host
ports:
- 6381:6381
- 16381:16381
volumes:
- ./conf/redis-6381.conf:/usr/local/etc/redis/redis.conf
#- ./log:/var/log/redis
- ./data/6381:/data
command: sh -c "redis-server /usr/local/etc/redis/redis.conf"
environment:
# 设置时区为上海,否则时间会有问题
- TZ=Asia/Shanghai
redis-cluster-6382:
image: redis:5.0.5
container_name: node-82
network_mode: host
ports:
- 6382:6382
- 16382:16382
volumes:
- ./conf/redis-6382.conf:/usr/local/etc/redis/redis.conf
#- ./log:/var/log/redis
- ./data/6382:/data
command: sh -c "redis-server /usr/local/etc/redis/redis.conf"
environment:
# 设置时区为上海,否则时间会有问题
- TZ=Asia/Shanghai
redis-cluster-6383:
image: redis:5.0.5
container_name: node-83
network_mode: host
ports:
- 6383:6383
- 16383:16383
volumes:
- ./conf/redis-6383.conf:/usr/local/etc/redis/redis.conf
#- ./log:/var/log/redis
- ./data/6383:/data
command: sh -c "redis-server /usr/local/etc/redis/redis.conf"
environment:
# 设置时区为上海,否则时间会有问题
- TZ=Asia/Shanghai
redis-cluster-6384:
image: redis:5.0.5
container_name: node-84
network_mode: host
ports:
- 6384:6384
- 16384:16384
volumes:
- ./conf/redis-6384.conf:/usr/local/etc/redis/redis.conf
#- ./log:/var/log/redis
- ./data/6384:/data
command: sh -c "redis-server /usr/local/etc/redis/redis.conf"
environment:
# 设置时区为上海,否则时间会有问题
- TZ=Asia/Shanghai
redis-cluster-6385:
image: redis:5.0.5
container_name: node-85
network_mode: host
ports:
- 6385:6385
- 16385:16385
volumes:
- ./conf/redis-6385.conf:/usr/local/etc/redis/redis.conf
#- ./log:/var/log/redis
- ./data/6385:/data
command: sh -c "redis-server /usr/local/etc/redis/redis.conf"
environment:
# 设置时区为上海,否则时间会有问题
- TZ=Asia/Shanghai
准备createFile.py创建目录脚本
import os
import socket
from string import Template
def mkdir(path):
path = path.strip()
path = path.rstrip("/")
# 判断路径是否存在
isExists=os.path.exists(path)
if not isExists:
os.makedirs(path)
print( path + ' 创建成功')
return True
else:
print( path+' 目录已存在')
return False
ip = price_str = input("输入绑定redis的IP地址:")
print(ip)
password = price_str = input("输入redis的密码:")
print(password)
cmd = 'docker exec -it node-80 redis-cli -p 6380 -a '+password+' --cluster create '
for port in range(6380,6386):
mkpath=os.getcwd() + "/data/" + str(port) + "/nodes"
mkdir(mkpath)
file = open(os.getcwd() + '/redis.conf', 'r')
tem = Template(file.read())
key = {'port': str(port), 'ip': ip, 'password': password}
result = tem.substitute(key)
mkdir(os.getcwd() + '/conf/')
filename = os.getcwd() + '/conf/redis-'+str(port)+'.conf'
print(filename + "文件创建成功")
conf = open(filename, 'w+')
conf.write(result);
print(filename + "配置文件写入成功")
cmd += ip + ':' + str(port) + ' '
cmd += '--cluster-replicas 1'
print("启动命令")
print("cd " + os.getcwd())
print("docker-compose up -d")
print("加入集群命令")
print(cmd)
版权声明:本文为tianjia125原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。