一、部署准备
1master+2slave
master:192.168.0.156
slave1:192.168.0.157
slave1:192.168.0.158
三台机器可以相互ping通,可以ping通baidu
二、Redis部署
2.1、主从复制部署
==注:==主从模式是实现哨兵和集群的基础
2.1.1、安装gcc、gcc-c++、make依赖
# 编译所需要的环境和编译器
yum install -y gcc gcc-c++ make vim
2.1.2、下载redis6.2.9并解压
2.1.2.1、下载:
方式一:
在官网下载之后上传到指定机器
方式二:
wget https://download.redis.io/releases/redis-6.2.9.tar.gz
2.1.2.2、解压:
tar -zxvf /opt/tool/redis-6.2.9.tar.gz -C /opt/tool
2.1.3、编译安装
cd redis-6.2.9
make MALLOC=libc
make
cd src
# redis安装位置
make install PREFIX=/usr/local/redis
mkdir /usr/local/redis/etc/
2.1.4、修改配置文件
将redis配置文件copy出一份
cp /opt/tool/redis-6.2.9/redis.conf /usr/local/redis/etc/
2.1.4.1、master配置文件
# 放行访问IP的限制 0.0.0.0 代表无限制
bind 127.0.0.1改为bind 0.0.0.0
# 后台启动
daemonize no改为daemonize yes
# 设置redis密码
requirepass foobared改为requirepass 123456
# pid存储目录
pidfile /usr/local/redis/run/redis_6379.pid
# 日志存储目录
logfile "/usr/local/redis/logs/redis.log"
# 数据存储目录,目录要提前创建好
dir /usr/local/redis/dbcache/
2.1.4.2、slave配置文件
# 放行访问IP的限制 0.0.0.0 代表无限制
bind 127.0.0.1改为bind 0.0.0.0
# 后台启动
daemonize no改为daemonize yes
# 设置redis密码
requirepass foobared改为requirepass 123456
# pid存储目录
pidfile /usr/local/redis/run/redis_6379.pid
# 日志存储目录
logfile "/usr/local/redis/logs/redis.log"
# 数据存储目录,目录要提前创建好
dir /usr/local/redis/dbcache/
# 从主节点进行数据复制
replicaof 192.168.0.156 6379
# 主节点的密码
masterauth 123456
2.1.5、创建配置文件中修改的pid、log、dbcache文件(三台机器均需操作)
mkdir /usr/local/redis/run
touch /usr/local/redis/run/redis_6379.pid
mkdir /usr/local/redis/logs
touch /usr/local/redis/logs/redis.log
mkdir /usr/local/redis/dbcache
2.1.6、设置Redis实用systemctl方式启动(三台机器均需操作)
cd /lib/systemd/system
vim redis.service
[Unit]
Description=Redis
After=network.target
[Service]
ExecStart=/opt/tool/redis-6.2.9/src/redis-server /usr/local/redis/etc/redis.conf --daemonize no
ExecStop=/opt/tool/redis-6.2.9/src/redis-cli -h 127.0.0.1 -p 6379 shutdown
[Install]
WantedBy=multi-user.target
2.1.7、创建链接并刷新配置
ln -s /lib/systemd/system/redis.service /etc/systemd/system/multi-user.target.wants/redis.service
systemctl daemon-reload
2.1.8、关闭防火墙、selinux
# 可以不执行
systemctl stop firewalld.service
systemctl disable firewalld.service
# 关闭selinux
setenforce 0
2.1.9、启动Redis
systemctl start redis
# 进入redis界面
cd /opt/tool/redis-6.2.9/src
./redis-cli -h 192.168.0.158 -p 6379 -a 123456
2.1.10、开放指定端口
firewall-cmd --add-port=6379/tcp --permanent
# 端口生效
firewall-cmd --reload
2.2、哨兵模式部署
2.2.1、将解压redis包中的配置文件拷贝一份
cp /opt/tool/redis-6.2.9/sentinel.conf /usr/local/redis/etc/
2.2.2、修改配置文件(三台机器配置相同)
vim /usr/local/redis/etc/sentinel.conf
daemonize的值从no设置为yes
pidfile /usr/local/redis/run/redis-sentinel.pid
logfile "/usr/local/redis/logs/redis-sentinel.log"
dir /usr/local/redis/tmp
# 设置redis主机IP地址,端口,选举次数
sentinel monitor mymaster 192.168.1.10 6379 2
# 设置redis主机访问密码
sentinel auth-pass mymaster 123456
# 心跳检测8000毫秒,如果主机8秒内没有相应,就会在从机开始选举
sentinel down-after-milliseconds mymaster 8000
# 执行故障转移时, 最多可以有多少个从服务器同时对新的主服务器进行同步
sentinel parallel-syncs mymaster 1
2.2.3、创建pid、log、tmp文件(三台机器均需操作)
touch /usr/local/redis/run/redis-sentinel.pid
touch /usr/local/redis/logs/redis-sentinel.log
mkdir /usr/local/redis/tmp
2.2.4、将哨兵服务用systemctl方式启动(三台机器均需操作)
cd /lib/systemd/system
vim redis-sentinel.service
[Unit]
Description=Redis
After=network.target
[Service]
ExecStart=/opt/tool/redis-6.2.9/src/redis-sentinel /usr/local/redis/etc/sentinel.conf --sentinel
ExecStop=/opt/tool/redis-6.2.9/src/redis-cli -h 127.0.0.1 -p 26379 shutdown
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
2.2.5、创建链接并刷新配置
ln -s /lib/systemd/system/redis-sentinel.service /etc/systemd/system/multi-user.target.wants/redis-sentinel.service
systemctl daemon-reload
2.2.6、修改master主机的配置文件(仅master执行)
vim /usr/local/redis/etc/redis.conf
masterauth 123456
2.2.7、重启redis服务(仅master执行)
systemctl restart redis
2.2.8、启动哨兵服务(三台机器均需操作)
systemctl start redis-sentinel
2.2.9、开放指定端口
firewall-cmd --add-port=26379/tcp --permanent
# 端口生效
firewall-cmd --reload