Redis cluster群集安装(单机多实例)

redis cluster安装至少要6个节点,本例安装采用单机6个实例的方式安装
 
安装环境:CentOS 7.6.1810
Redis版本:redis-4.0.2
Ruby版本:ruby-2.4.10
 
说明:由于redis cluster需要ruby 2.2以上版本,而系统自带为2.0,因此本例安装前需要卸载系统自带ruby,编译安装
 
Step1:安装gcc等编译工具
 
[root@Redis-Cluster ~]# yum -y install gcc
 
Step2:上传安装软件到安装服务器
 
[root@Redis-Cluster ~]# ls -l
total 15480
-rw-r--r-- 1 root root  1713990 Dec  6 09:45 redis-4.0.2.tar.gz
-rw-r--r-- 1 root root 14133414 Dec  6 05:01 ruby-2.4.10.tar.gz
 
Step3:安装ruby
 
[root@Redis-Cluster ~]# tar zxvf ruby-2.4.10.tar.gz
[root@Redis-Cluster ~]# cd ruby-2.4.10
[root@Redis-Cluster ruby-2.4.10]# ./configure --prefix=/usr/local/ruby
[root@Redis-Cluster ruby-2.4.10]# make
[root@Redis-Cluster ruby-2.4.10]# make install
[root@Redis-Cluster bin]# ln -s /usr/local/ruby/bin/ruby /usr/local/bin/ruby
[root@Redis-Cluster bin]# ln -s /usr/local/ruby/bin/gem /usr/local/bin/gem
 
Step4:安装redis
 
[root@Redis-Cluster ~]# tar zxvf redis-4.0.2.tar.gz
[root@Redis-Cluster ~]# cd redis-4.0.2
[root@Redis-Cluster redis-4.0.2]# make
[root@Redis-Cluster redis-4.0.2]# make install PREFIX=/usr/local/redis
[root@Redis-Cluster ~]# mkdir -pv /usr/local/redis/cluster
[root@Redis-Cluster ~]# mkdir -pv /usr/local/redis/cluster/{7001,7002,7003,7004,7005,7006}
mkdir: created directory ‘/usr/local/redis/cluster/7001’
mkdir: created directory ‘/usr/local/redis/cluster/7002’
mkdir: created directory ‘/usr/local/redis/cluster/7003’
mkdir: created directory ‘/usr/local/redis/cluster/7004’
mkdir: created directory ‘/usr/local/redis/cluster/7005’
mkdir: created directory ‘/usr/local/redis/cluster/7006’
[root@Redis-Cluster ~]# cp /root/redis-4.0.2/redis.conf /usr/local/redis/bin/
[root@Redis-Cluster ~]# cp /root/redis-4.0.2/redis.conf /usr/local/redis/bin/
[root@Redis-Cluster ~]# cp /root/redis-4.0.2/redis.conf /usr/local/redis/cluster/7001/redis-7001.conf
[root@Redis-Cluster ~]# cp /root/redis-4.0.2/redis.conf /usr/local/redis/cluster/7002/redis-7002.conf
[root@Redis-Cluster ~]# cp /root/redis-4.0.2/redis.conf /usr/local/redis/cluster/7003/redis-7003.conf
[root@Redis-Cluster ~]# cp /root/redis-4.0.2/redis.conf /usr/local/redis/cluster/7004/redis-7004.conf
[root@Redis-Cluster ~]# cp /root/redis-4.0.2/redis.conf /usr/local/redis/cluster/7005/redis-7005.conf
[root@Redis-Cluster ~]# cp /root/redis-4.0.2/redis.conf /usr/local/redis/cluster/7006/redis-7006.conf
 
[root@Redis-Cluster ~]# vim /usr/local/redis/cluster/7001/redis-7001.conf
 
bind 127.0.0.1     ->修改为 bind 0.0.0.0
port 6379            ->修改为 port 7001
daemonize no     ->修改为daemonize yes 
pidfile /var/run/redis_6379.pid ->修改为 pidfile /var/run/redis_7001.pid
#cluster-enabled yes      ->取消#注释
#cluster-config-file nodes_7001.conf        ->取消注释,指定集群配置文件
#cluster-node-timeout 15000           ->取消注释
appendonly no                                  ->修改为appendonly yes
 
其他的配置文件也修改
 
[root@Redis-Cluster ~]# vim /usr/local/redis/cluster/7002/redis-7002.conf   
[root@Redis-Cluster ~]# vim /usr/local/redis/cluster/7003/redis-7003.conf   
[root@Redis-Cluster ~]# vim /usr/local/redis/cluster/7004/redis-7004.conf   
[root@Redis-Cluster ~]# vim /usr/local/redis/cluster/7005/redis-7005.conf   
[root@Redis-Cluster ~]# vim /usr/local/redis/cluster/7006/redis-7006.conf
 
Step5:安装redis-trib所需的ruby脚本
 
[root@Redis-Cluster ~]# cp /root/redis-4.0.2/src/redis-trib.rb /usr/local/redis/cluster/
[root@Redis-Cluster ~]# cd /usr/local/redis/cluster/
[root@Redis-Cluster ~]# gem install redis
 
Step6:启动redis
 
[root@Redis-Cluster ~]# cd /usr/local/redis/bin/
[root@Redis-Cluster bin]# ./redis-server /usr/local/redis/cluster/7001/redis-7001.conf
[root@Redis-Cluster bin]# ./redis-server /usr/local/redis/cluster/7002/redis-7002.conf
[root@Redis-Cluster bin]# ./redis-server /usr/local/redis/cluster/7003/redis-7003.conf
[root@Redis-Cluster bin]# ./redis-server /usr/local/redis/cluster/7004/redis-7004.conf
[root@Redis-Cluster bin]# ./redis-server /usr/local/redis/cluster/7005/redis-7005.conf
[root@Redis-Cluster bin]# ./redis-server /usr/local/redis/cluster/7006/redis-7006.conf
 
[root@Redis-Cluster bin]# netstat -ntlup
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:17001           0.0.0.0:*               LISTEN      40529/./redis-serve
tcp        0      0 0.0.0.0:17002           0.0.0.0:*               LISTEN      40548/./redis-serve
tcp        0      0 0.0.0.0:17003           0.0.0.0:*               LISTEN      40553/./redis-serve
tcp        0      0 0.0.0.0:17004           0.0.0.0:*               LISTEN      40563/./redis-serve
tcp        0      0 0.0.0.0:17005           0.0.0.0:*               LISTEN      40568/./redis-serve
tcp        0      0 0.0.0.0:17006           0.0.0.0:*               LISTEN      40573/./redis-serve
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      9304/sshd           
tcp        0      0 0.0.0.0:7001            0.0.0.0:*               LISTEN      40529/./redis-serve
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      9434/master         
tcp        0      0 0.0.0.0:7002            0.0.0.0:*               LISTEN      40548/./redis-serve
tcp        0      0 0.0.0.0:7003            0.0.0.0:*               LISTEN      40553/./redis-serve
tcp        0      0 0.0.0.0:7004            0.0.0.0:*               LISTEN      40563/./redis-serve
tcp        0      0 0.0.0.0:7005            0.0.0.0:*               LISTEN      40568/./redis-serve
tcp        0      0 0.0.0.0:7006            0.0.0.0:*               LISTEN      40573/./redis-serve
tcp6       0      0 :::22                   :::*                    LISTEN      9304/sshd           
tcp6       0      0 ::1:25                  :::*                    LISTEN      9434/master         
 
 
Step7:创建redis集群
 
[root@Redis-Cluster bin]# cp /root/redis-4.0.2/src/redis-trib.rb /usr/local/redis/bin/
[root@Redis-Cluster bin]# ./redis-trib.rb create --replicas 1 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 127.0.0.1:7006
>>> Creating cluster
>>> Performing hash slots allocation on 6 nodes...
Using 3 masters:
127.0.0.1:7001
127.0.0.1:7002
127.0.0.1:7003
Adding replica 127.0.0.1:7004 to 127.0.0.1:7001
Adding replica 127.0.0.1:7005 to 127.0.0.1:7002
Adding replica 127.0.0.1:7006 to 127.0.0.1:7003
M: e90a1f6133b63ff2089e23f3ee732e9b20cf37f7 127.0.0.1:7001
   slots:0-5460 (5461 slots) master
M: 6bf5942ed2b76e6303f94229f23438b182a4dfda 127.0.0.1:7002
   slots:5461-10922 (5462 slots) master
M: c4a5e3ab437726490a1e2a0ce0bdc84ef71f3182 127.0.0.1:7003
   slots:10923-16383 (5461 slots) master
S: c9f9165639f4b48cb5738882864f9a5b2a27d272 127.0.0.1:7004
   replicates e90a1f6133b63ff2089e23f3ee732e9b20cf37f7
S: bf102f5f0ab3742f2b2fe1fa2360bcc5e844e934 127.0.0.1:7005
   replicates 6bf5942ed2b76e6303f94229f23438b182a4dfda
S: 655e94f61ede5d522eac3d499469b865fba6704b 127.0.0.1:7006
   replicates c4a5e3ab437726490a1e2a0ce0bdc84ef71f3182
Can 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 cluster
Waiting for the cluster to join....
>>> Performing Cluster Check (using node 127.0.0.1:7001)
M: e90a1f6133b63ff2089e23f3ee732e9b20cf37f7 127.0.0.1:7001
   slots:0-5460 (5461 slots) master
   1 additional replica(s)
S: 655e94f61ede5d522eac3d499469b865fba6704b 127.0.0.1:7006
   slots: (0 slots) slave
   replicates c4a5e3ab437726490a1e2a0ce0bdc84ef71f3182
M: 6bf5942ed2b76e6303f94229f23438b182a4dfda 127.0.0.1:7002
   slots:5461-10922 (5462 slots) master
   1 additional replica(s)
M: c4a5e3ab437726490a1e2a0ce0bdc84ef71f3182 127.0.0.1:7003
   slots:10923-16383 (5461 slots) master
   1 additional replica(s)
S: bf102f5f0ab3742f2b2fe1fa2360bcc5e844e934 127.0.0.1:7005
   slots: (0 slots) slave
   replicates 6bf5942ed2b76e6303f94229f23438b182a4dfda
S: c9f9165639f4b48cb5738882864f9a5b2a27d272 127.0.0.1:7004
   slots: (0 slots) slave
   replicates e90a1f6133b63ff2089e23f3ee732e9b20cf37f7
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
 
[root@Redis-Cluster bin]# ./redis-cli -c -p 7002
127.0.0.1:7002> keys *
(empty list or set)
127.0.0.1:7002> info
# Server
redis_version:4.0.2
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:77c538eb7a885142
redis_mode:cluster
os:Linux 3.10.0-957.el7.x86_64 x86_64
arch_bits:64
multiplexing_api:epoll
atomicvar_api:atomic-builtin
gcc_version:4.8.5
process_id:40548
run_id:1ac0271ebbd7b942ff347fa53d4a26a8bb9f1e45
tcp_port:7002
uptime_in_seconds:537
uptime_in_days:0
hz:10
lru_clock:13432535
executable:/usr/local/redis/bin/./redis-server
config_file:/usr/local/redis/cluster/7002/redis-7002.conf
 
# Clients
connected_clients:1
client_longest_output_list:0
client_biggest_input_buf:0
blocked_clients:0
 
# Memory
used_memory:2625512
used_memory_human:2.50M
used_memory_rss:12177408
used_memory_rss_human:11.61M
used_memory_peak:2625512
used_memory_peak_human:2.50M
used_memory_peak_perc:100.05%
used_memory_overhead:2539496
used_memory_startup:1424432
used_memory_dataset:86016
used_memory_dataset_perc:7.16%
total_system_memory:16806588416
total_system_memory_human:15.65G
used_memory_lua:37888
used_memory_lua_human:37.00K
maxmemory:0
maxmemory_human:0B
maxmemory_policy:noeviction
mem_fragmentation_ratio:4.64
mem_allocator:jemalloc-4.0.3
active_defrag_running:0
lazyfree_pending_objects:0
 
# Persistence
loading:0
rdb_changes_since_last_save:0
rdb_bgsave_in_progress:0
rdb_last_save_time:1607267932
rdb_last_bgsave_status:ok
rdb_last_bgsave_time_sec:0
rdb_current_bgsave_time_sec:-1
rdb_last_cow_size:6467584
aof_enabled:1
aof_rewrite_in_progress:0
aof_rewrite_scheduled:0
aof_last_rewrite_time_sec:-1
aof_current_rewrite_time_sec:-1
aof_last_bgrewrite_status:ok
aof_last_write_status:ok
aof_last_cow_size:0
aof_current_size:0
aof_base_size:0
aof_pending_rewrite:0
aof_buffer_length:0
aof_rewrite_buffer_length:0
aof_pending_bio_fsync:0
aof_delayed_fsync:0
 
# Stats
total_connections_received:4
total_commands_processed:144
instantaneous_ops_per_sec:1
total_net_input_bytes:60448
total_net_output_bytes:21705
instantaneous_input_kbps:0.04
instantaneous_output_kbps:0.00
rejected_connections:0
sync_full:1
sync_partial_ok:0
sync_partial_err:1
expired_keys:0
evicted_keys:0
keyspace_hits:0
keyspace_misses:0
pubsub_channels:0
pubsub_patterns:0
latest_fork_usec:14165
migrate_cached_sockets:0
slave_expires_tracked_keys:0
active_defrag_hits:0
active_defrag_misses:0
active_defrag_key_hits:0
active_defrag_key_misses:0
 
# Replication
role:master
connected_slaves:1
slave0:ip=127.0.0.1,port=7005,state=online,offset=168,lag=0
master_replid:a08d51af5094ee677ac18d73711a898a7aca86f7
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:168
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:168
 
# CPU
used_cpu_sys:0.72
used_cpu_user:0.02
used_cpu_sys_children:0.03
used_cpu_user_children:0.00
 
# Cluster
cluster_enabled:1
 
# Keyspace
127.0.0.1:7002>
 
Step8:插入测试数据
 
[root@Redis-Cluster bin]# ./redis-cli -c -p 7002
 

 Step9:查看值

127.0.0.1:7005> keys *

 Step10:检查节点

[root@Redis-Cluster bin]# ./redis-trib.rb check 127.0.0.1:7004

 

原文地址:https://www.cnblogs.com/networking/p/14094977.html