简述
为什么要搭建redis集群?
主要是为了保证redis的高可用性,当一个redis坏掉了,还有其他的redis可提供服务。同时每个redis都可以部署在同一服务器上。
在这里分为三大部分:
1. linux上安装redis
2. 搭建redis集群(主从集群)
3. 搭建redis哨兵模式
1、 在linux上安装redis
1.1 下载redis安装包
地址:https://download.redis.io/releases/
另一个下载方式,当前服务器是否允许访问外网,如果可以的话,
可直接用wget下载:但要先创建目录后,进入/app/redis后,再执行wget。
wget http://download.redis.io/releases/redis-7.4.2.tar.gz
1.2 创建目录
切换root用户
sudo su – root
cd /app
mkdir -p /app/redis
mkdir -p /app/redis/sentine1
mkdir -p /app/redis/conf
mkdir -p /app/redis/run
mkdir -p /app/redis/logs
mkdir -p /app/redis/data
cd /app
chgrp -R redis. *
chown -R redis. *
1.2 上传redis安装包到对应的目录
目录: /app/redis
1.3 对redis安装包授权
chmod -R 755 /app/redis/redis-7.4.2.tar.gz
chgrp -R redis /app/redis/redis-7.4.2.tar.gz
chown -R redis /app/redis/redis-7.4.2.tar.gz
1.4 使用Redis用户解压redis安装包
sudo su – redis
cd /app/redis
tar -zxvf /app/redis/redis-7.4.2.tar.gz
1.5 打补丁包(如果已经安装过,此步可忽略)
sudo su – root
yum -y install gcc automake autoconf libtool make(已经安装过,所以都提示已安装)
yum -y install gcc gcc-c++ (已经安装过,所以都提示已安装)
1.6 编译安装
sudo su – redis
cd /app/redis/redis-7.4.2
make --清除上次编译的信息,重新编译 make distclean && make
cd /app/redis/redis-7.4.2/src,执ll,查看目录下明细,redis-cli是客户端 redis-server是服务端。
以下此步可不用执行
#cd /app/redis/redis-7.4.2/src
#make install
1.7 启动redis
cd /app/redis/redis-7.4.2/src
redis-server
到这里redis已经安装成功。
2、搭建redis集群(主从集群)
2.1 编辑redis实例的配置文件(三个实例,三份文件,文件名带上各自实例端口)
三个端口分别为:7481(主)、7482(从)、7483(从)
这里服务器ip统一为:10.225.188.149
这里设置的密码统一为:masterpass
sudo su – redis
cd /app/redis/conf
第一个配置文件:
vi redis.7481.conf
复制以下内容进redis.7481.conf,之后保存退出(按ESC键,输入:wq按回车)。
port 7481
daemonize yes
protected-mode no
#bind 127.0.0.1
requirepass “masterpass”
masterauth “masterpass”
pidfile “/app/redis/run/redis.7481.pid”
logfile “/app/redis/logs/redis.7481.log”
dir “/app/redis/data”
dbfilename “dump7481.rdb”
save 900 1
save 300 10
save 60 10000
第二个配置文件
vi redis.7482.conf
复制以下内容进redis.7482.conf,之后保存退出(按ESC键,输入:wq按回车)。
port 7482
daemonize yes
protected-mode no
#bind 127.0.0.1
requirepass “masterpass”
masterauth “masterpass”
pidfile “/app/redis/run/redis.7482.pid”
logfile “/app/redis/logs/redis.7482.log”
dir “/app/redis/data”
dbfilename “dump7482.rdb”
save 900 1
save 300 10
save 60 10000
replicaof 10.225.188.149 7481
第三个配置文件
vi redis.7483.conf
复制以下内容进redis.7483.conf,之后保存退出(按ESC键,输入:wq按回车)。
port 7483
daemonize yes
protected-mode no
#bind 127.0.0.1
requirepass “masterpass”
masterauth “masterpass”
pidfile “/app/redis/run/redis.7483.pid”
logfile “/app/redis/logs/redis.7483.log”
dir “/app/redis/data”
dbfilename “dump7483.rdb”
save 900 1
save 300 10
save 60 10000
replicaof 10.225.188.149 7481
2.2 启动redis
cd /app/redis/redis-7.4.2/src
redis-server /app/redis/conf/redis.7481.conf &
redis-server /app/redis/conf/redis.7482.conf &
redis-server /app/redis/conf/redis.7483.conf &
2.3 查看进程
ps -ef|grep redis
2.4 从master节点查看slave信息
redis-cli -p 7481
auth masterpass
info replication
redis-cli -p 7482
auth masterpass
replicaof 10.225.188.149 7481
redis-cli -p 7483
auth masterpass
replicaof 10.225.188.149 7481
3、 搭建redis哨兵模式
• 集群模式,如果主节点挂了,不能往redis写数据了!这时候这需要搭建哨兵模式,哨兵会自动从剩下的两个从节点中,选举主节点。
• 注:搭建redis哨兵模式不需要安装额外的软件,redis内置了哨兵,redis-sentinel。
• 哨兵模式没有主从的概念,都是平等的。
3.1 编辑三个哨兵配置文件
三个端口分别为:17481、17482、17483
这里服务器ip统一为:10.225.188.149
这里设置的密码统一为:masterpass
sudo su – redis
cd /app/redis/conf
第一个配置文件:
vi sentinel.17481.conf
复制以下内容进sentinel.17481.conf,之后保存退出(按ESC键,输入:wq按回车)。
port 17481
daemonize yes
protected-mode no
#bind 127.0.0.1
pidfile “/app/redis/run/sentine1.17481.pid”
logfile “/app/redis/logs/sentine1.17481.log”
dir “/app/redis/sentine1”
sentinel myid b55a4068a6be303fdbbd74e971d2619796cd6f5b
sentinel deny-scripts-reconfig yes
sentinel monitor mymaster 10.225.188.149 7481 2
sentinel parallel-syncs mymaster 2
sentinel auth-pass mymaster masterpass
sentinel config-epoch mymaster 0
sentinel leader-epoch mymaster 0
sentinel known-replica mymaster 10.225.188.149 7482
sentinel known-replica mymaster 10.225.188.149 7483
sentinel known-sentinel mymaster 10.225.188.149 17482 ed12e828d9d20d9e36f1bd944783d839f6e5aec7
sentinel known-sentinel mymaster 10.225.188.149 17483 4f25328a9ee5b059b03763cfa6b8ea9b07104e65
sentinel current-epoch 0
第二个配置文件
vi sentine1.17482.conf
复制以下内容进sentine1.17482.conf,之后保存退出(按ESC键,输入:wq按回车)。
port 17482
daemonize yes
protected-mode no
#bind 127.0.0.1
pidfile “/app/redis/run/sentine1.17482.pid”
logfile “/app/redis/logs/sentine1.17482.log”
dir “/app/redis/sentine1”
sentinel myid ed12e828d9d20d9e36f1bd944783d839f6e5aec7
sentinel deny-scripts-reconfig yes
sentinel monitor mymaster 10.225.188.149 7481 2
sentinel parallel-syncs mymaster 2
sentinel auth-pass mymaster masterpass
sentinel config-epoch mymaster 0
sentinel leader-epoch mymaster 0
sentinel known-sentinel mymaster 10.225.188.149 17481 b55a4068a6be303fdbbd74e971d2619796cd6f5b
sentinel current-epoch 0
第三个配置文件
vi sentine1.17483.conf
复制以下内容进sentine1.17483.conf,之后保存退出(按ESC键,输入:wq按回车)。
port 17483
daemonize yes
protected-mode no
#bind 127.0.0.1
pidfile “/app/redis/run/sentine1.17483.pid”
logfile “/app/redis/logs/sentine1.17483.log”
dir “/app/redis/sentine1”
sentinel myid 4f25328a9ee5b059b03763cfa6b8ea9b07104e65
sentinel deny-scripts-reconfig yes
sentinel monitor mymaster 10.225.188.149 7481 2
sentinel parallel-syncs mymaster 2
sentinel auth-pass mymaster masterpass
sentinel config-epoch mymaster 0
sentinel leader-epoch mymaster 0
sentinel known-sentinel mymaster 10.225.188.149 17481 b55a4068a6be303fdbbd74e971d2619796cd6f5b
sentinel current-epoch 0
3.2 启动哨兵
cd /app/redis/redis-7.4.2/src
redis-sentinel /app/redis/conf/sentinel.17481.conf &
redis-sentinel /app/redis/conf/sentinel.17482.conf &
redis-sentinel /app/redis/conf/sentinel.17483.conf &
3.3 查看进程
ps -ef|grep redis
到这里redis集群就搭建完毕了。