Linux下部署Redis集群 - 一主二从三哨兵模式
三台服务器redis一主二从三哨兵模式搭建
最近使用到了redis集群部署,使用一主二从三哨兵集群部署redis,将自己部署的过程中的使用心得分享给大家,希望大家以后部署的过程减少一些坑。
服务器准备
3台服务器 ,确定主redis和从redis。
182.168.40.142 (master节点)
182.168.40.141 (slave1节点)
182.168.40.140 (slave2节点)
服务器分别需要开通6379、6380、6381和26379、26380、26381端口或者关闭防火墙
一、 部署redis(基础部署,主从部署先要完成基础部署,该部分操作需要在所有节点执行)
1.下载
wget http://download.redis.io/releases/redis-6.2.6.tar.gz
2. 解压
tar -zxvf redis-6.2.6.tar.gz
mv redis-6.2.6 /usr/local/
3.编译
进入目录命令 cd /usr/local/redis-6.2.6
编译命令 make
4. 安装
进入src命令 cd /usr/local/redis-6.2.6/src/
安装命令 make install
5. 重点:
5.1 新建 bin 和 etc 文件夹5.2 装载配置文件在etc进入目录命令 : cd /usr/local/redis-6.2.6/
创建etc文件夹: mkdir etc
创建bin文件夹: mkdir bin
创建logs文件夹: mkdir logs
5.3 在bin下装载如下文件复制文件命令 cp redis.conf /usr/local/redis-6.2.6/etc
将mkreleasehdr.sh、redis-benchmark、redis-check-aof、redis-check-rdb、redis-cli、redis-server、redis-sentinel文件复制到 bin 文件夹
5.4 改下redis.conf配置cd src/
cp mkreleasehdr.sh redis-benchmark redis-check-aof redis-check-rdb redis-cli redis-server redis-sentinel /usr/local/redis-6.2.6/bin/
修改后的配置如下
5.5 启动redis命令bind:0.0.0.0
protected-mode:no
daemonize:yes
requirepass:123456(密码自己设置)
logfile "/usr/local/redis-6.2.6/logs/redis-6379.log"
dbfilename dump-6379.rdb
切换到bin目录,使用下面命令启动redis
5.6 客户端关闭命令:cd /usr/local/redis-6.2.6/bin
./redis-server /usr/local/redis-6.2.6/etc/redis.conf
方式一:redis-cli -p 端口号shutdown
方式二:首先ps -ef | grep redis 获取进程号 然后kill -9 进程号
二、redis主从配置
2.1 主机redis配置文件
bind : 0.0.0.0 表示允许所有远程访问
port:端口号 (默认就好)
protected-mode:no (关闭保护模式,可以外部访问)
daemonize:yes (设置为后台启动)
pidfile /var/run/redis_6379.pid
logfile “/usr/local/redis-6.2.6/logs/redis_6379.log”
dbfilename dump_6378.rdb
requirepass: redis的连接密码
masterauth: slave 服务连接 master 的密码(跟redis密码一致)
修改配置文件后需要重启redis
2.2 从redis配置文件
bind : 0.0.0.0 表示允许所有远程访问
port:6380
protected-mode:no (关闭保护模式,可以外部访问)
daemonize:yes (设置为后台启动)
pidfile /var/run/redis_6380.pid
logfile “/usr/local/redis-6.2.6/logs/redis_6380.log”
dbfilename dump_6380.rdb
requirepass: redis的连接密码
replicaof: 主redis服务器ip 主redis端口(配置为master的从)
masterauth: slave 服务连接 master 的密码(跟redis密码一致)
修改配置文件后需要重启redis
==================================================
bind : 0.0.0.0 表示允许所有远程访问
port:6381
protected-mode:no (关闭保护模式,可以外部访问)
daemonize:yes (设置为后台启动)
pidfile /var/run/redis_6381.pid
logfile “/usr/local/redis-6.2.6/logs/redis_6381.log”
dbfilename dump_6381.rdb
requirepass: redis的连接密码
replicaof: 主redis服务器ip 主redis端口(配置为master的从)
masterauth: slave 服务连接 master 的密码(跟redis密码一致)
修改配置文件后需要重启redis
2.3 主从测试
1.切换目录
cd /usr/local/redis-6.2.6/bin/
2.连接客户端
./redis-cli -h ip地址 -p端口号
3.密码校验
auth redis密码
4.主从配置信息
info replication
有如下信息代表主从是ok的
Role:代表当前服务器的角色 master代表主redis,slave代表从redis
connected_slaves 后面的数字代表从redis的数量
slave:代表从redis的地址,端口等信息
在 master 上添加数据,看 slave 上是否会同步数据
三、哨兵配置
3.1 主机sentinel配置文件
port 26379
daemonize yes(后台启动)
sentinel monitor mymaster 192.169.40.142 6379 2(主redis的ip 主redis的port 从节点个数)
sentinel auth-pass mymaster 123456(redis的密码)
pidfile "/var/run/redis-sentinel_26379.pid"
logfile "/usr/local/redis-6.2.6/logs/sentinel_26379.log"
3.2 从机sentinel配置文件
port 26380
daemonize yes(后台启动)
sentinel monitor mymaster 192.169.40.142 6379 2(主redis的ip 主redis的port 从节点个数)
sentinel auth-pass mymaster 123456(redis的密码)
pidfile "/var/run/redis-sentinel_26380.pid"
logfile "/usr/local/redis-6.2.6/logs/sentinel_26380.log"
==================================================
port 26381
daemonize yes(后台启动)
sentinel monitor mymaster 192.169.40.142 6379 2(主redis的ip 主redis的port 从节点个数)
sentinel auth-pass mymaster 123456(redis的密码)
pidfile "/var/run/redis-sentinel_26381.pid"
logfile "/usr/local/redis-6.2.6/logs/sentinel_26381.log"
3.3 验证哨兵模式
1.分别在三台机器上,进入 redis 解压目录,依次执行2. 连接任意 sentinel 节点cd /usr/local/bin/
./redis-sentinel /usr/local/etc/sentinel.conf
3. redis 命令行上,执行 info sentinel 命令cd /usr/local/redis-6.2.6/bin
./redis-cli -h ip -p port
如: ./redis-cli -h 192.168.40.142 -p 26379
验证 sentinel 状态为ok就是正确的,有如下类似信息,则配置完成
4. 测试哨兵模式
停止主服务器6379,测试主服务器的重新选举,会另外选一个从服务器作为主服务器
重新启动6379,不会把6379切换成主服务器,而是作为了从服务器