Redis集群搭建

钢枪 1年前 ⋅ 1167 阅读

 

1.获取redis资源 

  wget http://download.redis.io/releases/redis-4.0.8.tar.gz

2.解压

  tar xzvf redis-4.0.8.tar.gz

3.安装

  cd redis-4.0.8

  make

  cd src

  make install PREFIX=/usr/local/redis

4.环境准备

        yum install -y wget gcc
        systemctl stop firewalld.service
        systemctl disable firewalld.service 

5.编译

         cd /usr/local/redis
         make MALLOC=libc
         make install 

以上如在make时报错可使用如下命令来解决, 根据报错类型不同, 选择安装以下包:

         yum install -y gcc

         yum install -y tcl

如果没有etc目录

        mkdir /usr/local/redis/etc

切换到解压的redis 路径下执行

        cp redis.conf /usr/local/redis/etc

6.配置redis为后台启动

    vi /usr/local/redis/etc/redis.conf //将daemonize no 改成daemonize yes

7.redis加入到开机启动

  vi /etc/rc.local //在里面添加内容:/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf (意思就是开机调用这段开启redis的命令)

8.开启redis

        /usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf 

(下面要配集群记得关掉) 

9.redis-cli,redis-server拷贝到bin下,让redis-cli指令可以在任意目录下直接使用

    cp /usr/local/redis/bin/redis-server /usr/local/bin/

         cp /usr/local/redis/bin/redis-cli /usr/local/bin/

10.创建集群文件

        mkdir /usr/local/redis-cluster/

        mkdir /usr/local/redis-cluster/7001

        mkdir /usr/local/redis-cluster/7002

        mkdir /usr/local/redis-cluster/7003

        mkdir /usr/local/redis-cluster/7004

        mkdir /usr/local/redis-cluster/7005

        mkdir /usr/local/redis-cluster/7006

        mkdir /usr/local/redis-cluster/7001/data

        mkdir /usr/local/redis-cluster/7002/data

        mkdir /usr/local/redis-cluster/7003/data

        mkdir /usr/local/redis-cluster/7004/data

       mkdir /usr/local/redis-cluster/7005/data

       mkdir /usr/local/redis-cluster/7006/data

11.设置集群各个节点

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

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

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

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

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

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

       修改配置文件文件,最小化修改配置


下面为需要修改的配置项以及说明

port 7001 # 客户端连接端口
bind 192.168.220.11 #实例绑定的IP地址
dir /opt/redis/cluster/7001/data # redis实例数据配置存储位置
daemonize yes # 是否以后台进程的方式启动redis实例
pidfile pidfile /var/run/redis_7001.pid # 指定该进程pidfile
cluster-enabled yes # 开启集群模式
cluster-config-file # 集群中该实例的配置文件,该文件会在data目录下生成
appendonly yes # 开启aop日志
protected-mode no # 关闭保护模式
requirepass cyclone # master开启密码保护
masterauth cyclone # replica同master交互密码

这里给大家一个快速配置的连接,下载下来

拷贝一下 要修改端口 ip 等参数 即可

http://39.101.220.192:8090/redis-cluster.rar

12.配Redis启动的环境变量

  1.vi /etc/profile

  2.然后在文件最后面添加export PATH=$PATH:/path

       path 代表安装redis-cli 路径

       或者直接把下面两句话贴进去 

  export REDIS_HOME=/usr/local/redis/

  export PATH=$PATH:$REDIS_HOME/src

 

  3.退出(ESC)保存::wq

  4.重新加载/etc/profile:#source /etc/profile

13.依次启动redis实例

redis-server /usr/local/redis-cluster/7001/redis.conf
redis-server /usr/local/redis-cluster/7002/redis.conf
redis-server /usr/local/redis-cluster/7003/redis.conf
redis-server /usr/local/redis-cluster/7004/redis.conf
redis-server /usr/local/redis-cluster/7005/redis.conf
redis-server /usr/local/redis-cluster/7006/redis.conf

14.后期可以写成一键起停脚本

shutdown-all.sh

ps -ef | grep redis-server | awk '{print $2}' | xargs kill -9

ps -ef | grep redis

start-all.sh

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

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

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

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

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

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

ps -ef | grep redis-server

 

给脚本添加权限

chmod +x start-all.sh

chmod +x shutdown-all.sh

 

ok,至此6个redis节点启动成功,接下来正式开启搭建集群,以上都是准备条件。大家不要觉得图片多看起来冗长所以觉得麻烦,其实以上步骤也就一句话的事情:创建6个redis实例(6个节点)并启动。

要搭建集群的话,需要使用一个工具(脚本文件),这个工具在redis解压文件的源代码里。因为这个工具是一个ruby脚本文件,所以这个工具的运行需要ruby的运行环境,就相当于java语言的运行需要在jvm上。所以需要安装ruby,指令如下

 

15.安装ruby运行环境

     yum install ruby

然后需要把ruby相关的包安装到服务器,我这里用的是redis-3.0.0.gem,大家需要注意的是:redis的版本和ruby包的版本最好保持一致。

我这里有两个下载包,那个都可以用 如何和你的不匹配需要你在官网下载

http://39.101.220.192:8090/redis-4.0.0.gem

http://39.101.220.192:8090/redis-4.1.3.gem

官网:https://rubygems.org/gems/redis/versions

16.安装你选择的安装包

     gem install redis-3.0.0.gem

17.上一步中已经把ruby工具所需要的运行环境和ruby包安装好了,接下来需要把这个ruby脚本工具复制到usr/local/redis-cluster目录下即redis/src目录下的redis-trib.rb文件。找到之前解压redis安装包以后的目录执行:

     cp redis-trib.rb /usr/local/redis-cluster

18.如果一切顺利然后使用该脚本文件搭建集群,指令如下  

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

注意:此处大家应该根据自己的服务器ip输入对应的ip地址!

 

19.中途有个地方需要手动输入yes即可

20.也有不顺利的时候比如无法识别RVM 

这就需要通过RVM方式安装管理Ruby

Ruby是一种动态的,面向对象的编程语言,专注于简单性和生产力。RVM(Ruby Version Manager)是一个命令行工具,可以轻松的安装、管理Ruby环境。

当前系统环境Centos7.x

1、安装依赖

yum install gcc-c++ patch readline readline-devel zlib zlib-devel libyaml-devel libffi-devel openssl openssl-devel make bzip2 autoconf automake libtool bison sqlite-devel curl

2、安装RVM

gpg2 --keyserver hkp://pool.sks-keyservers.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E37D2BAF1CF37B13E2069D6956105BD0E739499BDB 



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

3、加载RVM环境

source /etc/profile.d/rvm.sh

rvm reload

4、检查依赖项

rvm requirements run

5、安装Ruby(rvm list known)可以进行版本查看

rvm install 2.6

6、设置默认的Ruby版本

rvm use 2.6 –default
7、验证当前Ruby版本

ruby -v

ruby 2.6.3p62 (2019-04-16 revision 67580) [x86_64-linux]

 

20.查看当前集群信息

    redis-cli -h 43.242.34.164 -c -p 7006

 

cluster info

cluster nodes

21.常见问题

(1)执行./redis-trib.rb create --replicas 1 47.106.219.251:7001 47.106.219.251:7002 47.106.219.251:7003 47.106.219.251:7004 47.106.219.251:7005 47.106.219.251:7006

本节点下的db文件删除。删除nodes.节点

重启继续尝试

如果还不行

进入节点: redis-cli -h 43.242.34.164 -c -p 7006

执行:flushdb

(2) java连接时数据库密码异常

密码设置(推荐)
方式一:修改所有Redis集群中的redis.conf文件加入: 

masterauth passwd123

requirepass passwd123

说明:这种方式需要重新启动各节点

 

全部评论: 0

    我有话说: