redis 集群搭建
发表于:2025-02-06 作者:千家信息网编辑
千家信息网最后更新 2025年02月06日,##redis 官网: https://redis.io#redis 文档:https://redis.io/documentation#redis 集群:https://redis.io/topic
千家信息网最后更新 2025年02月06日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安全错误
数据库的锁怎样保障安全
人大金仓数据库等保测评方式
电脑上的数据库怎么找回
传奇游戏app软件开发
csgo服务器开启录制视频
明日方舟服务器在哪看
德温特数据库中的绿色专利数据
服务器密码管安全理制度
web报表与数据库连接
江门五金模具erp软件开发
大学生安码杯网络安全竞赛
网络安全与执法专业分析
ibm服务器故障码01
北京优质的电脑服务器回收
内蒙古软件开发市场
以色列的国家网络安全计划
贵州企业软件开发外包
多iD服务器购买
helen人脸数据库
香港服务器怎么开放端口
网络数据库技术带来哪些便利
数据库实验安全性实验报告
csgo服务器开启录制视频
2020郑州网络安全大会
装一个数据库要几G
网络安全工具收纳小包
大学校园网络安全课程答案
通用区块链数据库
网络安全与执法专业分析
直播平台数据库设计
宁波物联网智慧社区软件开发