linux 安装redis集群

一、单节点部署redis集群


1、创建redis集群目录    

    在同一个主机中部署三主三从的redis集群,redis节点为7001-7006。

    新建redis集群目录:mkdir -p /usr/local/redis-cluster,在该目录下创建6个目录:7001-7006,分别为6个redis节点的工作目录:

    

mkdir -p 7001 7002 7003 7004 7005 7006

2、安装gcc


    redis进行源码安装,先要安装gcc,再make redis。执行以下命令安装redis:

yum -y install gcc gcc-c++ libstdc++-devel

3、安装ruby
    执行以下命令安装ruby2.5,如果ruby版本过低,无法启动redis集群。

    yum install -y centos-release-scl-rh
    yum install -y rh-ruby25
    scl enable rh-ruby25 bash

    检验并查看ruby版本:

 ruby -v

    最后执行如下命令:

gem install redis

4、下载并安装redis节点
    从redis官网Redis下载redis最新版本redis-4.0.11。

解压redis:

  tar -zxvf redis-4.0.11.tar.gz

    创建redis安装目录:

    mkdir -p /usr/local/redis

    进入解压后的redis-4.0.11目录,执行make命令,将redis安装进/usr/local/redis:

    make install PREFIX=/usr/local/redis

    将redis配置文件redis.conf复制到集群目录下:

    cp redis.conf /usr/local/redis-cluster

    将redis安装后的bin目录复制进6个redis节点工作目录中:

    cp -r /usr/local/redis/bin /usr/local/redis-cluster/7001
    cp -r /usr/local/redis/bin /usr/local/redis-cluster/7002
    cp -r /usr/local/redis/bin /usr/local/redis-cluster/7003
    cp -r /usr/local/redis/bin /usr/local/redis-cluster/7004
    cp -r /usr/local/redis/bin /usr/local/redis-cluster/7005
    cp -r /usr/local/redis/bin /usr/local/redis-cluster/7006

    最后配置6个节点的配置文件redis.conf,配置修改如下:

#bind 127.0.0.1
protected-mode no
daemonize yes
cluster-enabled yes
cluster-node-timeout 15000


    屏蔽限制本地访问,在bind 127.0.0.1之前加#(同机器下,可能不需要改,未做测试)。

    将redis.conf文件复制进7001-7006中:

 cp redis.conf 7001
 cp redis.conf 7002
 cp redis.conf 7003
 cp redis.conf 7004
 cp redis.conf 7005
 cp redis.conf 7006

    分别修改6个节点中的redis.conf中的port端口配置,分别配置成7001-7006。

    配置好redis.conf后,便可以启动6个redis节点,分别在6个节点目录下执行如下命令启动6个节点:

    ./bin/redis-server ./redis.conf

    执行ps -ef|grep redis可查看启动的6个节点。

5、启动redis集群
    进入最开始解压出来的redis-4.0.11/src目录下,执行如下命令启动集群:

    ./redis-trib.rb create --replicas 1 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 127.0.0.1:7006

6、验证集群
    进入任一redis节点,如进入7001节点:

    进入7001目录:

    cd /usr/local/redis-cluster/7001

    登录7001节点:

    ./bin/redis-cli -c -p 7001

    写入一个数据:

    set redis cluster

    之后进入其他节点,查看redis中的数据,如登录7005节点:

    ./bin/redis-cli -c -p 7005

    查看redis数据:

    get redis

二、多节点部署redis集群


1、服务器集群


    三个节点都关闭防火墙:

    chkconfig iptables off
    systemctl stop iptables
    systemctl disable iptables
    systemctl stop firewalld
    systemctl disable firewalld

    查看防火墙状态:

    systemctl status iptables
    systemctl status firewalld

2、安装gcc
    如上。

3、安装ruby
    如上。

4、配置redis节点
(1)、node-i(192.168.0.111)

    (a).安装redis

    创建redis目录:

    mkdir -p /usr/local/redis-i
    mkdir -p /usr/local/redis-cluster/7001 /usr/local/redis-cluster/7002

    解压redis:

    tar -zxvf redis-4.0.11.tar.gz

    进入redis-4.0.11目录,执行make命令,将redis安装在/usr/local/redis-i目录下:

    make install PREFIX=/usr/local/redis-i

    复制redis.conf到redis集群节点目录下:

    cp redis.conf /usr/local/redis-cluster/7001
    cp redis.conf /usr/local/redis-cluster/7002

    进入/usr/local/redis-i目录,将生成的 bin目录复制到redis集群节点目录下:

    cp -r bin /usr/local/redis-cluster/7001
    cp -r bin /usr/local/redis-cluster/7002

    分别修改节点7001、7002的配置文件redis.conf,修改如下:

    7001:

bind 192.168.0.111
protected-mode no
port 7001
daemonize yes
cluster-enabled yes
cluster-node-timeout 15000


    7002:

bind 192.168.0.111
protected-mode no
port 7002
daemonize yes
cluster-enabled yes
cluster-node-timeout 15000


    (b).启动redis节点

    分别启动7001和7002节点:

    分别在/usr/local/redis-cluster/7001/usr/local/redis-cluster/7002目录,执行如下命令: 

    ./bin/redis-server ./redis.conf

    通过ps命令查看启动的redis节点:

    ps -ef|grep redis

(2)、node-ii(192.168.0.133)

    (a).安装redis

    创建redis目录:

    mkdir -p /usr/local/redis-ii
    mkdir -p /usr/local/redis-cluster/7003 /usr/local/redis-cluster/7004

    解压redis:

    tar -zxvf redis-4.0.11.tar.gz

    进入redis-4.0.11目录,执行make命令,将redis安装在/usr/local/redis-ii目录下:

    make install PREFIX=/usr/local/redis-ii

    复制redis.conf到redis集群节点目录下:

    cp redis.conf /usr/local/redis-cluster/7003
    cp redis.conf /usr/local/redis-cluster/7004

    进入/usr/local/redis-ii目录,将生成的 bin目录复制到redis集群节点目录下:

    cp -r bin /usr/local/redis-cluster/7003
    cp -r bin /usr/local/redis-cluster/7004

    分别修改节点7003、7004的配置文件redis.conf,修改如下:

    7003:

bind 192.168.0.133
protected-mode no
port 7003
daemonize yes
cluster-enabled yes
cluster-node-timeout 15000


    7004:

bind 192.168.0.133
protected-mode no
port 7004
daemonize yes
cluster-enabled yes
cluster-node-timeout 15000


    (b).启动redis节点

    分别启动7003和7004节点:

    分别在/usr/local/redis-cluster/7003/usr/local/redis-cluster/7004目录,执行如下命令: 

    ./bin/redis-server ./redis.conf

    通过ps命令查看启动的redis节点:

    ps -ef|grep redis

(3)、node-iii(192.168.0.155)

    (a).安装redis

    创建redis目录:

    mkdir -p /usr/local/redis-iii
    mkdir -p /usr/local/redis-cluster/7005 /usr/local/redis-cluster/7006

    解压redis:

    tar -zxvf redis-4.0.11.tar.gz

    进入redis-4.0.11目录,执行make命令,将redis安装在/usr/local/redis-iii目录下:

    make install PREFIX=/usr/local/redis-iii

    复制redis.conf到redis集群节点目录下:

    cp redis.conf /usr/local/redis-cluster/7005
    cp redis.conf /usr/local/redis-cluster/7006

    进入/usr/local/redis-iii目录,将生成的 bin目录复制到redis集群节点目录下:

    cp -r bin /usr/local/redis-cluster/7005
    cp -r bin /usr/local/redis-cluster/7006

    分别修改节点7005、7006的配置文件redis.conf,修改如下:

    7005:

bind 192.168.0.155
protected-mode no
port 7005
daemonize yes
cluster-enabled yes
cluster-node-timeout 15000


    7006:

bind 192.168.0.155
protected-mode no
port 7006
daemonize yes
cluster-enabled yes
cluster-node-timeout 15000


    (b).启动redis节点

    分别启动7005和7006节点:

    分别在/usr/local/redis-cluster/7005/usr/local/redis-cluster/7006目录,执行如下命令: 

    ./bin/redis-server ./redis.conf

    通过ps命令查看启动的redis节点:

    ps -ef|grep redis

5、启动redis集群
    以上步骤完成,6个redis节点都已经启动完成。现在启动redis集群,在任一服务器上都可以启动集群,进入最开始解压出来的redis-4.0.11目录的src子目录,执行如下命令启动redis集群:

    ./redis-trib.rb create --replicas 1 192.168.0.111:7001 192.168.0.111:7002 192.168.0.133:7003 192.168.0.133:7004 192.168.0.155:7005 192.168.0.155:7006

6、验证集群
    从任一主机进入任一redis节点,如从192.168.0.111主机中进入7001节点:

    进入7001目录:

    cd /usr/local/redis-cluster/7001

    登录7001节点:

    ./bin/redis-cli -c -h 192.168.0.111 -p 7001

    写入一个数据:

    set redis cluster

    之后进入其他节点,查看redis中的数据,如登录7005节点:

    ./bin/redis-cli -c -h 192.168.0.155 -p 7005

    查看redis数据:

    get redis

三、第一次搭建启动集群 或者集群宕机后,再次重启遇到的问题总结

redis启动的命令放在/data/redis-4.0.11下面

startredis6379.sh 内容如下:

/xxx/redis-4.xxx/src/redis-server ./redis6379.conf

startredis7379.sh 内容如下:

/xxx/redis-4.xxx/src/redis-server ./redis7379.conf


redis集群启动步骤:


1、启动6379节点 startredis6379.sh
2、启动7379节点 startredis7379.sh
3、启动集群:startcluster.sh

集群启动失败归类:


1、如果提示失败如下:

[ERR] Sorry, can't connect to node xxx.xx.xx.xx:6379

原因:原因是因为6379节点没有启动,就先启动集群了
解决:先启动6379节点


2、如果提示失败如下:

[ERR] Node xxx.xx.xx.xx:6379 is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0.


原因:data文件夹下面的nodes-6379.conf里面已经绑定了主从关系,

nodes-6379.conf内容如下:

b01a658979a9eeffda2e4a806855d9d3efe54382 xxx.xx.xx.95:7379@17379 slave aca67d99d9268dcf0de06424f60a478a9c8a5cdc 0 1586262980000 4 connected
64dd6ff244534f2759234f449cf64c6d766027c1 xxx.xx.xx.95:6379@16379 slave f65f3c8d913bc26813926af87912273481427db3 0 1586262980000 7 connected
aca67d99d9268dcf0de06424f60a478a9c8a5cdc xxx.xx.xx.94:6379@16379 master - 0 1586262978000 2 connected 5461-10922
6310b8d913946e4456c9013e8476e93c7aa2d5f2 xxx.xx.xx.94:7379@17379 slave d778fa046ab0a1c01225fea0a3762b876fe9dbdc 0 1586262980000 6 connected
f65f3c8d913bc26813926af87912273481427db3 xxx.xx.xx.93:7379@17379 master - 0 1586262980418 7 connected 10923-16383
d778fa046ab0a1c01225fea0a3762b876fe9dbdc xxx.xx.xx.93:6379@16379 myself,master - 0 1586262980000 1 connected 0-5460
vars currentEpoch 7 lastVoteEpoch 7

解决:将nodes-6379.conf去掉即可(比如将data重命名为data1)(启动集群时会检测,如果不存在该文件,自动生成一份新的)

搭建过程中注意的问题:


3、记得redis.conf中的密码
1)requirepass xxx
2)masterauth xxx

4、 启动集群的两种方式:

redis老版本实用这种方式

/opt/redis-4.0.11/src/redis-trib.rb  create  --replicas  1 xxx.xx.xx.xx:6379 xxx.xx.xx.xx:6379 xxx.xx.xx.xx:6379 xxx.xx.xx.xx:7379  xxx.xx.xx.xx:7379 xxx.xx.xx.xx:7379

redis新版本实用

/usr/local/redis/bin/redis-cli --cluster create xxx.xx.xx.xx:6379 xxx.xx.xx.xx:6379 xxx.xx.xx.xx:6379 xxx.xx.xx.xx:7379 xxx.xx.xx.xx:7379 xxx.xx.xx.xx:7379 --cluster-replicas 1 -a password(替换成对应的密码)

参考博客:CentOS 7 搭建redis 4.0.11集群_sealir的博客-优快云博客

### 如何在Linux安装和配置Redis集群 #### 准备工作 为了确保顺利安装和配置Redis集群,在开始之前需确认已准备好必要的软件包。通过`yum`工具可以快速完成这些依赖项的安装: ```bash yum -y install zlib ruby rubygems ``` 这一步骤会自动下载并安装zlib库以及Ruby解释器及其扩展管理工具——RubyGems。 #### 编译安装Redis服务端程序 接下来编译并安装指定版本的Redis到自定义路径下,这里以/usr/local/redis6为例: ```bash make && make PREFIX=/usr/local/redis6 install ``` 此命令将源码编译成可执行文件,并将其放置于设定的目标位置内[^1]。 #### 创建节点配置文件夹结构 对于每一个参与构成分布式系统的实例而言,都需要单独设立对应的存储空间来保存各自的设置参数和其他运行时数据。下面展示了一个针对名为node-27001节点创建相应目录的方法: ```bash mkdir -p /home/opt/redis-cluster/node-27001/conf ``` 该指令会在/home/opt/redis-cluster路径下建立一个新的子文件夹用于容纳特定编号服务器的相关资料[^2]。 #### 解决可能遇到的问题 如果在实际操作过程中遇到了类似“没有找到ruby”的提示信息,则可能是由于环境变量未更新所引起的。此时可以通过刷新全局shell配置文件的方式解决问题: ```bash source /etc/profile ``` 这条语句能够使得当前终端立即应用最新的PATH等重要环境属性变化情况,从而避免因为找不到某些外部命令而导致的操作失败现象发生[^3]。 #### 使用Docker容器化部署方案 考虑到安全性与隔离性的需求,也可以考虑采用基于Docker镜像的方式来启动各个独立的服务进程。具体做法如下所示: ```bash docker exec -it redis-6380 /bin/bash ``` 上述代码片段允许用户进入到正在运行中的名称为redis-6380的容器内部环境中继续后续的工作流程[^4]。 #### 构建完整的集群拓扑架构 当所有的前置条件都满足之后就可以着手准备正式组建一个多副本冗余模式下的键值数据库网络了。假设现在拥有六个不同主机地址上的实例资源可供调配,那么只需要一条简单的CLI客户端调用来实现整个过程: ```bash redis-cli --cluster create \ ip:6380 ip:6381 ip:6382 ip:6390 ip:6391 ip:6392 \ --cluster-replicas 1 ``` 请注意替换其中的IP部分为自己真实的物理或虚拟设备网卡接口对外暴露出来的公网IPv4数值;另外还要记得根据实际情况调整各成员间相互复制的比例系数(即--cluster-replicas后面的数字),以便达到最佳性能表现效果。 #### 校验最终成果质量 最后不要忘记验证新建成的数据管理系统是否正常运作良好。借助内置诊断功能可以轻松获取有关整体健康状况的关键指标报告: ```bash redis-cli -c -p 6380 cluster info ``` 以上述方式连接至任意一台主控单元后即可查询其维护着哪些槽位范围内的条目数量统计概况以及其他辅助说明文字等内容。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值