三台服务器,搭建开发,测试,镜像三套redis集群,通过端口区分
服务器IP:
master 192.168.11.152
slave 192.168.11.153
slave 192.168.11.154
1,配置hosts
vi /etc/hosts
192.168.11.152 redis1
192.168.11.153 redis2
192.168.11.154 redis3
2,安装rpm包
yum -y install gcc
3,redis安装
三个节点都安装
安装文件: redis-5.0.8.tar.gz
解压:tar zxvf redis-5.0.8.tar.gz
重命名文件夹:mv redis-5.0.8 redis
cd redis
make MALLOC=libc
4,修改配置文件
通不过不同的端口区别不同的环境
开发:7001
测试:8001
镜像:9001
分别创建三个redis配置文件:
redis7001.conf
redis7001.conf
redis7001.conf
配置文件内容:
开发master节点:
bind 0.0.0.0 --允许所有IP连接
protected-mode yes
port 7001 --端口号
timeout 300 --连接超时
tcp-keepalive 300
daemonize yes --后台运行
supervised no
pidfile "/var/run/redis_7001.pid" --指定pid文件,需要修改run目录增加写权限
loglevel notice --日志等级,默认notice
logfile "/home/redis/redis/redis_7001.log" --指定log文件
dir "/home/redis/redis" --指定工作目录
replica-serve-stale-data yes
replica-read-only yes --指定slave只读
requirepass "redis" --指定登录密码
masterauth "redis" --指定master节点登录密码
appendonly no
测试、镜像修改相关端口即可。
slave节点:
同master节点参数,新增一个参数:
replicaof 192.168.11.152 7001 --指定master的ip,端口信息
测试、镜像修改相关端口即可。
5,启动redis
master(152):
src/redis-server redis7001.conf
src/redis-server redis8001.conf
src/redis-server redis9001.conf
slave(153,154):
src/redis-server redis7001.conf
src/redis-server redis8001.conf
src/redis-server redis9001.conf
6,检查集群状态
[redis@redis2 redis]$ src/redis-cli -h 192.168.11.152 -p 7001 -a redis info replication
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
# Replication
role:master
connected_slaves:2
slave0:ip=192.168.11.153,port=7001,state=online,offset=479419,lag=0
slave1:ip=192.168.11.154,port=7001,state=online,offset=479419,lag=0
master_replid:bb8395669255fad559847586ec4ea2b6858dcbc3
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:479419
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:479419
7,配置哨兵sentinel
配置文件:sentinel.conf
daemonize yes --后台运行
bind 192.168.11.165 --本机IP
port 26379 --sentinel端口号
pidfile "/var/run/redis-sentinel.pid" --指定pid文件
logfile "/home/redis/redis/sentinel.log" --指定log文件
dir "/home/redis/redis" --指定工作目录
sentinel deny-scripts-reconfig yes
sentinel monitor devmaster 192.168.11.152 7001 2
sentinel monitor testmaster 192.168.11.152 8001 2
sentinel monitor mirrormaster 192.168.11.152 9001 2
sentinel down-after-milliseconds devmaster 10000
sentinel down-after-milliseconds testmaster 10000
sentinel down-after-milliseconds mirrormaster 10000
sentinel failover-timeout devmaster 15000
sentinel failover-timeout testmaster 15000
sentinel failover-timeout mirrormaster 15000
sentinel auth-pass devmaster redis
sentinel auth-pass testmaster redis
sentinel auth-pass mirrormaster redis
三个节点都配置,bind参数修改为本机IP即可。
8,启动sentinel(152,153,154)
src/redis-sentinel sentinel.conf
9,登录任意节点查看sentinel状态
[redis@redis2 redis]$ src/redis-cli -h 192.168.11.153 -p 26379 info sentinel
# Sentinel
sentinel_masters:3
sentinel_tilt:0
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
sentinel_simulate_failure_flags:0
master0:name=testmaster,status=ok,address=192.168.11.152:8001,slaves=2,sentinels=3
master1:name=mirrormaster,status=ok,address=192.168.11.152:9001,slaves=2,sentinels=3
master2:name=devmaster,status=ok,address=192.168.11.152:7001,slaves=2,sentinels=3
集群配置完成。
附:
配置redis以服务模式启动:
cp /home/redis/redis/utils/redis_init_script /etc/init.d/redis
vi /etc/init.d/redis
#!/bin/sh
#
# Simple Redis init.d script conceived to work on Linux systems
# as it does use of the /proc filesystem.
### BEGIN INIT INFO
# Provides: redis_6379
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Redis data structure server
# Description: Redis data structure server. See https://redis.io
### END INIT INFO
REDISPORT=6379
EXEC=/home/redis/redis/bin/redis-server
CLIEXEC=/home/redis/redis/bin/redis-cli
PIDFILE=/var/run/redis_${REDISPORT}.pid ##需要配置run目录权限
CONF="/home/redis/redis/redis.conf"
case "$1" in
start)
if [ -f $PIDFILE ]
then
echo "$PIDFILE exists, process is already running or crashed"
else
echo "Starting Redis server..."
$EXEC $CONF
fi
;;
stop)
if [ ! -f $PIDFILE ]
then
echo "$PIDFILE does not exist, process is not running"
else
PID=$(cat $PIDFILE)
echo "Stopping ..."
$CLIEXEC -p $REDISPORT -a redis shutdown ##如果启用了密码验证则需要-a指定密码,否则一直Waiting for Redis to shutdown ...
while [ -x /proc/${PID} ]
do
echo "Waiting for Redis to shutdown ..."
sleep 1
done
echo "Redis stopped"
fi
;;
*)
echo "Please use start or stop as first argument"
;;
esac
配置完成后则可用 service redis start/stop 启停
最后修改时间:2020-10-28 09:46:48
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




