redis主从复制模式配置
系统环境:Ubuntu
节点个数:3个,一主两从
机器有限,用端口来区分各个节点模拟多台服务器
- 创建节点并启动
1、首先可以先从redis自带的redis.conf文件拷贝过来,我将三个节点的配置文件都放在/usr/local/redis/conf/ms
中;
2、对这些配置文件进行简单的设置(三个端口分别为:6380、6381、6382)
3、启动节点
通过终端启动:./bin/redis-server ./conf/ms/redis6380.conf
ps:这里有个小坑,之前为了方便下载了redis-server的命令,导致下载的命令与配置文件命令版本不匹配,导致启动不成功…https://blog.csdn.net/u014374031/article/details/54587091
配置文件简单模板:
#redis6380.conf配置
include /usr/local/redis/conf/redis.conf
pidfile /var/run/redis_6380.pid
port 6380
dbfilename dump6380.rdb
- 建立各个节点之间的关系
1、查看节点的主从关系:info replication
2、建立关系,在要作为从节点的命令行输入:slaveof localhost 6380
#为建立关系
role:master
connected_slaves:0
master_replid:0079f518a38bda147f9519eafc5772c235df51f9
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:0
second_repl_offset:-1
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0
# 从节点信息
role:slave
master_host:localhost
master_port:6380
master_link_status:up
master_last_io_seconds_ago:8
master_sync_in_progress:0
slave_repl_offset:112
slave_priority:100
slave_read_only:1
connected_slaves:0
master_replid:968d69cc857fad34a46af0fb9938d44b14aff92f
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:112
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:57
repl_backlog_histlen:56
# 主节点信息
role:master
connected_slaves:2
slave0:ip=127.0.0.1,port=6381,state=online,offset=294,lag=1
slave1:ip=127.0.0.1,port=6382,state=online,offset=294,lag=1
master_replid:968d69cc857fad34a46af0fb9938d44b14aff92f
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:294
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:294
redis配置哨兵
将从节点转化为主节点命令:slaveof no one
1、设置哨兵配置文件(sentinel.conf),放在/usr/local/redis
2、运行该配置文件:./bin/redis-sentinel sentinel.conf
3、配置优先级越小越优先,0为没有机会上位:slave-priority 100
ps:replic-priority
替换了slave-priority
#sentinel.conf
#监控节点的ip port
#1代表决策数量
sentinel monitor mymaster 127.0.0.1 6380 1
Redis配置集群
节点个数:三主三从
先创建一个放置配置文件的文件夹:usr/local/redis/conf/cluster
环境需要:ruby、redis.gem
https://blog.csdn.net/henryhu712/article/details/89224467
在Ubuntu安装高版本gem
- 建立配置文件进行配置
include /usr/local/redis/conf/redis.conf
pidfile "/var/run/redis_6380.pid"
port 6380
dbfilename "dump6380.rdb"
cluster-enable yes
cluster-config-file nodes-6380.conf
cluster-node-timeout 15000
- 启动所有节点(cluster)
/bin/redis-server conf/cluster/redis6381.conf
进程状态
root@fangxiong-virtual-machine:/usr/local/redis# ps -ef|grep redis
root 45850 1 0 13:53 ? 00:00:27 ./bin/redis-sentinel *:26379 [sentinel]
root 50665 1 0 16:20 ? 00:00:00 ./bin/redis-server 127.0.0.1:6380 [cluster]
root 50687 1 0 16:23 ? 00:00:00 ./bin/redis-server 127.0.0.1:6381 [cluster]
root 50697 1 0 16:23 ? 00:00:00 ./bin/redis-server 127.0.0.1:6382 [cluster]
root 50702 1 0 16:23 ? 00:00:00 ./bin/redis-server 127.0.0.1:6390 [cluster]
root 50708 1 0 16:23 ? 00:00:00 ./bin/redis-server 127.0.0.1:6391 [cluster]
root 50713 1 0 16:23 ? 00:00:00 ./bin/redis-server 127.0.0.1:6392 [cluster]
- 将节点合体
#先到源码目录:
cd usr/local/redis-5.0.4/src
#合体代码 注意末尾有 --cluster-replicas 1
./redis-cli --cluster create 192.168.225.128:6380 192.168.225.128:6381 192.168.225.128:6382 192.168.225.128:6390 192.168.225.128:6391 192.168.225.128:6392 --cluster-replicas 1
- 查看集群分区信息:
cluster nodes
#节点分配信息
127.0.0.1:6380> cluster nodes
9877eaaf81ec3542702e024d2cf4e2c1af403dfe 192.168.225.128:6382@16382 master - 0 1555580291000 3 connected 10923-16383
c5d32ac74f5c4bb5f0c4f053e80d8b6ea3dbe2a9 192.168.225.128:6381@16381 master - 0 1555580289575 2 connected 5461-10922
c40b254beb302c3e46f83b6fcbb841145301355a 192.168.225.128:6392@16392 slave c5d32ac74f5c4bb5f0c4f053e80d8b6ea3dbe2a9 0 1555580294611 6 connected
c217ddaca4cb308668e1c90ed0c3521d950fd41c 192.168.225.128:6391@16391 slave 860692c99ae238cbd96e8c38cc3bb66392d9832e 0 1555580293603 5 connected
8e2ffa9737d463e59dff9ceec0a1bc4fd067a890 192.168.225.128:6390@16390 slave 9877eaaf81ec3542702e024d2cf4e2c1af403dfe 0 1555580293000 4 connected
860692c99ae238cbd96e8c38cc3bb66392d9832e 192.168.225.128:6380@16380 myself,master - 0 1555580294000 1 connected 0-5460
ps:
- redis5.0之后不使用
redis-trib.rb
命令了 https://blog.csdn.net/hp_123 - 命令无法连接上问
https://blog.csdn.net/Victory_Lei/article/details/82556917#commentBox