当前位置:首页 > 数据库 > CentOS7搭建redis6高可用主从集群(3主3从1哨兵)

CentOS7搭建redis6高可用主从集群(3主3从1哨兵)

数据库3年前 (2020-12-11)

CentOS7搭建redis6高可用主从集群(3主3从1哨兵)

Redis集群中有投票容错机制,超过半数的节点检测认为某一节点已经失效了,那么就会放弃此节点,所以至少需要3个节点。为了保证高可用加入了主从模式,则一共就有六个节点实例(3个主节点和3个从节点,开启1个哨兵模式)


CentOS7搭建redis6高可用主从集群(3主3从1哨兵)



IPmaster节点salve节点
192.168.3.210192.168.3.210:7000192.168.3.210:7001
192.168.3.220192.168.3.220:7000192.168.3.220:7001
192.168.3.230192.168.3.230:7000192.168.3.230:7001



系统准备

#修改计算机名
#主节点1
hostnamectl --static set-hostname Redis1 && su
#主节点2
hostnamectl --static set-hostname Redis2 && su
#主节点3
hostnamectl --static set-hostname Redis3 && su

#关闭防火墙和修改内核参数
setenforce 0 && sed -i 's/^SELINUX=enforcing$/SELINUX=disabled/' /etc/selinux/config
systemctl stop firewalld.service && systemctl disable firewalld.service && systemctl status firewalld.service
echo 1 > /proc/sys/vm/overcommit_memory
echo 1024 > /proc/sys/net/core/somaxconn
echo never > /sys/kernel/mm/transparent_hugepage/enabled

#添加hosts
cat >>/etc/hosts <<EOF
192.168.3.210 Redis1
192.168.3.220 Redis2
192.168.3.230 Redis3
EOF

#安装必要组件
yum install epel-release wget gcc gcc-c++ make tcl net-tools vim ntp -y 
yum install centos-release-scl -y 
yum install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils -y 
scl enable devtoolset-9 bash
echo -e "\nsource /opt/rh/devtoolset-9/enable" >>/etc/profile
ntpdate ntp.aliyun.com


编译安装

cd /usr/local/src/
wget https://download.redis.io/releases/redis-6.0.9.tar.gz
tar xzf redis-6.0.9.tar.gz
cd /usr/local/src/redis-6.0.9
make && make test
make install PREFIX=/usr/local/redis
#测试
/usr/local/redis/bin/redis-server

#修改环境变量
mkdir -p /usr/local/redis/redis_cluster/7000/conf/
mkdir -p /usr/local/redis/redis_cluster/7000/logs/
mkdir -p /usr/local/redis/redis_cluster/7000/data/
mkdir -p /usr/local/redis/redis_cluster/7001/conf/
mkdir -p /usr/local/redis/redis_cluster/7001/logs/
mkdir -p /usr/local/redis/redis_cluster/7001/data/
echo 'export PATH=$PATH:/usr/local/redis/bin'>>/etc/profile 
source /etc/profile


修改配置

vim /usr/local/redis/redis_cluster/7000/conf/redis.conf
改为
bind 192.168.3.210
port 7000
daemonize yes  
pidfile /var/run/redis-7000.pid    
logfile /usr/local/redis/redis_cluster/7000/logs/redis.log
dir /usr/local/redis/redis_cluster/7000/data
cluster-enabled yes
cluster-config-file nodes_7000.conf
cluster-node-timeout 15000
appendonly yes
appendfsync always
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb

vim /usr/local/redis/redis_cluster/7001/conf/redis.conf
改为
bind 192.168.3.210
port 7001
daemonize yes
pidfile /var/run/redis-7001.pid
logfile /usr/local/redis/redis_cluster/7001/logs/redis.log
dir /usr/local/redis/redis_cluster/7001/data
cluster-enabled yes
cluster-config-file nodes_7001.conf
cluster-node-timeout 15000
appendonly yes
appendfsync always
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb


分发配置文件

#免密
ssh-keygen -t rsa -b 1200
ssh-copy-id -i ~/.ssh/id_rsa.pub root@Redis1
ssh-copy-id -i ~/.ssh/id_rsa.pub root@Redis2
ssh-copy-id -i ~/.ssh/id_rsa.pub root@Redis3

#分发
scp -r /usr/local/redis/redis_cluster/7000/conf/redis.conf root@Redis2:/usr/local/redis/redis_cluster/7000/conf/redis.conf
scp -r /usr/local/redis/redis_cluster/7001/conf/redis.conf root@Redis2:/usr/local/redis/redis_cluster/7001/conf/redis.conf
scp -r /usr/local/redis/redis_cluster/7000/conf/redis.conf root@Redis3:/usr/local/redis/redis_cluster/7000/conf/redis.conf
scp -r /usr/local/redis/redis_cluster/7001/conf/redis.conf root@Redis3:/usr/local/redis/redis_cluster/7001/conf/redis.conf

节点2执行
cd /usr/local/redis/redis_cluster/7000/conf/
sed -i "s/^bind 192.168.3.210/bind 192.168.3.220/g" redis.conf
cd /usr/local/redis/redis_cluster/7001/conf/
sed -i "s/^bind 192.168.3.210/bind 192.168.3.220/g" redis.conf

节点3执行
cd /usr/local/redis/redis_cluster/7000/conf/
sed -i "s/^bind 192.168.3.210/bind 192.168.3.230/g" redis.conf
cd /usr/local/redis/redis_cluster/7001/conf/
sed -i "s/^bind 192.168.3.210/bind 192.168.3.230/g" redis.conf


添加脚本

#启动脚本
vim cluster_start.sh
添加
#!/bin/bash
redis-server /usr/local/redis/redis_cluster/7000/conf/redis.conf
redis-server /usr/local/redis/redis_cluster/7001/conf/redis.conf
执行chmod +x cluster_start.sh
./cluster_start.sh

#关闭脚本
vim cluster_shutdown.sh
添加
#!/bin/bash
pgrep redis-server | xargs -exec kill -9
执行chmod +x cluster_shutdown.sh

#测试
ps -ef | grep redis
netstat -luntp

CentOS7搭建redis6高可用主从集群(3主3从1哨兵)


启动集群

#cluster-replicas 1代表3主3从,前3个代表3个master,后3个代表3个slave
redis-cli --cluster create 192.168.3.210:7000 192.168.3.220:7000 192.168.3.230:7000 192.168.3.210:7001 192.168.3.220:7001 192.168.3.230:7001 --cluster-replicas 1

CentOS7搭建redis6高可用主从集群(3主3从1哨兵)

输入yes

CentOS7搭建redis6高可用主从集群(3主3从1哨兵)

#如果遇到错误,删除集群
#rm -rf /usr/local/redis/redis_cluster/7000/data/nodes_7000.conf
#rm -rf /usr/local/redis/redis_cluster/7000/data/appendonly.aof 
#rm -rf /usr/local/redis/redis_cluster/7000/data/dump.rdb 
#rm -rf /usr/local/redis/redis_cluster/7001/data/nodes_7001.conf
#rm -rf /usr/local/redis/redis_cluster/7001/data/appendonly.aof 
#rm -rf /usr/local/redis/redis_cluster/7001/data/dump.rdb


查看集群状态

 redis-cli --cluster check redis3:7001

CentOS7搭建redis6高可用主从集群(3主3从1哨兵)


#Radis1连接Radis3上的7001节点并添加一个数据
redis-cli -c -h 192.168.3.230 -p 7001
set key001 hi~VOS
get key001

CentOS7搭建redis6高可用主从集群(3主3从1哨兵)


Radis2连接Radis1上的7001节点查询刚添加的数据
redis-cli -c -h 192.168.3.210 -p 7001
get key001

CentOS7搭建redis6高可用主从集群(3主3从1哨兵)


设置集群自启

vim /etc/rc.local
添加
/usr/local/redis/bin/redis-server /usr/local/redis/redis_cluster/7000/conf/redis.conf
/usr/local/redis/bin/redis-server /usr/local/redis/redis_cluster/7001/conf/redis.conf

执行
chmod +x /etc/rc.d/rc.local


添加哨兵监控

#创建目录
mkdir -p /usr/local/redis/redis_cluster/27001/conf/
mkdir -p /usr/local/redis/redis_cluster/27001/logs/
mkdir -p /usr/local/redis/redis_cluster/27001/data/

#修改配置
vim /usr/local/redis/redis_cluster/27001/conf/sentinel.conf
改为
bind 192.168.3.210
port 27001
daemonize yes
pidfile /var/run/redis-sentinel.pid
logfile /usr/local/redis/redis_cluster/27001/logs/redis-sentinel.log
dir /usr/local/redis/redis_cluster/27001/data
sentinel monitor mymaster1 192.168.3.210 7000 2
sentinel monitor mymaster2 192.168.3.220 7000 2
sentinel monitor mymaster3 192.168.3.230 7000 2
sentinel down-after-milliseconds mymaster1 10000
sentinel down-after-milliseconds mymaster2 10000
sentinel down-after-milliseconds mymaster3 10000
sentinel parallel-syncs mymaster1 1
sentinel parallel-syncs mymaster2 1
sentinel parallel-syncs mymaster3 1
sentinel failover-timeout mymaster1 15000
sentinel failover-timeout mymaster2 15000
sentinel failover-timeout mymaster3 15000

#分发配置
scp -r /usr/local/redis/redis_cluster/27001/conf/sentinel.conf root@Redis2:/usr/local/redis/redis_cluster/27001/conf/sentinel.conf
scp -r /usr/local/redis/redis_cluster/27001/conf/sentinel.conf root@Redis3:/usr/local/redis/redis_cluster/27001/conf/sentinel.conf

#节点2执行
cd /usr/local/redis/redis_cluster/27001/conf/
sed -i "s/^bind 192.168.3.210/bind 192.168.3.220/g" sentinel.conf
#节点3执行
cd /usr/local/redis/redis_cluster/27001/conf/
sed -i "s/^bind 192.168.3.210/bind 192.168.3.230/g" sentinel.conf

#启动
redis-sentinel /usr/local/redis/redis_cluster/27001/conf/sentinel.conf
tail -f /usr/local/redis/redis_cluster/27001/logs/redis-sentinel.log
ps -ef|grep sentinel

CentOS7搭建redis6高可用主从集群(3主3从1哨兵)

本站所有文章均可随意转载,转载时请保留原文链接及作者。

本文链接:https://www.vos.cn/db/463.html

相关文章

修复升级EVE-NG后无法正常打开问题

修复升级EVE-NG后无法正常打开问题

升级流程Welcome to Ubuntu 16.04.3 LTS (GNU/Linux 4.9.40-eve-ng-ukms+ x86_64) * Documentation:  ...

利用LVM特性对EVE-NG硬盘分区扩容

利用LVM特性对EVE-NG硬盘分区扩容

下载的EVE-NG镜像中,存放模拟器镜像的分区太小了,上传几个cisco和juniper的模拟器就快满了,所以需要使用lvm特性对ubuntu server的硬盘分区进行扩容,首先先将eve-ng虚拟...

CentOS7 软RAID配置

CentOS7 软RAID配置

虚拟机添加4块新硬盘,形成5盘环境,做Linux软RAID磁盘阵列准备环境搭建添加硬件选择硬盘默认选择SCSI创建新虚拟磁盘容量默认20G,存储为单个文件加默认安装系统的,一共5个fdisk -l查看...

CentOS7 NFS配置

CentOS7 NFS配置

网络文件系统(Network File System)是一种将远程主机上的分区(目录)经网络挂载到本地的一种机制,通过对网络文件系统的支持,用户可以在本地系统上像操作本地分区一样来对远程主机的共享分区...

CentOS7 Postfix配置

CentOS7 Postfix配置

使用Postfix+Dovecot配置简单的邮件服务器安装Bindyum install bind-chroot配置Bind  编辑主配置文件,里面的各种参数用...

CentOS7 安装Oracle12cR2

CentOS7 安装Oracle12cR2

在CentOS7.8 Minimal版本下安装Oracle Database 12c Release 2一键安装oracle-single-install.zip系统环境准备sed -i&n...