Redis4.0 三主三备集群安装配置

环境相关:

OS:CentOS release 7.4.1708
IP:192.168.77.101/102/103
MEM:16G
DISK:50G
  1. 简单说明

本次实验使用三台Linux虚拟机,每台Linux虚拟机上两个redis实例,共6个实例,三主三备,每个实例6.4G内存
生产环境可以根据实际情况,将6个实例分别部署在2台机器或者是6台机器上
甚至在一台物理机上部署也是可以的,虽然这么设计并不合理
redis以IP+端口号去区分使用各个实例:

# /etc/hosts 配置:
192.168.77.101 redis1
192.168.77.102 redis2
192.168.77.103 redis3

# redis 实例和端口配置:
redis1 7000
redis1 7001
redis2 7002
redis2 7003
redis3 7004
redis3 7005
  1. 节点一 主机克隆,基础环境部署

参照《CentOS7实验机模板搭建部署》
克隆一台实验机,调整内存为16G,并进一步配置主机名和hosts文件:

HOSTNAME=redis1
hostnamectl set-hostname "$HOSTNAME"
echo "$HOSTNAME">/etc/hostname
echo "$(grep -E '127|::1' /etc/hosts)">/etc/hosts
echo "$(ip a|grep "inet "|grep -v 127|awk -F'[ /]' '{print $6}') $HOSTNAME">>/etc/hosts

  1. 节点一 编译安装部署

安装编译需要的系统包:

yum -y install gcc tcl rubygems ruby-devel rpm-build

下载源码包,编译安装:

cd /tmp/
wget http://download.redis.io/releases/redis-4.0.2.tar.gz
cd /usr/local
tar -xf /tmp/redis-4.0.2.tar.gz
ln -s redis-4.0.2 redis
cd redis
make && make install

配置部署:

mkdir -pv /usr/local/redis/run/{pid,log,data}
# 创建实例运行的目录
mkdir -p /usr/local/redis/redis_cluster
# 创建集群配置文件目录
cd /usr/local/redis/redis_cluster
for PORT in $(seq 7000 7005)
do
  cp -av ../redis.conf redis_${PORT}.conf
  sed -i "s/^bind 127.0.0.1/bind $(hostname -i)/g" redis_${PORT}.conf
  # 绑定节点自己的IP
  sed -i "s/^port 6379/port ${PORT}/g" redis_${PORT}.conf
  sed -i "s/^daemonize no/daemonize yes/g" redis_${PORT}.conf
  sed -i "s|/var/run/redis_6379.pid|/usr/local/redis/run/pid/redis_${PORT}.pid|g" redis_${PORT}.conf
  # 设置pid文件
  sed -i "s|^logfile.*$|logfile /usr/local/redis/run/log/redis_${PORT}.log|g" redis_${PORT}.conf
  # 设置log文件
  sed -i "s/^dbfilename dump.rdb/dbfilename dump_${PORT}.rdb/g" redis_${PORT}.conf
  # 设置内存快照文件名
  sed -i "s|^dir ./|dir /usr/local/redis/run/data|g" redis_${PORT}.conf
  # 设置快照存储目录
  sed -i "/^# maxmemory <bytes>/amaxmemory 6871947673" redis_${PORT}.conf
  # 设置实例内存
  sed -i "s/^appendonly no/appendonly yes/g" redis_${PORT}.conf
  # 设置打开aof日志
  sed -i "s/^appendfilename.*/appendfilename appendonly_${PORT}.aof/g" redis_${PORT}.conf
  # 设置aof日志名
  sed -i "s/^# cluster-enabled yes/cluster-enabled yes/g" redis_${PORT}.conf
  # 设置实例为集群类型的实例
  sed -i "s/^# cluster-config-file nodes-6379.conf/cluster-config-file nodes-${PORT}.conf/g" redis_${PORT}.conf
  # 设置每个实例的集群配置文件名
  echo "# /usr/local/bin/redis-server /usr/local/redis/redis_cluster/redis_${PORT}.conf">>/etc/rc.d/rc.local
done
# 在每个节点之上都生成7000~7005端口实例的配置文件
# 这些实例是集群类型的实例,区别于单实例
# 注意每个节点的这些配置文件中的绑定IP都是自己主机的IP,因此三个节点之间不能公用这些配置文件
# 需要修改绑定IP才可以使用

安装基于ruby的API客户端工具
在网站 https://rubygems.org/ 搜索redis,下载3.3.5版本的安装包,然后安装:

gem install -l /tmp/redis-3.3.5.gem

不能够适用最新的安装包,经测试4.0版本的包不能做数据槽重分配
可以直接使用解压工具打开redis-3.3.5.gem安装包查看内容
gem是和rpm相似的包管理工具

实例启动:
再配置部署时已经将启动命令以注释的形式写入了/etc/rc.d/rc.local开机启动文件中
可以根据节点主机不同打开相应的行,便于主机重启后自动启动实例

# 根据 简单说明 中的 实例和端口配置
# 配置安装节点一时,打开节点一的/etc/rc.d/rc.local生效行:
echo '/usr/local/bin/redis-server /usr/local/redis/redis_cluster/redis_7000.conf'>>/etc/rc.d/rc.local
echo '/usr/local/bin/redis-server /usr/local/redis/redis_cluster/redis_7001.conf'>>/etc/rc.d/rc.local
# 配置安装节点二时,打开节点二的/etc/rc.d/rc.local生效行:
echo '/usr/local/bin/redis-server /usr/local/redis/redis_cluster/redis_7002.conf'>>/etc/rc.d/rc.local
echo '/usr/local/bin/redis-server /usr/local/redis/redis_cluster/redis_7003.conf'>>/etc/rc.d/rc.local
# 配置安装节点三时,打开节点三的/etc/rc.d/rc.local生效行:
echo '/usr/local/bin/redis-server /usr/local/redis/redis_cluster/redis_7004.conf'>>/etc/rc.d/rc.local
echo '/usr/local/bin/redis-server /usr/local/redis/redis_cluster/redis_7005.conf'>>/etc/rc.d/rc.local
  1. 节点二和节点三部署

重新克隆机器,配置IP为192.168.77.102,主机名为redis2,根据上方第2和第3步部署出节点二
重新克隆机器,配置IP为192.168.77.103,主机名为redis3,根据上方第2和第3步部署出节点三
注意实例启动的开机启动配置上的差异

  1. 配置集群

三节点机器重启,查看实例运行状态:

ps -ef|grep redis
netstat -tupln
# 进程存在且端口存在
echo 'ping'| redis-cli -h 192.168.77.101 -p 7000
echo 'ping'| redis-cli -h 192.168.77.101 -p 7001
echo 'ping'| redis-cli -h 192.168.77.102 -p 7002
echo 'ping'| redis-cli -h 192.168.77.102 -p 7003
echo 'ping'| redis-cli -h 192.168.77.103 -p 7004
echo 'ping'| redis-cli -h 192.168.77.103 -p 7005
# 使用ping pong来检测实例是否正常

在节点一上执行命令创建集群:

cp -av /usr/local/redis/src/redis-trib.rb /usr/local/bin
redis-trib.rb create --replicas 1 \
 192.168.77.101:7000 192.168.77.101:7001 \
 192.168.77.102:7002 192.168.77.102:7003 \
 192.168.77.103:7004 192.168.77.103:7005
# --replicas 1 表示自动为每一个master节点分配一个slave节点 
# 自动选择出三个主节点和三个备节点

集群测试:

# 连接:
redis-cli -c -h 192.168.77.101 -p 7000
redis-cli -c -h 192.168.77.101 -p 7001
redis-cli -c -h 192.168.77.102 -p 7002
redis-cli -c -h 192.168.77.102 -p 7003
redis-cli -c -h 192.168.77.103 -p 7004
redis-cli -c -h 192.168.77.103 -p 7005

# 任意一个节点的实例都可以敲该命令进行检测
redis-trib.rb check 192.168.77.101:7000

[TOC]

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值