CentOS 7.4安装Redis 4.0.9集群

  • 内容
  • 评论
  • 相关

介绍

  • Redis从3.0板本开始支持集群(我们使用Redis 4.0.9)
  • 集群几点数量至少6个才能保证组成完整高可用的集群

 

测试环境

我们使用3台虚拟机模拟6个节点,使用端口区分,每台虚拟机2个节点

HOST

IP

PORT

Redis1

192.168.44.10

7001

7004

Redis2

192.168.44.11

7002

7005

Redis3

192.168.44.12

7003

7006

Redis默认端口6379,这里为了方便,所以使用7001-7006来进行区分

安装步骤

环境准备

下面的配置,每台机器都要做

修改主机名

[root@localhost ~]# vim /etc/hostname

配置yum源

我们使用网易的yum源,速度快

root@redis1 ~]# cd /etc/yum.repos.d/

[root@redis1 yum.repos.d]# mkdir old

[root@redis1 yum.repos.d]# mv CentOS-* old/

[root@redis1 yum.repos.d]# wget http://mirrors.163.com/.help/CentOS6-Base-163.repo

[root@redis1 yum.repos.d]# mv CentOS6-Base-163.repo CentOS7-Base-163.repo

[root@redis1 yum.repos.d]# vim CentOS7-Base-163.repo

把里面的所有baseurl属性值的$releasever为对应的OS主版本号(5,6,7)

改成下图

清理yum

[root@redis1 yum.repos.d]# yum clean all

[root@redis1 yum.repos.d]# yum makecache

关闭SElinux

[root@redis1 yum.repos.d]# vim /etc/selinux/config

[root@redis1 yum.repos.d]# setenforce 0

[root@redis1 yum.repos.d]# getenforce

升级yum

都升级下到最新

[root@redis1 yum.repos.d]# yum update

正式安装

安装编译环境

[root@redis1 yum.repos.d]# yum -y install gcc gcc-c++ libstdc++-devel zlib-devel

安装Redis

[root@redis3 yum.repos.d]# cd /usr/local/

[root@redis3 local]# wget http://download.redis.io/releases/redis-4.0.9.tar.gz

[root@redis3 local]# tar zxvf redis-4.0.9.tar.gz

改下文件名

[root@redis3 local]# mv redis-4.0.9 redis

[root@redis3 local]# rm -rf redis-4.0.9.tar.gz

进行编译

[root@redis3 local]# cd redis/

[root@redis3 redis]# make

[root@redis3 redis]# make install

进入/usr/local/bin可以看到下面几个东西。

[root@redis1 redis]# cd /usr/local/bin/

[root@redis1 bin]# ls

查看下redis版本

[root@redis1 ~]# redis-server -v

配置每个节点

Redis1节点

[root@redis1 ~]# cd /usr/local/redis/

创建一个redis-cluster的文件夹并在里面分别创建7001和7004文件夹用来区分节点

[root@redis1 redis]# mkdir -p redis-cluster/{7001,7004}

[root@redis1 redis]# cp redis.conf redis-cluster/7001/redis-7001.conf

修改下配置

[root@redis1 redis]# vim redis-cluster/7001/redis-7001.conf

 

bind 192.168.44.10    #改为设定的端口

port 7001              #改为设定的端口

daemonize yes              #后台启动

pidfile /var/run/redis_7001.pid        #pidfile文件
						

appendonly yes        #aof日志开启 有需要就开启,它会每次写操作都记录一条日志 

cluster-enabled yes                #启动集群模式

cluster-config-file nodes-7001.conf #集群内部配置文件,改掉端口号

cluster-node-timeout 15000        #节点超时时间,单位:毫秒

 

同样配置下7004端口,只要把端口和pid文件还有cluster nodes改成7004

[root@redis1 redis]# cp redis-cluster/7001/redis-7001.conf redis-cluster/7004/redis-7004.conf

[root@redis1 redis]# vim redis-cluster/7004/redis-7004.conf

Redis2节点

[root@redis2 redis]# cd /usr/local/redis/

[root@redis2 redis]# mkdir -p redis-cluster/{7002,7005}

配置文件修改下端口同上

Redis3节点

[root@redis3 redis]# cd /usr/local/redis/

[root@redis3 redis]# mkdir -p redis-cluster/{7003,7006}

配置文件修改下端口同上

 

开通防火墙

在节点1上开通7001和7004,其他节点开通各自对应的端口,并且需要开通群集总线端口

集群总线端口为redis客户端连接的端口 + 10000

如redis端口为6379

则集群总线端口为16379

故,所有服务器的点需要开通redis的客户端连接端口和集群总线端口

不开通总线端口会发现到时候集群创建的时候一直显示join

[root@redis1 redis]# firewall-cmd –permanent –zone=public –add-port=7001/tcp

[root@redis1 redis]# firewall-cmd –permanent –zone=public –add-port=7004/tcp

[root@redis1 ~]# firewall-cmd –permanent –zone=public –add-port=17001/tcp

[root@redis1 ~]# firewall-cmd –permanent –zone=public –add-port=17004/tcp

[root@redis1 redis]# firewall-cmd –reload

启动每个节点

在redis1上

[root@redis1 redis]# redis-server /usr/local/redis/redis-cluster/7001/redis-7001.conf

[root@redis1 redis]# redis-server /usr/local/redis/redis-cluster/7004/redis-7004.conf

在redis2上

redis-server /usr/local/redis/redis-cluster/7002/redis-7002.conf

redis-server /usr/local/redis/redis-cluster/7005/redis-7005.conf

在redis3上

redis-server /usr/local/redis/redis-cluster/7003/redis-7003.conf

redis-server /usr/local/redis/redis-cluster/7006/redis-7006.conf

检查服务

检查各redis节点启动情况

redis是否启动成功和监听端口

[root@redis1 ~]# ps -ef | grep redis

[root@redis1 ~]# netstat -tnlp | grep redis

redis-trib.rb环境准备(只需在一台机器上执行此步骤)

Redis 官方提供了 redis-trib.rb 这个工具,就在解压目录的 src 目录中,第三步中已将它复制到 /usr/local/bin 目录中,可以直接在命令行中使用了。使用下面这个命令即可完成安装。

[root@redis1 redis]# cd /usr/local/redis/src/

[root@redis1 src]# cp redis-trib.rb /usr/local/bin/

redis-trib.rb是采用Ruby实现的Redis集群管理工具。内部通过Cluster相关命令帮助我们简化集群创建、检查、槽迁移和均衡等常见操作,使用之前需要安装Ruby依赖环境

安装ruby

[root@redis1 src]# yum -y install ruby ruby-devel rubygems rpm-build

我们需要换下源来升级下ruby,默认的是2.0的版本太老了,redis需要2.2以上的版本,否则报下面的错误

升级ruby

需要解决上面的报错先安装rvm,在升级ruby。

先执行一条官方https://rvm.io/上面的命令

gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB

在执行一条

\curl -sSL https://get.rvm.io | bash -s stable

上面表示执行成功

[root@redis1 yum.repos.d]# source /etc/profile.d/rvm.sh

List一下可以安装的版本

[root@redis1 yum.repos.d]# rvm list known

安装ruby 2.4.1

[root@redis1 yum.repos.d]# rvm install 2.4.1

这部可能要等一会,速度很慢,国外网站下载来的

[root@redis1 yum.repos.d]# rvm use 2.4.1

[root@redis1 yum.repos.d]# rvm remove 2.0.0

[root@redis1 yum.repos.d]# ruby –version

安装gem

[root@redis1 src]# gem install redis

执行redis-trib.rb命令

[root@redis1 ~]# redis-trib.rb create –replicas 1 192.168.44.10:7001 192.168.44.11:7002 192.168.44.12:7003 192.168.44.10:7004 192.168.44.11:7005 192.168.44.12:7006

–replicas参数指定集群中每个主节点配备几个从节点,这里设置为1。

这里因为测试,只用了3台机器,如果部署节点使用不同的IP地址,redis-trib-rb会尽可能保证主从节点不分配在同一台机器下,因此会重新排序节点表顺序。节点列表顺序用于确定主从角色,先主节点之后是从节点。

创建过程中首先会给出主从节点角色分配的计划,如下图:

输入yes

报错解决方法

安装的时候由于防火墙问题,导致群集第一次启动失败,然后再次启动报错

删除aof,nodes.conf,rdb的文件还是报错

最后在每个节点上执行了下面的命令终于成功

redis-cli -p 端口号-h 主机物理地址 FLUSHALL

redis-cli -p 端口号-h 主机物理地址 CLUSTER RESET SOFT