redis5单机及集群(用3台虚拟机模拟3主3备)安装

Redis3.0版本之后支持Cluster,使用ruby方式创建集群;2018年十月Redis发布了5.0版本,新版本放弃了Ruby的集群方式,改为使用C语言编写的redis-cli的方式,使集群的构建方式复杂度大大降低,本文介绍5.0版本集群的搭建。

- 所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽.
- 节点的fail是通过集群中超过半数的节点检测失效时才生效.
- 客户端与redis节点直连,不需要中间proxy层.客户端不需要连接集群所有节点,连接集群中任何一个可用节点即可.
- redis-cluster把所有的物理节点映射到[0-16383]slot上,cluster 负责维护node<->slot<->value.

redis-cluster选举:容错

  1. 领着选举过程是集群中所有master参与,如果半数以上master节点与master节点通信超过(cluster-node-timeout),认为当前master节点挂掉.
  2. 什么时候整个集群不可用(cluster_state:fail),当集群不可用时,所有对集群的操作做都不可用,收到((error) CLUSTERDOWN The cluster is down)错误.
  • 如果集群任意master挂掉,且当前master没有slave.集群进入fail状态,也可以理解成进群的slot映射[0-16383]不完成时进入fail状态.
  • 如果进群超过半数以上master挂掉,无论是否有slave集群进入fail状态.

redis cluster安装部署

使用3台虚拟机模拟6个redis节点,创建出3 master、3 salve 环境。

  1. 解压redis包到home目录下
tar -zxvf redis-5.0.3.tar.gz -C /home/
  1. 编译
  • 如果没有gcc环境,需要先安装gcc
先通过如下命令检查有无gcc
whereis gcc

如果没有,则先安装gcc
yum install gcc -y
  • 进入解压出来的redis目录,编译
cd /home/redis-5.0.3/
make && make PREFIX=/opt/redis install
编译成功后即会在/opt/redis/目录下生成bin文件夹
  • 如果编译时报错:#error “Newer version of jemalloc required”,解决办法为:
make MALLOC=libc
  1. 修改配置文件
  • 在node01上创建目录
mkdir -p /home/redis-5.0.3/redis_cluster/7001
mkdir -p /home/redis-5.0.3/redis_cluster/7002

其他node02、node03类似,对应修改文件夹名称即可,然后在创建的文件夹内创建配置文件:

vi /home/redis-5.0.3/redis_cluster/7001/redis.conf

# 绑定服务器IP地址
bind 192.168.33.101
# 绑定端口号,必须修改,以此来区分Redis实例
port 7001
# 后台运行
daemonize yes
# 修改pid进程文件名,以端口号命名
pidfile /var/run/redis-7001.pid
# 修改日志文件名称,以端口号为目录来区分
logfile /home/redis-5.0.3/redis_cluster/7001/redis.log
# 修改数据文件存放地址,以端口号为目录名来区分
dir /home/redis-5.0.3/redis_cluster/7001/
# 启用集群
cluster-enabled yes
# 配置每个节点的配置文件,同样以端口号为名称
cluster-config-file nodes-7001.conf
# 配置集群节点的超时时间,可改可不改
cluster-node-timeout 15000
# 启动AOF增量持久化策略
appendonly yes
# 发生改变就记录日志
appendfsync always
  • 然后将node01上的/home/redis-5.0.3及/opt/redis分发到node02和node03的相同目录。
  • node02:
mv /home/redis-5.0.3/redis_cluster/7001 /home/redis-5.0.3/redis_cluster/7003
mv /home/redis-5.0.3/redis_cluster/7002 /home/redis-5.0.3/redis_cluster/7004
  • node03:
mv /home/redis-5.0.3/redis_cluster/7001 /home/redis-5.0.3/redis_cluster/7005
mv /home/redis-5.0.3/redis_cluster/7002 /home/redis-5.0.3/redis_cluster/7006

并修改各redis.conf文件内对应的ip及端口。

  1. 配置各节点环境变量
vi /etc/profile

export REDIS_HOME=/opt/redis
export PATH=$REDIS_HOME/bin:$PATH
  1. 启动各节点
redis-server /home/redis-5.0.3/redis_cluster/7001/redis.conf
redis-server /home/redis-5.0.3/redis_cluster/7002/redis.conf
……

查看节点是否启动
ps -ef | grep redis
  1. 使用 reids-cli 搭建 Redis集群
redis-cli --cluster create 192.168.33.101:7001 192.168.33.102:7003 192.168.33.103:7005 192.168.33.102:7004 1
92.168.33.103:7006 192.168.33.101:7002 --cluster-replicas 1
  • –cluster-replicas 1 命令的意思: 一主一从配置,六个节点就是 三主三从
  • 使用如下命令创建集群的状态:
redis-cli --cluster check 192.168.33.101:7001  #填写任意节点即可,会带出所有的
  1. 测试集群
[root@node03 redis_cluster]# redis-cli -c -h 192.168.33.102 -p 7002
192.168.33.102:7002> set key1 lisi
OK
192.168.33.102:7002> get key1
"lisi"

单机安装

  • 创建目录,上传安装包到服务器(安装包见附件)
mkdir -p /home/soft/
# 上传安装包到此目录
  • 解压
tar -zxvf /home/soft/redis-5.0.14.tar.gz

cd redis-5.0.14
  • 编译安装
make && make install PREFIX=/usr/local/redis
  • 从redis源码中复制配置文件到bin目录
cp redis.conf /usr/local/redis/bin
  • 修改配置文件,设置后台启动(redis默认端口为 6379,可更改redis.conf文件,修改端口号)
vi /usr/local/redis/bin/redis.conf
# 找到 daemonize 把no 改为 yes 
daemonize yes
  • 启动
cd /usr/local/redis/bin

./redis-server ./redis.conf
  • 关闭
./redis-cli shutdown
  • 开机自启
vi /etc/systemd/system/redis.service

# 写入以下内容
[Unit]
Description=redis-server
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/redis/bin/redis-server /usr/local/redis/bin/redis.conf
PrivateTmp=true

[Install]
WantedBy=multi-user.target

# 重载系统服务
systemctl daemon-reload


systemctl start redis.service

systemctl enable redis.service

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值