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

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

数据库11个月前 (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

相关文章

备份集中的数据库备份与现有的数据库不同

备份集中的数据库备份与现有的数据库不同

将sqlserver2000的数据还原到sqlserver2008的时候,出现了“备份集中的数据库备份与现有的数据库不同”的错误,尝试了好几次都失败在左侧的选项中,勾选“覆盖现有数据库”就可以了...

CentOS7 安装Oracle12cR2

CentOS7 安装Oracle12cR2

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

CentOS7.5 安装MySQL ndb集群 RPM方式

CentOS7.5 安装MySQL ndb集群 RPM方式

当企业的MySQL业务到达一定的当量,就需要一定规模数量的MySQL数据库来负载均衡数据库请求,负载均衡的前提是每个服务器的数据库是数据同步的,在业务量不大的时候会使用主、从复制的方法实现服务器数据同...

RHEL7.4 Oracle11gR2 RAC udev

RHEL7.4 Oracle11gR2 RAC udev

系统版本 Red Hat Enterprise Linux 7.4 数据库版本 Oracle Database 11g Release 2 for Linux x86-64服务器 Dell...

解决ORA-01102: cannot mount database in EXCLUSIVE mode

解决ORA-01102: cannot mount database in EXCLUSIVE mode

startupdbca新建一个名为CDRTEST的库,startup后报ORA-01102: cannot mount database in EXCLUSIVE mode错误shutdown&nbs...

RHEL7.4 安装Oracle11gR2单机版

RHEL7.4 安装Oracle11gR2单机版

系统环境配置vi /etc/sysconfig/network 添加 NETWORKING=yes HOSTNAME=laos-billincdr-svr1 ============...