redis 集群搭建
发表于:2025-12-04 作者:千家信息网编辑
千家信息网最后更新 2025年12月04日,##redis 官网: https://redis.io#redis 文档:https://redis.io/documentation#redis 集群:https://redis.io/topic
千家信息网最后更新 2025年12月04日redis 集群搭建
#
#redis 官网: https://redis.io
#redis 文档:https://redis.io/documentation
#redis 集群:https://redis.io/topics/cluster-tutorial
#redis 常用配置解释:https://yq.aliyun.com/articles/38806;https://github.com/linli8/cnblogs/blob/master/redis%E5%89%AF%E6%9C%AC.conf
#软件下载
[root@node3 ~]# wget http://download.redis.io/releases/redis-3.2.9.tar.gz
#编译
[root@node3 ~]# mkdir /usr/local/redis[root@node3 ~]# mkdir /usr/local/redis/{data,conf,bin}[root@node3 ~]# tar -xf redis-3.2.9.tar.gz [root@node3 ~]# cd redis-3.2.9/[root@node3 redis-3.2.9]# make#拷贝编译后的文件
[root@node3 redis-3.2.9]# cd src/[root@node3 src]# \cp -p mkreleasehdr.sh redis-benchmark redis-check-aof redis-check-rdb redis-cli redis-sentinel redis-server redis-trib.rb /usr/local/redis/bin/[root@node3 src]# cd ..[root@node3 redis-3.2.9]# cp -p redis.conf /usr/local/redis/conf/
#创建数据目录
[root@node3 redis-3.2.9]# cd /usr/local/redis/data/[root@node3 data]# mkdir {7000..7005}[root@node3 data]# ls7000 7001 7002 7003 7004 7005[root@node3 data]##修改相应端口(大致如下)
[root@node3 conf]# grep '^[a-Z]' redis.conf bind 0.0.0.0dir /usr/local/redis/data/7000pidfile /var/run/redis_7000.pidappendfilename "appendonly-7000.aof"port 7000cluster-config-file nodes-7000.conf cluster-enabled yescluster-node-timeout 15000protected-mode notcp-backlog 511timeout 0tcp-keepalive 300daemonize yessupervised nologlevel warninglogfile ""databases 16save 900 1save 300 10save 60 10000stop-writes-on-bgsave-error yesrdbcompression yesrdbchecksum nodbfilename dump.rdbslave-serve-stale-data yesslave-read-only yesrepl-diskless-sync yesrepl-diskless-sync-delay 5repl-disable-tcp-nodelay noslave-priority 100appendonly yesappendfsync everysecno-appendfsync-on-rewrite noauto-aof-rewrite-percentage 100auto-aof-rewrite-min-size 64mbaof-load-truncated yeslua-time-limit 5000slowlog-log-slower-than 100000slowlog-max-len 128hash-max-ziplist-entries 512hash-max-ziplist-value 64list-max-ziplist-size -2list-compress-depth 0latency-monitor-threshold 0set-max-intset-entries 512zset-max-ziplist-entries 128zset-max-ziplist-value 64hll-sparse-max-bytes 3000activerehashing yesclient-output-buffer-limit normal 0 0 0client-output-buffer-limit slave 256mb 64mb 60client-output-buffer-limit pubsub 64mb 16mb 60hz 10aof-rewrite-incremental-fsync yesmaxmemory-policy allkeys-lrumaxmemory-samples 5maxclients 10000
#拷贝配置文件
[root@node3 conf]# for i in {7000..7005};do cp redis.conf $i.conf;done[root@node3 conf]# ls7000.conf 7001.conf 7002.conf 7003.conf 7004.conf 7005.conf redis.conf[root@node3 conf]# rm -f redis.conf#批量修改[root@node3 conf]# for i in {7000..7005};do sed -i "s/7000/$i/g" "$i".conf;done#修改脚本(十分粗糙的脚本,不建议采纳,望读者自行编写)
[root@node3 ~]# cp -p redis-3.2.9/utils/redis_init_script /etc/init.d/redis[root@node3 ~]# vim /etc/init.d/redis [root@node3 ~]# cat /etc/init.d/redis #!/bin/sh## Simple Redis init.d script conceived to work on Linux systems# as it does use of the /proc filesystem.#REDISPORT=$2EXEC=/usr/local/redis/bin/redis-serverCLIEXEC=/usr/local/redis/bin/redis-cliCONFDIR="/usr/local/redis/conf/"#PIDFILE=/var/run/redis_${REDISPORT}.pid#CONF="$CONFDIR${REDISPORT}.conf"function main(){REDISPORT=$2PIDFILE=/var/run/redis_${REDISPORT}.pidCONF="$CONFDIR${REDISPORT}.conf" case "$1" in start) if [ -f $PIDFILE ] then echo "$PIDFILE exists, process is already running or crashed" else echo "Starting Redis server..." $EXEC $CONF fi ;; stop) if [ ! -f $PIDFILE ] then echo "$PIDFILE does not exist, process is not running" else PID=$(cat $PIDFILE) echo "Stopping ..." $CLIEXEC -p $REDISPORT shutdown while [ -x /proc/${PID} ] do echo "Waiting for Redis to shutdown ..." sleep 1 done echo "Redis stopped" fi ;; *) echo "Please use start or stop as first parameter,port or all as second parameter." ;; esac}if [ "$2" == "all" ]then for i in `ls $CONFDIR | grep [0-9] | cut -c 1-4` ;domain $1 $i doneelse main $1 $2fi#启动服务
[root@node3 ~]# service redis start all[root@node3 ~]# netstat -lntup | grep redistcp 0 0 0.0.0.0:17000 0.0.0.0:* LISTEN 6735/redis-server 0 tcp 0 0 0.0.0.0:17001 0.0.0.0:* LISTEN 6737/redis-server 0 tcp 0 0 0.0.0.0:17002 0.0.0.0:* LISTEN 6743/redis-server 0 tcp 0 0 0.0.0.0:17003 0.0.0.0:* LISTEN 6747/redis-server 0 tcp 0 0 0.0.0.0:17004 0.0.0.0:* LISTEN 6749/redis-server 0 tcp 0 0 0.0.0.0:17005 0.0.0.0:* LISTEN 6755/redis-server 0 tcp 0 0 0.0.0.0:7000 0.0.0.0:* LISTEN 6735/redis-server 0 tcp 0 0 0.0.0.0:7001 0.0.0.0:* LISTEN 6737/redis-server 0 tcp 0 0 0.0.0.0:7002 0.0.0.0:* LISTEN 6743/redis-server 0 tcp 0 0 0.0.0.0:7003 0.0.0.0:* LISTEN 6747/redis-server 0 tcp 0 0 0.0.0.0:7004 0.0.0.0:* LISTEN 6749/redis-server 0 tcp 0 0 0.0.0.0:7005 0.0.0.0:* LISTEN 6755/redis-server 0 [root@node3 ~]#
#创建集群
[root@node3 conf]# yum install ruby ruby-devel rubygems rpm-build[root@node3 conf]# gem install redis #如果没有反应,可以更换源#更换源 参考:http://gems.ruby-china.org/# gem update --system # 这里请×××一下#gem sources --add https://gems.ruby-china.org/ --remove https://rubygems.org/#[root@node3 conf]# cd /usr/local/redis/bin/[root@node3 bin]# lsmkreleasehdr.sh redis-check-aof redis-cli redis-serverredis-benchmark redis-check-rdb redis-sentinel redis-trib.rb[root@node3 bin]# ./redis-trib.rb create --replicas 1 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005>>> Creating cluster>>> Performing hash slots allocation on 6 nodes...Using 3 masters:127.0.0.1:7000127.0.0.1:7001127.0.0.1:7002Adding replica 127.0.0.1:7003 to 127.0.0.1:7000Adding replica 127.0.0.1:7004 to 127.0.0.1:7001Adding replica 127.0.0.1:7005 to 127.0.0.1:7002M: de6c4b00953b0e354ea375106f29bd627ed3ab2e 127.0.0.1:7000 slots:0-5460 (5461 slots) masterM: fce2cebafefeb540592c624c68b741d465ce095b 127.0.0.1:7001 slots:5461-10922 (5462 slots) masterM: 83474177e39b72145adaad60cad1fe4523a0ee79 127.0.0.1:7002 slots:10923-16383 (5461 slots) masterS: af00ce59424417ab1cfba4edc145223d4b3ac999 127.0.0.1:7003 replicates de6c4b00953b0e354ea375106f29bd627ed3ab2eS: 64391b1f359b6bfdfdd5373c71388fb119dc2bb3 127.0.0.1:7004 replicates fce2cebafefeb540592c624c68b741d465ce095bS: 3509837665c9cfe7a798513b87c84c9b2d3c9f1d 127.0.0.1:7005 replicates 83474177e39b72145adaad60cad1fe4523a0ee79Can I set the above configuration? (type 'yes' to accept): yes>>> Nodes configuration updated>>> Assign a different config epoch to each node>>> Sending CLUSTER MEET messages to join the clusterWaiting for the cluster to join....>>> Performing Cluster Check (using node 127.0.0.1:7000)M: de6c4b00953b0e354ea375106f29bd627ed3ab2e 127.0.0.1:7000 slots:0-5460 (5461 slots) master 1 additional replica(s)M: fce2cebafefeb540592c624c68b741d465ce095b 127.0.0.1:7001 slots:5461-10922 (5462 slots) master 1 additional replica(s)S: af00ce59424417ab1cfba4edc145223d4b3ac999 127.0.0.1:7003 slots: (0 slots) slave replicates de6c4b00953b0e354ea375106f29bd627ed3ab2eM: 83474177e39b72145adaad60cad1fe4523a0ee79 127.0.0.1:7002 slots:10923-16383 (5461 slots) master 1 additional replica(s)S: 64391b1f359b6bfdfdd5373c71388fb119dc2bb3 127.0.0.1:7004 slots: (0 slots) slave replicates fce2cebafefeb540592c624c68b741d465ce095bS: 3509837665c9cfe7a798513b87c84c9b2d3c9f1d 127.0.0.1:7005 slots: (0 slots) slave replicates 83474177e39b72145adaad60cad1fe4523a0ee79[OK] All nodes agree about slots configuration.>>> Check for open slots...>>> Check slots coverage...[OK] All 16384 slots covered.
#登陆集群
[root@node3 ~]# /usr/local/redis/bin/redis-cli -c -h 127.0.0.1 -p 7000127.0.0.1:7000> cluster nodesfce2cebafefeb540592c624c68b741d465ce095b 127.0.0.1:7001 master - 0 1495358027725 2 connected 5461-10922de6c4b00953b0e354ea375106f29bd627ed3ab2e 127.0.0.1:7000 myself,master - 0 0 1 connected 0-5460af00ce59424417ab1cfba4edc145223d4b3ac999 127.0.0.1:7003 slave de6c4b00953b0e354ea375106f29bd627ed3ab2e 0 1495358029772 4 connected83474177e39b72145adaad60cad1fe4523a0ee79 127.0.0.1:7002 master - 0 1495358025682 3 connected 10923-1638364391b1f359b6bfdfdd5373c71388fb119dc2bb3 127.0.0.1:7004 slave fce2cebafefeb540592c624c68b741d465ce095b 0 1495358028748 5 connected3509837665c9cfe7a798513b87c84c9b2d3c9f1d 127.0.0.1:7005 slave 83474177e39b72145adaad60cad1fe4523a0ee79 0 1495358026706 6 connected127.0.0.1:7000> cluster infocluster_state:okcluster_slots_assigned:16384cluster_slots_ok:16384cluster_slots_pfail:0cluster_slots_fail:0cluster_known_nodes:6cluster_size:3cluster_current_epoch:6cluster_my_epoch:1cluster_stats_messages_sent:77cluster_stats_messages_received:77127.0.0.1:7000> cluster nodesfce2cebafefeb540592c624c68b741d465ce095b 127.0.0.1:7001 master - 0 1495358038300 2 connected 5461-10922de6c4b00953b0e354ea375106f29bd627ed3ab2e 127.0.0.1:7000 myself,master - 0 0 1 connected 0-5460af00ce59424417ab1cfba4edc145223d4b3ac999 127.0.0.1:7003 slave de6c4b00953b0e354ea375106f29bd627ed3ab2e 0 1495358039395 4 connected83474177e39b72145adaad60cad1fe4523a0ee79 127.0.0.1:7002 master - 0 1495358036106 3 connected 10923-1638364391b1f359b6bfdfdd5373c71388fb119dc2bb3 127.0.0.1:7004 slave fce2cebafefeb540592c624c68b741d465ce095b 0 1495358033918 5 connected3509837665c9cfe7a798513b87c84c9b2d3c9f1d 127.0.0.1:7005 slave 83474177e39b72145adaad60cad1fe4523a0ee79 0 1495358040489 6 connected127.0.0.1:7000>
#redis集群搭建成功
集群
拷贝
文件
脚本
编译
配置
成功
粗糙
常用
建议
数据
文档
目录
端口
读者
软件
软件下载
参考
反应
服务
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
江油论坛网络技术工安是安装
世界顶级互联网科技
网络安全可转债有哪些
加盟华为网络技术有限公司
南开网络技术与应用计算题
网络安全和服务应当
服务器回收服务价钱
jsf登陆界面连接数据库
西安交大网络安全专业就业
三级计算机网络技术哪个好考
软件开发模式 变更控制
数据库总体架构图
电脑时间和什么服务器同步
天心区公开招聘不诚信数据库
神武手游服务器什么意思
深圳 网络安全 安之天
华为数据库服务器
曙光英雄服务器连不上怎么办
如何查看所有的数据库
tcmsp数据库怎么进
数据库分布式锁与redis锁
石城软件开发技术
斗罗大陆服务器怎么加好友
win10查看网络安全秘钥
新疆网信办网络安全知识
fxp服务器怎么搭建
csgo境外服务器是指哪里
常用的服务器有
无线通信网络安全折线图
人像风景合成软件开发