在这里我们搭建的是一个1主3从的redis+3个哨兵集群的环境,由于是在一台物理机上,所有我们用端口区分。
物理机IP:192.168.0.12
主节点master端口:6301从节点slave1端口:6315从节点slave2端口:6316从节点slave3端口:6317哨兵sentinel1端口:26301哨兵sentinel2端口:26302哨兵sentinel3端口:26303一、下载安装$ wget http://download.redis.io/releases/redis-3.0.0.tar.gz$ tar xzf redis-3.0.0.tar.gz$ cd redis-3.0.0$ make二、复制文件cp redis-benchmark redis-cli redis-server redis-sentinel /usr/bin/ #这个倒是很有用,这样就不用再执行时加上./了,而且可以在任何地方执行三、设置内存分配策略(可选,根据服务器的实际情况进行设置)/proc/sys/vm/overcommit_memory可选值:0、1、2。0, 表示内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则,内存申请失败,并把错误返回给应用进程。1, 表示内核允许分配所有的物理内存,而不管当前的内存状态如何。2, 表示内核允许分配超过所有物理内存和交换空间总和的内存四、开启redis端口,修改防火墙配置文件 vi /etc/sysconfig/iptables 加入端口配置 -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 6379 -j ACCEPT 重新加载规则 service iptables restart 五、配置redis.config文件1、主节点master的配置文件redis_master_6301.config:# Redis configuration file example################################## INCLUDES #################################### include /path/to/local.conf# include /path/to/other.conf################################ GENERAL #####################################daemonize yespidfile ./run/redis_slaver1_6315.pidport 6301tcp-backlog 511# bind 192.168.1.100 10.0.0.1# bind 127.0.0.1# unixsocket /tmp/redis.sock# unixsocketperm 700timeout 0tcp-keepalive 0loglevel noticelogfile "./run/logs/log_master_6301.log"databases 16################################ SNAPSHOTTING ################################save ""# save 900 1# save 300 10# save 60 10000stop-writes-on-bgsave-error yesrdbcompression yesrdbchecksum nodbfilename dump_6301.rdbdir ./run/data################################# REPLICATION #################################slave-serve-stale-data yesslave-read-only yesrepl-diskless-sync norepl-diskless-sync-delay 5# repl-ping-slave-period 10# repl-timeout 60repl-disable-tcp-nodelay no# repl-backlog-size 1mb# repl-backlog-ttl 3600slave-priority 100# min-slaves-to-write 3# min-slaves-max-lag 10################################## SECURITY #################################### rename-command CONFIG ""################################### LIMITS ##################################### maxclients 10000# maxmemory <bytes># maxmemory-policy noeviction# maxmemory-samples 5############################## APPEND ONLY MODE ###############################appendonly noappendfilename "appendonly_6301.aof"appendfsync nono-appendfsync-on-rewrite noauto-aof-rewrite-percentage 100auto-aof-rewrite-min-size 64mbaof-load-truncated yes################################ LUA SCRIPTING ###############################lua-time-limit 5000################################ REDIS CLUSTER ################################ cluster-enabled yes# cluster-config-file nodes-6379.conf# cluster-node-timeout 15000# cluster-slave-validity-factor 10# cluster-migration-barrier 1# cluster-require-full-coverage yes################################## SLOW LOG ###################################slowlog-log-slower-than 10000slowlog-max-len 128################################ LATENCY MONITOR ##############################latency-monitor-threshold 0############################# EVENT NOTIFICATION ##############################notify-keyspace-events ""############################### ADVANCED CONFIG ###############################hash-max-ziplist-entries 512hash-max-ziplist-value 64list-max-ziplist-entries 512list-max-ziplist-value 64set-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 32mb 8mb 60hz 10aof-rewrite-incremental-fsync yes2、从节点slave1的配置文件redis_slave_6315.config:# Redis configuration file example################################## INCLUDES #################################### include /path/to/local.conf# include /path/to/other.conf################################ GENERAL #####################################daemonize yespidfile ./run/redis_slaver1_6315.pidport 6315tcp-backlog 511# bind 192.168.1.100 10.0.0.1# bind 127.0.0.1# unixsocket /tmp/redis.sock# unixsocketperm 700timeout 0tcp-keepalive 0loglevel noticelogfile "./run/logs/log_slaver1_6315.log"databases 16################################ SNAPSHOTTING ################################save ""# save 900 1# save 300 10# save 60 10000stop-writes-on-bgsave-error yesrdbcompression yesrdbchecksum nodbfilename dump_6315.rdbdir ./run/data################################# REPLICATION #################################slaveof 192.168.0.12 6301slave-serve-stale-data yesslave-read-only yesrepl-diskless-sync norepl-diskless-sync-delay 5# repl-ping-slave-period 10# repl-timeout 60repl-disable-tcp-nodelay no# repl-backlog-size 1mb# repl-backlog-ttl 3600slave-priority 80# min-slaves-to-write 3# min-slaves-max-lag 10################################## SECURITY #################################### rename-command CONFIG ""################################### LIMITS ##################################### maxclients 10000# maxmemory <bytes># maxmemory-policy noeviction# maxmemory-samples 5############################## APPEND ONLY MODE ###############################appendonly noappendfilename "appendonly_6315.aof"appendfsync nono-appendfsync-on-rewrite noauto-aof-rewrite-percentage 100auto-aof-rewrite-min-size 64mbaof-load-truncated yes################################ LUA SCRIPTING ###############################lua-time-limit 5000################################ REDIS CLUSTER ################################ cluster-enabled yes# cluster-config-file nodes-6379.conf# cluster-node-timeout 15000# cluster-slave-validity-factor 10# cluster-migration-barrier 1# cluster-require-full-coverage yes################################## SLOW LOG ###################################slowlog-log-slower-than 10000slowlog-max-len 128################################ LATENCY MONITOR ##############################latency-monitor-threshold 0############################# EVENT NOTIFICATION ##############################notify-keyspace-events ""############################### ADVANCED CONFIG ###############################hash-max-ziplist-entries 512hash-max-ziplist-value 64list-max-ziplist-entries 512list-max-ziplist-value 64set-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 32mb 8mb 60hz 10aof-rewrite-incremental-fsync yes3、从节点slave2的配置文件redis_slave_6316.config:与上面slave1配置文件需要修改的地方pidfile ./run/redis_slaver1_6316.pidport 6316logfile "./run/logs/log_slaver1_6316.log"dbfilename dump_6316.rdbappendfilename "appendonly_6316.aof"4、从节点slave3的配置文件redis_slave_6317.config:与上面slave1配置文件需要修改的地方pidfile ./run/redis_slaver1_6317.pidport 6317logfile "./run/logs/log_slaver1_6317.log"dbfilename dump_6317.rdbappendfilename "appendonly_6317.aof"5、哨兵sentinel1的配置文件sentinel_26301.config:# Example sentinel.confport 26301# sentinel announce-ip 1.2.3.4dir ./run/tmpsentinel monitor master1 192.168.0.12 6301 2# sentinel auth-pass mymaster MySUPER--secret-0123passw0rd# sentinel down-after-milliseconds <master-name> <milliseconds>sentinel down-after-milliseconds master1 30000sentinel parallel-syncs master1 1sentinel failover-timeout master1 180000# sentinel notification-script mymaster /var/redis/notify.sh# sentinel client-reconfig-script mymaster /var/redis/reconfig.sh# sentinel can-failover master1 yeslogfile "/redis-3.0.0/run/logs/sentinellog_m1_26301.log"6、哨兵sentinel2的配置文件sentinel_26302.config:# Example sentinel.confport 26302# sentinel announce-ip 1.2.3.4dir ./run/tmpsentinel monitor master1 192.168.0.12 6301 2# sentinel auth-pass mymaster MySUPER--secret-0123passw0rd# sentinel down-after-milliseconds <master-name> <milliseconds>sentinel down-after-milliseconds master1 30000sentinel parallel-syncs master1 1sentinel failover-timeout master1 180000# sentinel notification-script mymaster /var/redis/notify.sh# sentinel client-reconfig-script mymaster /var/redis/reconfig.sh# sentinel can-failover master1 yeslogfile "/redis-3.0.0/run/logs/sentinellog_m1_26302.log"7、哨兵sentinel3的配置文件sentinel_26303.config:# Example sentinel.confport 26303# sentinel announce-ip 1.2.3.4dir ./run/tmpsentinel monitor master1 192.168.0.12 6301 2# sentinel auth-pass mymaster MySUPER--secret-0123passw0rd# sentinel down-after-milliseconds <master-name> <milliseconds>sentinel down-after-milliseconds master1 30000sentinel parallel-syncs master1 1sentinel failover-timeout master1 180000# sentinel notification-script mymaster /var/redis/notify.sh# sentinel client-reconfig-script mymaster /var/redis/reconfig.sh# sentinel can-failover master1 yeslogfile "/redis-3.0.0/run/logs/sentinellog_m1_26303.log"六、启动redis和哨兵服务注意:第一次要先启动redis主服务、从服务,然后才能启动哨兵服务1、进入redis安装目录的根目录2、启动redis主节点[root@localhost redis-3.0.0]# redis-server redis_master_6301.config &3、启动redis从节点[root@localhost redis-3.0.0]# redis-server redis_slave_6315.config &[root@localhost redis-3.0.0]# redis-server redis_slave_6316.config &[root@localhost redis-3.0.0]# redis-server redis_slave_6317.config &4、启动哨兵[root@localhost redis-3.0.0]# redis-sentinel sentinel_26301.config &[root@localhost redis-3.0.0]# redis-sentinel sentinel_26302.config &[root@localhost redis-3.0.0]# redis-sentinel sentinel_26303.config &到目前为止整个redis+sentinel的安装搭建环境就算完成七、一些常用命令进入redis的安装目录启动redis-server:./redis-server redis_6305.conf &启动redis-sentinel ./redis-sentinel sentinel_6301.config./redis-server sentinel_6316.conf --sentinel &查看某个端口信息:./redis-cli -p 6301 info./redis-cli -p 6301 info Replication./redis-cli -p 6301 info Sentinel查看某个主机上的信息redis信息./redis-cli -h 10.16.41.52 -p 6316 info./redis-cli -h 10.16.41.52 -p 6316 info Replication./redis-cli -h 10.16.41.52 -p 6316 info Sentinel关闭本机redis服务./redis-cli -p 6379 shutdown关闭远程主机redis服务./redis-cli -h 192.168.9.18 -p 6379 shutdown客户端连接本机./redis-cli -p 6301客户端连接远程机./redis-cli -h 10.16.41.53 -p 6301切换连接ssh app@10.16.41.52使用命令关闭RDB持久化:在客户端执行127.0.0.1:6316> config set save ""