本篇笔记记录了在CentOS7环境下安装Redis并配置主从同步,并模拟主节点挂掉后提升从节点为主节点的过程。
工作准备
服务器
主节点:192.168.75.240
从节点1:192.168.75.241
从节点2:192.168.75.242
系统
CentOS7.8
selinux已关闭
firewalld已关闭
Redis
5.0.5
安装Redis,主从节点均需执行本步骤
创建源码保存目录
mkdir -p /usr/local/src
cd /usr/local/src
下载Redis
wget http://download.redis.io/releases/redis-5.0.5.tar.gz
安装编译器
yum -y install gcc gcc-c++
解压
tar -zxvf redis-5.0.5.tar.gz
cd redis-5.0.5
编译,安装
make MALLOC=libc
make PREFIX=/usr/local/redis install
进入安装目录
cd /usr/local/redis
创建相关目录
mkdir -p /usr/local/redis/db
复制安装包下配置文件到安装目录
cp /usr/local/src/redis-5.0.5/redis.conf /usr/local/redis/
修改配置文件
vim /usr/local/redis/redis.conf
找到bind 127.0.0.1
并注释掉,允许外部请求
#bind 127.0.0.1
找到protected-mode yes
,把yes改成no,关闭保护模式,生产环境不要这样做
protected-mode no
找到daemonize no
,把no改成yes,以守护进程方式运行
daemonize yes
找到logfile
,配置log地址
logfile "/var/log/redis.log"
找到dir
,设置数据目录
dir /usr/local/redis/db/
退出编辑
运行Redis
/usr/local/redis/bin/redis-server /usr/local/redis/redis.conf
查看Redis进程
[root@localhost redis]# ps aux | grep "redis"
root 11870 0.0 0.1 144112 1976 ? Ssl 17:48 0:00 /usr/local/redis/bin/redis-server *:6379
root 11875 0.0 0.0 112824 976 pts/0 S+ 17:48 0:00 grep --color=auto redis
查看Redis信息
[root@localhost redis]# /usr/local/redis/bin/redis-cli
127.0.0.1:6379> info
# Server
redis_version:5.0.5
......
配置主从
从节点1和2上编辑配置
vim /usr/local/redis/redis.conf
写入slaveof,声明主节点ip和port
slaveof 192.168.75.240 6379
重启从节点1和2的redis
pkill redis
/usr/local/redis/bin/redis-server /usr/local/redis/redis.conf
验证主从复制
主节点登录redis,输入info replication查看主从信息
[root@localhost redis]# /usr/local/redis/bin/redis-cli
127.0.0.1:6379> info replication
# Replication
role:master
connected_slaves:2
slave0:ip=192.168.75.242,port=6379,state=online,offset=140,lag=1
slave1:ip=192.168.75.241,port=6379,state=online,offset=140,lag=0
master_replid:2f2fcedc8e3c51a26a90de37d5be1648bbb33281
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:1048
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:1048
已经显示了两个从节点信息
测试主从复制
主节点设置一个key-value
127.0.0.1:6379> set domain www.jmsite.cn
OK
从节点1获取value
127.0.0.1:6379> get domain
"www.jmsite.cn"
从节点2获取value
127.0.0.1:6379> get domain
"www.jmsite.cn"
测试当主节点挂掉时,提升从节点为主节点
主节点上执行shutdown,关掉redis
127.0.0.1:6379> shutdown
not connected> exit
[root@localhost redis]#
从节点1执行命令,提升为主节点
127.0.0.1:6379> slaveof no one
OK
127.0.0.1:6379>
从节点2重新设置主节点信息
127.0.0.1:6379> slaveof 192.168.75.241 6379
OK
127.0.0.1:6379>
查看新的主节点主从信息
127.0.0.1:6379> info replication
# Replication
role:master
connected_slaves:1
slave0:ip=192.168.75.242,port=6379,state=online,offset=1342,lag=1
master_replid:7759edf96b6626b2b0539848e9ed2ff884a12af7
master_replid2:2f2fcedc8e3c51a26a90de37d5be1648bbb33281
master_repl_offset:1342
second_repl_offset:1273
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:15
repl_backlog_histlen:1328
127.0.0.1:6379>
从节点1已被提升为主节点,从节点只剩下从节点2
配置完毕!