环境准备:

主机名 外网IP 内网IP 角色 应用
db01 10.0.0.51 172.16.1.51 master slave1 Redis7.2
db02 10.0.0.52 172.16.1.52 slave2 slave3 Redis7.2
db03 10.0.0.53 172.16.1.53 slave4 slave5 Redis7.2

下载Resis7.2(三台服务器全部执行)

db02和db03注意bind修改

# 1.下载
[root@db01 ~]# wget https://github.com/redis/redis/archive/7.2.0.tar.gz
# 2.创建目录
[root@db01 ~]# mkdir /app
# 3.解压
[root@db01 ~]# tar xf redis-7.2.0.tar.gz -C /app/
# 4.编译安装
[root@db01 ~]# cd /app/redis-7.2.0/
[root@db01 redis-7.2.0]# make && make install
# 5.软链接
[root@db01 redis-7.2.0]# ln -s /app/redis-7.2.0 /app/redis
# 6.修改redis配置
[root@db01 app]# vim /app/redis/redis.conf
daemonize yes
bind 127.0.0.1 172.16.1.51
# 7.开启内存优化
[root@db01 app]# vim /etc/sysctl.conf
vm.overcommit_memory = 1
# 8.设置密码
[root@db01 app]# vim /app/redis/redis.conf
requirepass 123
#9.启动服务
[root@db01 app]# redis-server /app/redis/redis.conf

systemd服务管理(三台服务器全部执行)

# 1.拷贝一个脚本
[root@db01 app]# cp /usr/lib/systemd/system/{sshd,redis}.service
# 2.修改启动脚本
[root@db01 app]# vim /usr/lib/systemd/system/redis.service
[Unit]
Description=Redis
After=network.target
[Service]
Type=forking
ExecStart=/app/redis/src/redis-server /app/redis/redis.conf
[Install]
WantedBy=multi-user.target
# 3.重新加载脚本
[root@db01 app]# systemctl daemon-reload
# 4.启动并加入开机自启
[root@db01 app]# systemctl enable redis --now
#端口查看
[root@db01 redis-7.2.0]# netstat -lntup
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 172.16.1.51:6379        0.0.0.0:*               LISTEN      13160/redis-server  
tcp        0      0 127.0.0.1:6379          0.0.0.0:*               LISTEN      13160/redis-server  
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      5984/rpcbind        
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      6923/sshd           
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      7058/master         
tcp6       0      0 :::111                  :::*                    LISTEN      5984/rpcbind        
tcp6       0      0 :::22                   :::*                    LISTEN      6923/sshd           
tcp6       0      0 ::1:25                  :::*                    LISTEN      7058/master         
udp        0      0 0.0.0.0:1022            0.0.0.0:*                           5984/rpcbind        
udp        0      0 0.0.0.0:111             0.0.0.0:*                           5984/rpcbind        
udp6       0      0 :::1022                 :::*                                5984/rpcbind        
udp6       0      0 :::111  

创建多实例 (三台服务器全部执行)

#创建多实例目录
[root@db01 ~]# mkdir /redis-slave
#复制redis配置文件
[root@db01 ~]# cp /app/redis/redis.conf /redis-slave/
#db01修改配置文件
[root@db01 ~]# vim /redis-slave/redis.conf
port 6380
daemonize yes
pidfile /redis-slave/redis-6380.pid
logfile /redis-slave/redis-6380.log
dir /redis-slave
dbfilename dump.rdb
protected-mode no
requirepass 123
bind 127.0.0.1 172.16.1.51
#//db02和db03重复db01多示例创建即可 

多实例systemd服务管理(三台服务器全部执行)

# 1.拷贝一个脚本
[root@db01 app]# cp /usr/lib/systemd/system/{redis,redis-slave}.service
# 2.修改启动脚本
[root@db01 app]# vim /usr/lib/systemd/system/redis-slave.service
[Unit]
Description=Redis
After=network.target
[Service]
Type=forking
ExecStart=/app/redis/src/redis-server /redis-slave/redis.conf
[Install]
WantedBy=multi-user.target
# 3.重新加载脚本
[root@db01 app]# systemctl daemon-reload
# 4.启动并加入开机自启
[root@db01 app]# systemctl enable redis-slave --now
#5.端口检测
[root@db01 ~]# netstat -lntup
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 127.0.0.1:6379          0.0.0.0:*               LISTEN      13586/redis-server  
tcp        0      0 172.16.1.52:6380        0.0.0.0:*               LISTEN      16507/redis-server  
tcp        0      0 127.0.0.1:6380          0.0.0.0:*               LISTEN      16507/redis-server  
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      5996/rpcbind        
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      6915/sshd           
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      7010/master         
tcp6       0      0 ::1:6379                :::*                    LISTEN      13586/redis-server  
tcp6       0      0 :::111                  :::*                    LISTEN      5996/rpcbind        
tcp6       0      0 :::22                   :::*                    LISTEN      6915/sshd           
tcp6       0      0 ::1:25                  :::*                    LISTEN      7010/master         
udp        0      0 0.0.0.0:610             0.0.0.0:*                           5996/rpcbind        
udp        0      0 0.0.0.0:111             0.0.0.0:*                           5996/rpcbind        
udp6       0      0 :::610                  :::*                                5996/rpcbind        
udp6       0      0 :::111                  :::*                                5996/rpcbind  

主从部署 (所有从库执行)

#修改从库配置文件
[root@db01 ~]# vim /redis-slave/redis.conf
requirepass 123
masterauth 123    #//添加修改此行

[root@db02 ~]# vim /app/redis/redis.conf
requirepass 123
masterauth 123    #//修改此行
[root@db03 ~]# vim /redis-slave/redis.conf
requirepass 123
masterauth 123    #//修改此行

[root@db03 ~]# vim /app/redis/redis.conf
requirepass 123
masterauth 123    #//修改此行
[root@db03 ~]# vim /redis-slave/redis.conf
requirepass 123
masterauth 123    #//修改此行
## 重启redis
[root@db01 ~]# systemctl restart redis redis-slave
[root@db02 ~]# systemctl restart redis redis-slave
[root@db03 ~]# systemctl restart redis redis-slave
# 开启主从
127.0.0.1:6380> SLAVEOF 172.16.1.51 6379
#主库查看从库信息
[root@db01 ~]# redis-cli -a 123
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
127.0.0.1:6379> INFO replication
# Replication
role:master
connected_slaves:5
slave0:ip=172.16.1.53,port=6379,state=online,offset=98,lag=0
slave1:ip=172.16.1.52,port=6379,state=online,offset=98,lag=1
slave2:ip=172.16.1.52,port=6380,state=online,offset=98,lag=1
slave3:ip=172.16.1.53,port=6380,state=online,offset=98,lag=0
slave4:ip=172.16.1.51,port=6380,state=online,offset=98,lag=1
master_failover_state:no-failover
master_replid:4306bd9c0f3dac7101641ce2203447a117c59045
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:98
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:98