环境准备
Master:192.168.41.128
Slave:192.168.41.129
Slave:192.168.41.130
用户目录规划
用户名 | 安装目录 | 配置文件目录 | 日志文件目录 | sentinel目录 |
redisuser | /opt/redis | /opt/redis/etc | /opt/redis/log | /opt/redis/sentinel |
创建用户
useradd redisuser
passwd redisuser
创建目录
mkdir -p /opt/redis/etc
mkdir -p /opt/redis/log
mkdir -p /opt/redis/sentinel
安装依赖包
yuminstall wget gcc gcc-c++ |
wget -c -P /src http://download.redis.io/releases/redis-4.0.6.tar.gz tar zxvf /src/redis-4.0.6.tar.gz -C /src cd /src/redis-4.0.6 make && make PREFIX=/opt/redis install cp /src/redis-4.0.6/redis.conf sentinel.conf /opt/redis/etc/ chown -R redisuser:redisuser /opt/redis/ |
/opt/redis/etc/redis.conf
daemonize yes pidfile /var/run/redis.pid port 6379 tcp-backlog 511 timeout 0 tcp-keepalive 0 loglevel notice logfile "/opt/redis/log/redis.log" databases 16 save 900 1 save 300 10 save 60 10000 stop-writes-on-bgsave-error yes rdbcompression yes rdbchecksum yes dbfilename dump.rdb dir "/home/redisuser" masterauth "redispwd" 登录redis密码 requirepass "redispwd" 同步时从要获取的密码 slave-serve-stale-data yes slave-read-only yes repl-disable-tcp-nodelay no slave-priority 100 appendonly no appendfilename "appendonly.aof" appendfsync everysec no-appendfsync-on-rewrite no auto-aof-rewrite-percentage 100 auto-aof-rewrite-min-size 64mb lua-time-limit 5000 slowlog-log-slower-than 10000 slowlog-max-len 128 latency-monitor-threshold 0 notify-keyspace-events "" hash-max-ziplist-entries 512 hash-max-ziplist-value 64 list-max-ziplist-entries 512 list-max-ziplist-value 64 set-max-intset-entries 512 zset-max-ziplist-entries 128 zset-max-ziplist-value 64 hll-sparse-max-bytes 3000 activerehashing yes client-output-buffer-limit normal 0 0 0 client-output-buffer-limit slave 256mb 64mb 60 client-output-buffer-limit pubsub 32mb 8mb 60 hz 10 aof-rewrite-incremental-fsync yes slaveof 192.168.41.128 6379 只需在从上配置 slaveof masterip port |
启动
启动命令:/opt/redis/bin/redis-server /opt/redis/etc/redis.conf |
[redisuser@ihstest01 log]$ /opt/redis/bin/redis-cli -a "redispwd" -a 参数表示使用密码登录 127.0.0.1:6379> set name scott OK 127.0.0.1:6379> get name "scott" |
主redis
127.0.0.1:6379> info Replication # Replication role:master connected_slaves:2 slave0:ip=10.37.71.92,port=6379,state=online,offset=30377,lag=1 slave1:ip=10.27.182.91,port=6379,state=online,offset=30240,lag=1 master_repl_offset:30377 repl_backlog_active:1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:2 repl_backlog_histlen:30376 |
127.0.0.1:6379> info Replication # Replication role:slave master_host:10.37.71.93 master_port:6379 master_link_status:up master_last_io_seconds_ago:1 master_sync_in_progress:0 slave_repl_offset:41722 slave_priority:100 slave_read_only:1 connected_slaves:0 master_repl_offset:0 repl_backlog_active:0 repl_backlog_size:1048576 repl_backlog_first_byte_offset:0 repl_backlog_histlen:0 |
Redis主从同步时读写分离的,在slave上不能写入数据,若执行写数据则会报以下错误
127.0.0.1:6379> set id 111 (error) READONLY You can't write against a read only slave. |
在从上查看主写入的数据
127.0.0.1:6379> keys * 1) "name" 127.0.0.1:6379> get name "scott" |
以上所有操作表示主从同步成功。
Sentinel配置
port 26379 daemonize yes dir "/opt/redis/sentinel" logfile "/opt/redis/log/sentinel.log" sentinel monitor mymaster 192.168.41.128 6379 2 sentinel auth-pass mymaster redispwd #登录redis密码,所以在同一组中redis密码要相同 sentinel down-after-milliseconds mymaster 5000 #5秒无响应,说明mymaster组里redis有问题 sentinel failover-timeout mymaster 120000 #120秒还无响应,进行主从切换 根据配置创建相应的目录 ,其中mymaster为组名,即拥有相同组名的redis-sentinel互相切换
以下配置启动后自动生成的,无需配置 sentinel myid 7bf7f9113a42be77fbe3999bbd861649b245d738 # Generated by CONFIG REWRITE sentinel config-epoch mymaster 0 sentinel leader-epoch mymaster 0 sentinel known-slave mymaster 10.37.71.93 6379 sentinel known-slave mymaster 10.37.71.92 6379 sentinel current-epoch 0 |
启动
启动命令:/opt/redis/bin/redis-sentinel /opt/redis/etc/sentinel.conf |
登录主redis执行debug sleep 30,通过info Replication查看主从切换。
常用命令小窍门
通过sentinel查看当前哪台是主redis /opt/redis/bin/redis-cli -p 26379 -a "redispwd"info | grep mymaster 通过sentinel手动主从切换redis /opt/redis/bin/redis-cli -p 26379 -a "redispwd"sentinel failover mymaster
查看最大客户端数 /opt/redis/bin/redis-cli -a "redispwd"config get maxclients 修改最大客户端数 /opt/redis/bin/redis-cli -a "redispwd"config set maxclients 20000 将配置写入redis.conf配置文件中 /opt/redis/bin/redis-cli -a "redispwd"config rewrite
查看最大内存数 /opt/redis/bin/redis-cli -a "redispwd"config get maxmemory 修改最大内存数 /opt/redis/bin/redis-cli -a "redispwd"config set maxmemory 3221225472(单位bytes) 将配置写入redis.conf配置文件中 /opt/redis/bin/redis-cli-a "redispwd" config rewrite |