redis主从
一主两从的方案
1.环境准备,准备一主两从的redis架构
redis-6379.conf
port 6379
daemonize yes
logfile "6379.log"
dbfilename "dump-6379.rdb"
dir "/opt/redis/6379/"
redis-6380.conf
port 6380
daemonize yes
logfile "6380.log"
dbfilename "dump-6380.rdb"
dir "/opt/redis/6380/"
slaveof 127.0.0.1 6379
redis-6381.conf
port 6381
daemonize yes
logfile "6381.log"
dbfilename "dump-6381.rdb"
dir "/opt/redis/6381/"
slaveof 127.0.0.1 6379
2.准备三个数据文件夹
mkdir -p /opt/redis/{6379,6380,6381}
3。分别启动三个数据库
[root@master sbredis]# redis-server redis-6379.conf
[root@master sbredis]# redis-server redis-6380.conf
[root@master sbredis]# redis-server redis-6381.conf
4.检测主从状态
redis-cli -p 6379 info replication
redis-cli -p 6380 info replication
redis-cli -p 6381 info replication
5.准备三个redis哨兵,进行检测主从状态
准备三个哨兵的配置文件
redis-26379.conf
port 26379
dir /opt/redis/26379/
logfile "26379.log"
daemonize yes
sentinel monitor s17ms 127.0.0.1 6379 2
sentinel down-after-milliseconds s17ms 30000
sentinel parallel-syncs s17ms 1
sentinel failover-timeout s17ms 180000
redis-26380.conf
redis-26381.conf
#三个配置文件,仅仅是端口的不同,通过命令快速生成配置文件
[root@master sbredis]# sed "s/26379/26380/g" redis-26379.conf > redis-26380.conf
[root@master sbredis]# sed "s/26379/26381/g" redis-26379.conf > redis-26381.conf
6.分别启动三个哨兵
[root@master sbredis]# redis-sentinel redis-26379.conf
[root@master sbredis]# redis-sentinel redis-26380.conf
[root@master sbredis]# redis-sentinel redis-26381.conf
7.检测哨兵,主从状态
redis-cli -p 26379 info sentinel
#看到如下信息,就和我一样了
[root@master sbredis]# redis-cli -p 26379 info sentinel
# Sentinel
sentinel_masters:1
sentinel_tilt:0
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
sentinel_simulate_failure_flags:0
master0:name=s17ms,status=ok,address=127.0.0.1:6379,slaves=2,sentinels=3
8.测验,干掉master redis,是否自动切换
9.再次启动redis 6379 查看它是否加入 主从集群
redis-cluster搭建
1.准备6个数据库节点,也就是6个redis实例,也就是6个配置文件
配置文件如下
redis-7000.conf redis-7002.conf redis-7004.conf
redis-7001.conf redis-7003.conf redis-7005.conf
配置文件,内容如下
port 7000
daemonize yes
dir "/opt/data"
logfile "7000.log"
dbfilename "dump-7000.rdb"
cluster-enabled yes
cluster-config-file nodes-7000.conf
cluster-require-full-coverage no
分别准备6个redis节点,通过sed命令快速创建,仅仅是端口的区分
[root@master clusterredis]# sed "s/7000/7001/g" redis-7000.conf > redis-7001.conf
[root@master clusterredis]#
[root@master clusterredis]# sed "s/7000/7002/g" redis-7000.conf > redis-7002.conf
[root@master clusterredis]# sed "s/7000/7003/g" redis-7000.conf > redis-7003.conf
[root@master clusterredis]#
[root@master clusterredis]#
[root@master clusterredis]#
[root@master clusterredis]# sed "s/7000/7004/g" redis-7000.conf > redis-7004.conf
[root@master clusterredis]# sed "s/7000/7005/g" redis-7000.conf > redis-7005.conf
2.分别启动6个数据库实例
root@master clusterredis]# redis-server redis-7000.conf
[root@master clusterredis]# redis-server redis-7001.conf
[root@master clusterredis]# redis-server redis-7002.conf
[root@master clusterredis]# redis-server redis-7003.conf
[root@master clusterredis]# redis-server redis-7004.conf
[root@master clusterredis]# redis-server redis-7005.conf
3.开始分配redis数据库的槽位, 通过ruby脚本,自动化分配槽位
4.配置ruby的解释器环境
1.下载源码
wget https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.1.tar.gz
2.释放编译文件
#安装ruby
tar -xvf ruby-2.3.1.tar.gz
./configure --prefix=/opt/ruby/
make && make install
3.配置ruby的环境变量
/opt/ruby/bin
添加到PATH环境变量下
4.下载ruby操作redis的模块
wget http://rubygems.org/downloads/redis-3.3.0.gem
5.通过ruby的包管理工具安装它
gem install -l redis-3.3.0.gem
6.通过ruby的脚本,自动化分配redis虚拟槽位,开启集群功能
redis-trib.rb的脚本绝对路径(通过find去找) 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
7.验证集群是否开启
redis-cli -p 7000 cluster info
8.登陆redis集群,写入数据,查看数据流向
数据会在集群中,在节点间重定向
9.redis集群到此完毕