redis哨兵搭建
环境介绍
服务器IP | redis存放路径安装路径 | 主从 |
---|---|---|
172.27.0.6 | /usr/local/redis/redis | 主节点 |
172.27.0.12 | /usr/local/redis/redis | 从节点 |
172.27.0.14 | /usr/local/redis/redis | 从节点 |
安装redis(三台服务器执行)
-
安装redis需要用到的依赖
yum -y install wget gcc gcc-c++
-
下载redis源码包(本文档用的是5.0.5版本。可以根据自己的需要选择对应的版本)
cd /usr/local/
mkdir redis
cd redis
wget http://download.redis.io/releases/redis-5.0.5.tar.gz
- 安装redis依次执行以下命令
cd /usr/local/redis/
tar xf redis-5.0.5.tar.gz
mv redis-5.0.5 redis
cd redis
make
cd src/
make install
部署redis主从
- 修改主节点的redis配置文件内对应的配置项(把配置文件的bind配置项全部注释掉)
protected-mode yes
port 6379
tcp-backlog 511
timeout 0
tcp-keepalive 300
daemonize yes
supervised no
pidfile "/var/run/redis_6379.pid"
loglevel notice
logfile "/usr/local/redis/redis/redis.log"
databases 16
always-show-logo yes
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename "dump.rdb"
dir "/usr/local/redis/redis/src"
masterauth "Pactera@sln_idsc8888"
replica-serve-stale-data yes
replica-read-only yes
repl-diskless-sync no
repl-diskless-sync-delay 5
repl-disable-tcp-nodelay no
replica-priority 100
requirepass "Pactera@sln_idsc8888"
lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
replica-lazy-flush no
appendonly no
appendfilename "appendonly.aof"
appendfsync everysec
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
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-size -2
list-compress-depth 0
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-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
- 修改两台从节点的配置文件
protected-mode yes
port 6379 #redis端口
tcp-backlog 511
timeout 0
tcp-keepalive 300
daemonize yes
supervised no
pidfile "/var/run/redis_6379.pid" #redis的pid目录
loglevel notice
logfile "/usr/local/redis/redis/redis.log" #redis的日志路径
databases 16
always-show-logo yes
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename "dump.rdb"
dir "/usr/local/redis/redis/src" #redis的文件存放路径
masterauth "Pactera@sln_idsc8888" #主节点redis密码
slaveof 172.27.0.6 6379 #主节点的redis的IP和端口号
replica-serve-stale-data yes
replica-read-only yes
repl-diskless-sync no
repl-diskless-sync-delay 5
repl-disable-tcp-nodelay no
replica-priority 100
requirepass "Pactera@sln_idsc8888" #redis密码
lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
replica-lazy-flush no
appendonly no
appendfilename "appendonly.aof"
appendfsync everysec
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
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-size -2
list-compress-depth 0
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-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
依次启动主从节点的redis
cd /usr/local/redis/redis/src
./redis-server ../redis.conf
- 可以查看集群节点状态
cd /usr/local/redis/redis/src
./redis-cli #进入redis交互页面
auth Pactera@sln_idsc8888 #验证密码,相当于登录
info replication #查看集群状态
从节点状态为
# Replication
role:slave
master_host:172.27.0.12
master_port:6379
master_link_status:up
master_last_io_seconds_ago:0
master_sync_in_progress:0
slave_repl_offset:1564382
slave_priority:100
slave_read_only:1
connected_slaves:0
master_replid:08625e5978c2d46d811693357f02a0a79f83f2cd
master_replid2:01ce73d6819d27635317afc0edcc65de51d4213f
master_repl_offset:1564382
second_repl_offset:57711
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:515807
repl_backlog_histlen:1048576
主节点状态为:
# Replication
role:master
connected_slaves:2
slave0:ip=172.27.0.6,port=6379,state=online,offset=1574975,lag=0
slave1:ip=172.27.0.14,port=6379,state=online,offset=1574839,lag=1
master_replid:08625e5978c2d46d811693357f02a0a79f83f2cd
master_replid2:01ce73d6819d27635317afc0edcc65de51d4213f
master_repl_offset:1575112
second_repl_offset:57711
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:526537
repl_backlog_histlen:1048576
至此redis主从节搭建完成,可以开始启用哨兵服务
部署哨兵服务所有节点配置
- 修改哨兵配置文件
protected-mode no
port 26379 #哨兵服务使用的端口
daemonize yes
pidfile "/usr/local/redis/redis/sentinel/run/redis-sentinel.pid" #哨兵服务的PID文件路径
logfile "/usr/local/redis/redis/sentinel/log/sentinel.log" #哨兵服务的日志存放路径
dir "/usr/local/redis/redis/sentinel/data" #哨兵服务的文件存放路劲
sentinel myid 48945806fd5919282819b90179793b6b7955cf7d #myid每台服务器都有不同的ID不可直接修改,启动后会自己生成,没启动的情况下配置文件内找不到配置项
sentinel deny-scripts-reconfig yes
sentinel monitor mymaster 172.27.0.6 6379 2 #主节点redis的IP和端口,2表示当集群中的两个或两个以上的哨兵认为主节点的redis不可用的情况下才会选举新的主节点
sentinel auth-pass mymaster Pactera@sln_idsc8888 #主节点redis的密码
- 启动所有节点的哨兵
cd /usr/local/redis/redis/src/
./redis-sentinel ../sentinel.conf
- 可以查看sentinel的日志是否有报错,如果无报错则说明启动成功可以进行测试,测试时把当前主从的主节点kill掉,然后查看是否会选举新从节点为主节点,如果可以切换,则说明哨兵搭建成功。切换大概有一分钟左右延时
扫描二维码,在手机上阅读