Linux环境redis哨兵集群模式搭建
本文集群预期建3个节点,
172.22.203.54 部署6003主节点 ;
172.22.203.54 部署6002从节点;
172.22.203.99 部署6001从节点
1 官网下载redis安装包
Download | Redis
本文使用6.2.14版本
redis-6.2.14.tar.gz
2 上传至Linux进行解压
一把是放/opt目录,解压命令:tar -zxvf redis-6.2.14.tar.gz
3 进入redis目录进行安装
cd redis-6.2.14
安装命令:make install PREFIX=/usr/local/redis
PREFIX是安装目录,一般安装在usr/local目录下,会自建redis6001目录
4 在opt下新建redis三个集群节点目录
一般在上redis安装目录的同级目录
新建三个目录,分别是redis6001,redis6002,redis6003
5 在三个集群目录建redis和sentinel配置文件
6001 节点的文件为:redis6001.conf,sentinel6001.conf
6002 节点的文件为:redis6002.conf,sentinel6002.conf
6003 节点的文件为:redis6003.conf,sentinel6003.conf
默认配置文件从解压目录里面拷贝/opt/redis-6.2.14 redis.conf、sentinel.conf
redis.conf配置文件内容样例:
# Redis绑定的网卡 bind 172.17.254.21 # 关闭保护模式 protected-mode no # 以后台方式启动 daemonize yes # 密码 requirepass 123456 databases 16 # maxclients 10000 # 端口 port 6379 # 进程文件 pidfile /var/run/redis_6379.pid # replicaof 172.17.254.21 6379 # 主从同步时访问的密码(主从最好都设置) masterauth 123456 # 以下配置为Redis的默认配置,本文并未对其修改。另外两台Redis从服务器以下与主节点相同,从节点将不再描述 loglevel notice logfile "" always-show-logo no set-proc-title yes proc-title-template "{title} {listen-addr} {server-mode}" tcp-backlog 511 timeout 0 tcp-keepalive 300 stop-writes-on-bgsave-error yes rdbcompression yes rdbchecksum yes dbfilename dump.rdb rdb-del-sync-files no dir ./ replica-serve-stale-data yes replica-read-only yes repl-diskless-sync yes repl-diskless-sync-delay 5 repl-diskless-sync-max-replicas 0 repl-diskless-load disabled repl-disable-tcp-nodelay no replica-priority 100 acllog-max-len 128 lazyfree-lazy-eviction no lazyfree-lazy-expire no lazyfree-lazy-server-del no replica-lazy-flush no lazyfree-lazy-user-del no lazyfree-lazy-user-flush no oom-score-adj no oom-score-adj-values 0 200 800 disable-thp yes appendonly no appendfilename "appendonly.aof" appenddirname "appendonlydir" # appendfsync always appendfsync everysec # appendfsync no no-appendfsync-on-rewrite no auto-aof-rewrite-percentage 100 auto-aof-rewrite-min-size 64mb aof-load-truncated yes aof-use-rdb-preamble yes aof-timestamp-enabled no slowlog-log-slower-than 10000 slowlog-max-len 128 latency-monitor-threshold 0 notify-keyspace-events "" hash-max-listpack-entries 512 hash-max-listpack-value 64 list-max-listpack-size -2 list-compress-depth 0 set-max-intset-entries 512 zset-max-listpack-entries 128 zset-max-listpack-value 64 hll-sparse-max-bytes 3000 stream-node-max-bytes 4096 stream-node-max-entries 100 activerehashing yes client-output-buffer-limit normal 0 0 0 client-output-buffer-limit replica 256mb 64mb 60 client-output-buffer-limit pubsub 32mb 8mb 60 hz 10 dynamic-hz yes aof-rewrite-incremental-fsync yes rdb-save-incremental-fsync yes jemalloc-bg-thread yessentinel.conf 配置文件样例:
protected-mode no daemonize yes # 哨兵端口 port 26379 # 进程文件 pidfile /var/run/redis-sentinel-s1.pid # 目录 dir /work/redis-sentinel-0905/s1 # 哨兵监控主节点名称、地址、推选新节点最小数量 sentinel monitor mymaster 172.17.254.21 6379 2 # 哨兵访问的主节点名称mymaster、密码123456 sentinel auth-pass mymaster 123456 # 哨兵日志文件 logfile "/work/redis-sentinel-0905/s1/sentinel.log" acllog-max-len 128 sentinel down-after-milliseconds mymaster 30000 sentinel parallel-syncs mymaster 1 sentinel failover-timeout mymaster 180000 sentinel deny-scripts-reconfig yes SENTINEL resolve-hostnames no SENTINEL announce-hostnames no SENTINEL master-reboot-down-after-period mymaster 06 不同节点配置文件内容修改
6.1 主节点6003的配置:
redis-6003.conf protected-mode no #关闭保护模式 port 6003 #端口 daemonize yes #以后台方式启 ,启动时不会出现命令窗口 requirepass my-redis-001 # 密码 pidfile /opt/redis6003/redis.pid #进程文件 logfile /opt/redis6003/redis.log # 日志文件 dbfilename dump.rdb #数据存储文件 dir /opt/redis60023 #数据存储目录 #replicaof 172.22.203.54 6003 # 从主节点备份数据的IP地址【主节点不要配,只要配从节点】 masterauth my-redis-001 #主从同步时访问的密码(主从最好都设置),masterauth 主节点名称sentine26003.conf protected-mode no 关闭保护模式 port 26003 daemonize yes 后台运行 pidfile /opt/redis6003/redis-sentinel.pid 进程文件 logfile "/opt/redis6003/sentinel.log" 日志文件 dir /opt/redis6003 # 目录 sentinel monitor memberMaster 172.22.203.54 6003 2 # 监听主节点 sentinel auth-pass memberMaster my-redis-001 sentinel down-after-milliseconds memberMaster 30000 sentinel parallel-syncs memberMaster 1 sentinel failover-timeout memberMaster 1800006.2 从节点6002配置
redis-6002.conf protected-mode no #关闭保护模式 port 6002 #端口 daemonize yes #以后台方式启 ,启动时不会出现命令窗口 requirepass my-redis-001 # 密码 pidfile /opt/redis6002/redis.pid #进程文件 logfile /opt/redis6002/redis.log # 日志文件 dbfilename dump.rdb #数据存储文件 dir /opt/redis6002/ #数据存储目录 replicaof 172.22.203.54 6003 # 从主节点备份数据的IP地址【主节点不要配,只要配从节点】 masterauth my-redis-001 #主从同步时访问的密码(主从最好都设置),masterauth 主节点名称sentine26002.conf protected-mode no 关闭保护模式 port 26002 daemonize yes 后台运行 pidfile /opt/redis6002/redis-sentinel.pid 进程文件 logfile "/opt/redis6002/sentinel.log" 日志文件 dir /opt/redis6002 # 目录 sentinel monitor memberMaster 172.22.203.54 6003 2 # 监听主节点 sentinel auth-pass memberMaster my-redis-001 sentinel down-after-milliseconds memberMaster 30000 sentinel parallel-syncs memberMaster 1 sentinel failover-timeout memberMaster 1800006.3 从节点6001 配置
redis-6001.conf protected-mode no #关闭保护模式 port 6001 #端口 daemonize yes #以后台方式启 ,启动时不会出现命令窗口 requirepass my-redis-001 # 密码 pidfile /opt/redis6001/redis.pid #进程文件 logfile /opt/redis6001/redis.log # 日志文件 dbfilename dump.rdb #数据存储文件 dir /opt/redis6001/ #数据存储目录 replicaof 172.22.203.54 6003 # 从主节点备份数据的IP地址【主节点不要配,只要配从节点】 masterauth my-redis-001 #主从同步时访问的密码(主从最好都设置),masterauth 主节点名称sentinel26001.conf protected-mode no 关闭保护模式 port 26001 daemonize yes 后台运行 pidfile /opt/redis6001/redis-sentinel.pid 进程文件 logfile "/opt/redis6001/sentinel.log" 日志文件 dir /opt/redis6001 # 目录 sentinel monitor memberMaster 172.22.203.54 6003 2 # 监听主节点 sentinel auth-pass memberMaster my-redis-001 sentinel down-after-milliseconds memberMaster 30000 sentinel parallel-syncs memberMaster 1 sentinel failover-timeout memberMaster 1800007 启动各自节点
进入安装的bin目录:
cd /usr/local/redis6001/bin
指定配置文件启动redis【一般主节点先启动】 ./redis-server /opt/redis6001/redis6001.conf
指定配置文件启动sentinel【一般主节点先启动】 ./redis-sentinel /opt/redis6001/sentinel6001.conf
8 启动客户端
8.1 启动本地客户端
进入安装的bin目录:
cd /usr/local/redis6001/bin
启动指定端口: ./nginx-cli -p 6001
输入密码: auth my-redis-001
查询节点分配情况: Info replication
三个节点都开启的情况:
关闭一个从节点的情况:
8.2 启动远程客户端
./redis-cli -h 172.22.2.35 -p 6001