搭建Redis主从集群+哨兵模式架构,实现Redis高可用
这是我参与更文挑战的第15天,活动详情查看: 更文挑战
环境说明
1主 , 2从 , 3哨兵
master(主): 10.28.207.98:6379
slave(从): 10.28.207.103:6380 10.28.207.221:6381
sentinel(哨兵): 10.28.207.98:26379 10.28.207.103:26380 10.28.207.221:26381
复制代码
部署:(注意:以下软件安装时,涉及到服务器ip和端口号,如果没有特殊说明,就修改为该服务器的ip和端口)
部署Redis主节点(10.28.207.98:6379)
首先把redis安装包和tcl安装包拷贝到需要安装的服务器上
- 安装tcl(redis的依赖包)
cd /data/Software
tar -xzvf tcl8.6.1-src.tar.gz
cd tcl8.6.1/unix/
./configure
make
make install
复制代码
- 安装redis
cd /data/Software/
tar -zxvf redis-4.0.10.tar.gz
cd redis-4.0.10/
make
make test
make PREFIX=/data/redis-4.0.10-6379 install
复制代码
- 创建redis日志目录及日志文件
mkdir /data/redis-4.0.10-6379/logs
touch /data/redis-4.0.10-6379/logs/redis.log
复制代码
- 将redis.conf配置文件拷贝到redis安装目录下
cd /data/Software/redis-4.0.10/
cp redis.conf /data/redis-4.0.10-6379/bin/
复制代码
- 修改主redis配置文件
vim /data/redis-4.0.10-6379/bin/redis.conf
5.1、注释掉bind
#bind 127.0.0.1
5.2、修改主redis端口为6379
port 6379
5.3、修改保护模式
protected-mode yes
5.4、修改守护进程模式
daemonize yes
5.5、添加master密码
requirepass dataadmin
5.6、添加slave密码
masterauth dataadmin
5.7、修改redis日志输出目录(该地址为第三步创建的日志文件地址)
logfile "/data/redis-4.0.10-6379/logs/redis.log"
5.8、添加可允许写入时最大的延迟时间
min-slaves-max-lag 10
复制代码
- 启动主redis-6379
cd /data/redis-4.0.10-6379/bin/
./redis-server ./redis.conf
复制代码
- 查看redis启动日志
tail -100f ../logs/redis.log
复制代码
- 登录主redis-6379(注意:redis服务器在第五步配置文件上已经配置了密码,
其他的从服务器也是需要密码登录,密码为dataadmin)
./redis-cli -h 10.28.207.98 -p 6379
auth dataadmin
复制代码
- 测试redis是否可用(get name 可以获取到内容即说明部署成功且可用)
set name data
get name
复制代码
- 关闭redis-6379
./redis-cli -p 6379
auth dataadmin
shutdown
复制代码
分别158和159部署Redis 从节点(10.28.207.103:6380 、10.28.207.221:6381)
-
将10.28.207.98服务器上的主redis目录拷贝到103和221服务器上
-
修改103的从redis配置文件
vim /data/redis-4.0.10-6380/bin/redis.conf
2.1、修改从redis端口为6380
port 6380
2.2、修改从redis日志输出目录
logfile "/data/redis-4.0.10-6380/logs/redis.log"
2.3、添加slaveof从属关系(填写主服务器的ip和端口)
slaveof 10.28.207.98 6379
复制代码
- 修改221的从redis配置文件
vim /data/redis-4.0.10-6381/bin/redis.conf
3.1、修改从redis端口为6381
port 6381
3.2、修改从redis日志输出目录
logfile "/data/redis-4.0.10-6381/logs/redis.log"
3.3、添加slaveof从属关系
slaveof 10.28.207.98 6379
复制代码
- 登录主redis-6379
./redis-cli -h 10.28.207.98 -p 6379
auth dataadmin
从服务器启动和登录跟主服务器差别不大,只需要修改对应的服务器ip和端口即可
复制代码
- 查看主redis信息
info replication
如果看到类似如下信息即说明配置启动成功
connected_slaves:2 #连接的两个从服务器
slave0:ip=10.28.207.103,port=6380,state=online,offset=408296595,lag=1
slave1:ip=10.28.207.221,port=6381,state=online,offset=408296595,lag=1
复制代码
- 测试主redis是否可用
6.1、登录主redis-6379,并set一个phone的键值为123456
./redis-cli -h 10.28.207.98 -p 6379
auth dataadmin
set phone 123456
6.2、登录从redis-6380,并get出phone的键值
./redis-cli -h 10.28.207.103 -p 6380
auth dataadmin
get phone
6.3、登录从redis-6381,并get出phone的键值
./redis-cli -h 10.28.207.221 -p 6381
auth dataadmin
get phone
复制代码
如果在主redis上设置了phone值,然后再从服务器上可以获取值,即表明redis主从部署成功并可用!
部署三个sentinel(哨兵)
- 将sentinel.conf配置文件拷贝到主redis-6379目录下
cd /data/Software/redis-4.0.10/
cp sentinel.conf /data/redis-4.0.10-6379/bin/
复制代码
- 创建sentinel.log日志文件
touch /data/redis-4.0.10-6379/logs/sentinel.log
复制代码
- 修改sentinel(哨兵)配置文件
vim /data/redis-4.0.10-6379/bin/sentinel.conf
复制代码
3.1、清空内容,替换成以下配置
```
#守护进程模式启动(允许后台启动)
daemonize yes
#保护模式(允许连接)
protected-mode no
#指定接收来自于该 IP 地址的请求(需要填写本机真实ip)
#bind 127.0.0.1
#当前Sentinel服务运行的端口
port 26379
# 哨兵监听的主服务器(2表示有两台从服务器)
sentinel monitor mymaster 10.28.207.98 6379 2
# 3s内mymaster无响应,则认为mymaster宕机了
sentinel down-after-milliseconds mymaster 3000
#如果10秒后,mysater仍没启动过来,则启动failover
sentinel failover-timeout mymaster 10000
复制代码
执行故障转移时, 最多有1个从服务器同时对新的主服务器进行同步
sentinel parallel-syncs mymaster 1
#sentinel日志
logfile “/data/redis-4.0.10-6379/logs/sentinel.log”
#master密码(如果redis配置了密码,这里必须要填,否则不能自动切换)
sentinel auth-pass mymaster dataadmin
#自定义配置结束
#end
4. 将10.28.207.98的sentinle.conf配置文件拷贝到103和221服务器该/data/redis-4.0.10-6380/bin目录上
5. 103上创建sentinel.log日志文件
复制代码
touch /data/redis-4.0.10-6380/logs/sentinel.log
6. 修改103上的哨兵配置文件sentinel.conf
复制代码
vim /data/redis-4.0.10-6380/bin/sentinel.conf
6.1、修改sentinel的端口为26380
port 26380
6.2、修改sentinel日志输出目录
logfile “/data/redis-4.0.10-6380/logs/sentinel.log”
7. 221上创建sentinel.log日志文件
复制代码
touch /data/redis-4.0.10-6381/logs/sentinel.log
8. 修改221上的哨兵配置文件sentinel.conf
复制代码
vim /data/redis-4.0.10-6381/bin/sentinel.conf
8.1、修改sentinel的端口为26381
port 26381
8.2、修改sentinel日志输出目录
logfile “/data/redis-4.0.10-6381/logs/sentinel.log”
#### 启动并测试三个sentinel(哨兵)
1. 启动98上的哨兵sentinel-26379
复制代码
cd /TRS/redis-4.0.10-6379/bin/
./redis-server ./sentinel.conf –sentinel
tail -100f ../logs/sentinel.log
2.启动103上的哨兵sentinel-26380
```xshell
cd /TRS/redis-4.0.10-6380/bin/
./redis-server ./sentinel.conf --sentinel
tail -100f ../logs/sentinel.log
复制代码
- 启动221上的哨兵sentinel-26381
cd /TRS/redis-4.0.10-6381/bin/
./redis-server ./sentinel.conf --sentinel
tail -100f ../logs/sentinel.log
复制代码
- 登录98上的哨兵sentinel-26379,查看监测到的其他哨兵
./redis-cli -h 10.28.207.98 -p 26379
sentinel sentinels mymaster
复制代码
如果展现的信息上有显示配置的其余两个哨兵,即表明配置成功