redis-1主2从3哨兵模式搭建
1.架构
主机IP | 角色 | |
---|---|---|
192.168.85.136 | master | |
192.168.85.137 | salve | |
192.168.85.138 | salve |
2.环境准备
安装包 | 依赖 |
---|---|
redis-5.0.4.tar.gz | gcc-c++依赖 |
3.基础安装
各节点安装流程
# 解压 tar -xvf [包名] # 编译安装到指定目录 make install PREFIX=/usr/local/redis #创建日志文件夹 mkdir /usr/local/redis/logs #创建配置文件目录 mkdir /usr/local/redis/conf 复制配置文件到软件安装位置 cp /usr/local/redis-5.0.4/redis.conf /usr/local/redis/conf cp /usr/local/redis-5.0.4/sentinel.conf /usr/local/redis/conf
4.主从搭建
4.1 master配置
redis.conf配置
# 所有ip均可访问 bind 0.0.0.0 # 启动端口6379 port 6379 # redis进程是否以守护进程的方式运行,yes为是,no为否(不以守护进程的方式运行会占用一个终端) protected-mode no # 是否开启保护模式,默认开启。要是配置里没有指定bind和密码,开启该参数后,redis只会本地进行访问,拒绝外部访问。要是开启了密码和bind,可以开启。否则最好关闭设置为no daemonize yes # 日志 logfile /usr/local/redis/logs/redis.log # 设置redis连接密码,如果配置了连接密码,客户端在连接redis是需要通过auth <password>命令提供密码,默认关闭 requirepass 123456 # 当master设置了密码保护时,slave服务连接master的密码(主从配置时,必须要设置此密码) masterauth 123456
4.2 salve配置
redis.conf配置
注意:老版本使用slaveof指定主机的IP和端口,新版本使用replicaof指定主机的IP和端口 注意:由于搭建的集群需要自动容灾切换,主数据库可能会变成从数据库,所以三台机器上都需要同时设置 requirepass 和 masterauth 配置项 bind 0.0.0.0 port 6379 protected-mode no daemonize yes logfile ./redis.log # 当master设置了密码保护时,slave服务连接master的密码(主从配置时,必须要设置此密码) requirepass 123456 masterauth 123456 # 指定当本机为slave服务,设置master服务的IP地址及端口,在redis启动的时候会自动跟master进行数据同步,所以两台从机同样配置。 slaveof 192.168.85.136 6379
5.哨兵配置
5.1 所有节点配置
sentinel.conf配置
哨兵模式需要修改sentinel.conf文件,三台服务器均为此配置 # 端口默认为26379。 port 26379 # 关闭保护模式,可以外部访问。 protected-mode no # 设置为后台启动。 daemonize yes # 日志文件。 logfile /usr/local/redis/logs/sentinel.log # 指定主机IP地址和端口(三台配置均为指定主机ip),并且指定当有2台哨兵认为主机宕机,则对主机进行容灾切换。mymaster:设置master名字,必须在其它有用到该名字的命令之前设置 sentinel monitor mymaster 192.168.85.136 6379 2 # 当在Redis实例中开启了requirepass,这里就需要提供密码。 sentinel auth-pass mymaster 123456 # 这里设置了主机多少秒无响应,则认为挂了。此处3秒 sentinel down-after-milliseconds mymaster 3000 # 主备切换时,最多有多少个slave同时对新的master进行同步,这里设置为默认的1。 snetinel parallel-syncs mymaster 1 # 故障转移的超时时间,这里设置为三分钟。 sentinel failover-timeout mymaster 180000
6.启动
6.1 启动redis
命令
/usr/local/redis/bin/redis-server /usr/local/redis/conf/redis.conf
6.2 启动sentinel
命令
/usr/local/redis/bin/redis-sentinel /usr/local/redis/conf/sentinel.conf
7.启动状态查看
7.1 master节点
命令
[root@hadoop01 bin]# ./redis-cli -h 192.168.85.136 192.168.85.136:6379> auth 123456 OK 192.168.85.136:6379> info replication # Replication role:master connected_slaves:2 slave0:ip=192.168.85.137,port=6379,state=online,offset=1302,lag=1 slave1:ip=192.168.85.138,port=6379,state=online,offset=1302,lag=0 master_replid:71a5ac956722b35494785cfe74c9fef9745d7198 master_replid2:0000000000000000000000000000000000000000 master_repl_offset:1302 second_repl_offset:-1 repl_backlog_active:1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:1 repl_backlog_histlen:1302
7.2 salve节点
命令
[root@hadoop01 bin]# ./redis-cli -h 192.168.85.137 192.168.85.137:6379> auth 123456 OK 192.168.85.137:6379> info replication # Replication role:slave master_host:192.168.85.136 master_port:6379 master_link_status:up master_last_io_seconds_ago:1 master_sync_in_progress:0 slave_repl_offset:1218 slave_priority:100 slave_read_only:1 connected_slaves:0 master_replid:71a5ac956722b35494785cfe74c9fef9745d7198 master_replid2:0000000000000000000000000000000000000000 master_repl_offset:1218 second_repl_offset:-1 repl_backlog_active:1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:1 repl_backlog_histlen:1218
8.效果验证
8.1 主写从读
步骤
主节点
192.168.85.136:6379> set test test OK
从节点
192.168.85.137:6379> keys * 1) "test"
8.2 主挂从起
步骤
主节点手动下线
192.168.85.136:6379> shutdown not connected>
新的主机被选举出,则表示成功
9.其他
9.1 springboot配置
配置文件application.yarm
redis: #单机配置 #host: 192.168.43.188 #port: 6379 timeout: 6000 password: 123456 #哨兵增加的配置 sentinel: nodes: 192.168.130.1:26379,192.168.130.2:26379,192.168.130.3:26379 master: mymaster #lettuce连接池配置 lettuce: pool: max-active: 100 # 连接池最大连接数(使用负值表示没有限制) max-idle: 100 # 连接池中的最大空闲连接 min-idle: 50 # 连接池中的最小空闲连接 max-wait: 6000 # 连接池最大阻塞等待时间(使用负值表示没有限制