IP地址 | 系统版本 | redis版本 | |
maste | 192.168.10.11 | Centos 7.8 | redis-7.0.0 |
slave-1 | 192.168.10.12 | ||
slave-2 | 192.168.10.13 |
1. 下载安装包并解压(所有节点)下载链接。这里把解压完的目录称为Redis目录
cd 目录名 #这一步可跳过
wget https://download.redis.io/releases/redis-7.0.0.tar.gz
tar -xf redis-7.0.0.tar.gz
2. 编译安装Redis(所有节点)。这里把 /usr/local/bin 称为执行目录
yum install -y gcc-c++ #安装编译需要的环境
cd Redis目录 #不知道是哪个目录看第1步
make && make install #安装后的执行文件放在/usr/local/bin
3. 生成配置文件(所有节点)
(1)redis.service文件
vim /usr/lib/systemd/system/redis.service
##文件内容##
[Unit]
Description=Redis persistent key-value database
After=network.target
After=network-online.target
Wants=network-online.target
[Service]
ExecStart=执行目录/redis-server Redis目录/redis.conf --supervised systemd #启动命令
ExecStop=/usr/libexec/redis-shutdown #停止命令
Type=forking
User=用户名 #正常情况下是root用户,如果需要用其他用户启动则改为其他用户
Group=组名 #跟上面同理,正常情况下是root
RuntimeDirectory=redis
RuntimeDirectoryMode=0755
LimitNOFILE=65536 #限制文件和进程打开的数量,如不限制则设置为LimitNOFILE=unlimited
PrivateTmp=true
[Install]
WantedBy=multi-user.target
###注意###
文件中的ExecStart需要的参数不知道的话可以用下面的命令查找
whereis redis-server
find / -name redis.conf
(2) redis-shutdown 文件
vim /usr/libexec/redis-shutdown
chmod +x /usr/libexec/redis-shutdown
##文件内容##
#!/bin/bash
#
# Wrapper to close properly redis and sentinel
test x"$REDIS_DEBUG" != x && set -x
REDIS_CLI=/usr/local/bin/redis-cli
# Retrieve service name
SERVICE_NAME="$1"
if [ -z "$SERVICE_NAME" ]; then
SERVICE_NAME=redis
fi
# Get the proper config file based on service name
CONFIG_FILE="Redis目录/$SERVICE_NAME.conf"
# Use awk to retrieve host, port from config file
HOST=`awk '/^[[:blank:]]*bind/ { print $2 }' $CONFIG_FILE | tail -n1`
PORT=`awk '/^[[:blank:]]*port/ { print $2 }' $CONFIG_FILE | tail -n1`
PASS=`awk '/^[[:blank:]]*requirepass/ { print $2 }' $CONFIG_FILE | tail -n1`
SOCK=`awk '/^[[:blank:]]*unixsocket\s/ { print $2 }' $CONFIG_FILE | tail -n1`
# Just in case, use default host, port
HOST=${HOST:-127.0.0.1}
if [ "$SERVICE_NAME" = redis ]; then
PORT=${PORT:-6379}
else
PORT=${PORT:-26739}
fi
# Setup additional parameters
# e.g password-protected redis instances
[ -z "$PASS" ] || ADDITIONAL_PARAMS="-a $PASS"
# shutdown the service properly
if [ -e "$SOCK" ] ; then
$REDIS_CLI -s $SOCK $ADDITIONAL_PARAMS shutdown
else
$REDIS_CLI -h $HOST -p $PORT $ADDITIONAL_PARAMS shutdown
fi
(3)配置完重新加载服务(所有节点)
systemctl daemon-reload
4. 修改配置文件(所有节点)。需要创建数据目录
echo 'vm.overcommit_memory=1' >> /etc/sysctl.conf && sysctl -p #所有节点
mkdir 目录 # 创建数据目录
vim Redis目录/redis.conf # 所有节点都需要修改文件。
systemctl daemon-reload # 修改配置后重新加载服务
(1)master
##找到并修改、增加以下内容
bind 0.0.0.0 #监听IP,有多个IP用逗号隔开
daemonize yes
logfile "/var/log/redis_6379.log"
save 900 1
save 300 10
save 60 10000
dir 数据目录 #自定义数据目录
masterauth 密码
requirepass 密码 # masterauth与requirepass的密码可以设置一样
(2)slave - 1
##找到并修改、增加以下内容
bind 0.0.0.0 #监听IP,有多个IP用逗号隔开
daemonize yes
logfile "/var/log/redis_6379.log"
save 900 1
save 300 10
save 60 10000
dir 数据目录 #自定义数据目录
masterauth 密码
requirepass 密码 # masterauth与requirepass的密码可以设置一样
slaveof master的IP master的端口号 #端口号一般情况下是6379
(3)slave - 2
### slave-2配置同slave-1基本一样
### 具体看上一步
5. 启动服务并测试
(1)服务启停
systemctl start redis
systemctl restart redis
systemctl stop redis
systemctl status redis
(2)查看主从信息
redis-cli -h 本机IP -a 密码 info replication #在master机上操作
redis-cli -h 本机IP -a 密码 info replication #在slave机上操作
(3)测试成功
##在master机上插入数据
redis-cli -h master的IP
auth 密码
set xx xxx
##在slave机上查看数据
redis-cli -h 本机IP -a 密码
get xxx 查看数据
##插入数据失败(正常)
set xxx
部署完成 !!