Redis CLuster(redis集群)

  准备6台机器,三主三从 ,Redis CLuster 是自带选举功能的不需要哨兵

  演示IP:

      master:192.168.1.4,192.168.1.5,192.168.1.6

      slave:   192.168.1.7,192.168.1.8,192.168.1.9

      redis端口:6379,redis集群端口:16379,redis哨兵端口:26379 

  创建Redis Cluster集群的前提:

      1. 每个 redis node 节点采用相同的硬件配置、相同的密码
      2. 每个节点必须开启的参数
          cluster-enabled yes #必须开启集群状态,开启后 redis 进程会有 cluster 显示
          cluster-config-file nodes-6380.conf #此文件有 redis cluster 集群自动创建和维护,不需要任何手动操作
      3. 所有 redis 服务器必须没有任何数据
      4. 先启动为单机 redis 且没有任何 key value

  一、配置6台redis服务器的yum源

    1、进入yum源所在目录

cd /etc/yum.repos.d/

    2、下载阿里云的base源(有base光盘也可以用本地源)

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

    3、安装epel 源

yum install epel-release -y

    4、清除原来的yum源

yum clean all

  二、配置6台redis服务器(默认master)

    1、安装redis包

yum install redis -y

#这里使用的都是epel源中带的redis3.2.12版本,编译的最新的在其他博客中也有讲,步骤基本相同

    2、修改redis配置文件

vim /etc/redis.conf

    2.1、添加密码

1 # masterauth <master-password>
2 修改为
3  masterauth 123456

#一定要设置密码,没有密码的话可以直接通过Telnet连接到redis上,直接做增删改操作,这里为了演示,密码简单一点

    2.2、打开redis cluster节点

 

1 # cluster-enabled yes
2 修改为
3 cluster-enabled yes
4 ------------------
5 # cluster-config-file nodes-6379.conf
6 修改为:
7 cluster-config-file nodes-6379.conf

 

#表示开启cluster节点,开启后 redis 进程会有 cluster 显示

    2.3、打开守护进程,后台执行,(默认前台执行)

1 daemonize no
2 修改为
3 daemonize yes

    2.4、修改监听端口为0.0.0.0

1 bind 127.0.0.1
2 修改为
3 bind 0.0.0.0

    3、开启redis服务

redis-server /etc/redis.conf 

#必须带着配置文件开启

    4、检查redis cluster是否开启

    4.1、使用redis客户端连接

redis-cli 

    4.2、info查看信息

info

查看cluster-enabled 为1 表示开启集群服务,为0表示没开启集群服务(启动服务才能使用redis-cli连接进去)

# Cluster
cluster_enabled:1

  每一台redis服务器,必须是master ,cluster_enabled 必须是1 ,里面必须没有任何数据,有数据的话使用创建集群是加不进去的,使用FLUSHDB 清空当前数据库里所有信息,FLUSHALL 清空redis所有库所有数据

  三、创建集群

  Redis 3 和 4 版本:
    需要使用到集群管理工具 redis-trib.rb,这个工具是 redis 官方推出的管理 redis 集群的工具,集成在redis 的源码 src 目录下,是基于 redis 提供的集群命令封装成简单、便捷、实用的操作工具,redis-trib.rb是 redis 作者用 ruby 完成的,

     1、编译安装状态

cp /usr/local/src/redis-版本号/src/redis-trib.re /usr/bin/

    2、yum安装的需要手动安装ruby rubygems (编译安装的不用,)(只需要在redis集群中的任意一台上安装即可)

     2.1、安装gcc编译器和zlib依赖包

yum install gcc zlib-devel -y

    2.2、下载ruby包,默认yum源带的是2.0 的不行(测试2.3以上的版本都行)

wget https://cache.ruby-lang.org/pub/ruby/ruby-2.5.0.tar.gz

    2.3、解压缩ruby

tar xf ruby-2.5.0.tar.gz 

     2.4 进入ruby目录

cd ruby-2.5.0

     2.4、编译安装

1 [17:48:20 root@localhost ruby-2.5.0]#./configure 
2 [17:48:20 root@localhost ruby-2.5.0]#make
3 [17:49:20 root@localhost ruby-2.5.0]#make install

    2.5、安装redis模块,

    2.5.1、下载ruby包

wget https://rubygems.org/downloads/redis-4.2.3.gem

     2.5.2、查看ruby版本

1 [11:57:23 root@localhost ruby-2.5.0]#ruby -v
2 ruby 2.5.0p0 (2017-12-25 revision 61468) [x86_64-linux]

    2.5.3、查找gem 命令在哪,(默认直接可以使用gem命令)

[11:58:08 root@localhost ruby-2.5.0]#find / -name gem
/root/ruby-2.5.0/spec/rubyspec/fixtures/code/gem
/root/ruby-2.5.0/spec/ruby/fixtures/code/gem
/root/ruby-2.5.0/bin/gem
/usr/share/locale/gem
/usr/local/bin/gem

    2.5.4、安装指定的redis模块(也可以直接安装gem install redis)

gem install -l redis-4.2.3.gem 

    3.1、下载redis-trib.rb命令

https://github.com/beebol/redis-trib.rb

这个我看别人是有的,但我安装3版本的时候一直没有,去github上找了个免费的可以用的

     3.2、安装git软件

yum install git -y

    3.3、克隆GitHub上的

git clone git://github.com/beebol/redis-trib.rb.git

    3.4、复制redis-trib.rb

cp redis-trib.rb /usr/bin/

    3.5、设置权限

chmod 777 /usr/bin/redis-trib.rb 

    4、创建集群

redis-trib.rb create --replicas 1 192.168.1.9:6379 192.168.1.8:6379 192.168.1.7:6379 192.168.1.6:6379 192.168.1.5:6379 192.168.1.4:6379

     4.1、

redis-trib.rb create --replicas 1 192.168.1.9:6379 192.168.1.8:6379 192.168.1.7:6379 192.168.1.6:6379 192.168.1.5:6379 192.168.1.4:6379
>>> Creating cluster
>>> Performing hash slots allocation on 6 nodes...
Using 3 masters:#创建了三个主节点
192.168.1.9:6379
192.168.1.8:6379
192.168.1.7:6379
Adding replica 192.168.1.6:6379 to 192.168.1.9:6379  ### 192.168.1.6是192.168.1.9的从节点
Adding replica 192.168.1.5:6379 to 192.168.1.8:6379
Adding replica 192.168.1.4:6379 to 192.168.1.7:6379
M: 73a51b03d3ae1ae60573924a36e35a4160ea2a8a 192.168.1.9:6379 # M表示master 主节点,S表示slave 从节点
   slots:0-5460 (5461 slots) master
M: bc591a36af254e510488ab184b0e638e7298ff6d 192.168.1.8:6379 ##M后的一串数字是随机生成的,在集群中,以ID号区分主机,不以IP地址区分
   slots:5461-10922 (5462 slots) master ## slots是按照顺序分的,每台上的应该是差不多的,也会有原因导致无序分配,
M: 7226c301d028168f22f60930db0bf8b4260c2905 192.168.1.7:6379
   slots:10923-16383 (5461 slots) master
S: 3bcd400f071643f814d45479bfc3a56612eca471 192.168.1.6:6379
   replicates 73a51b03d3ae1ae60573924a36e35a4160ea2a8a  ## 这里的ID就是master的ID
S: 7a1ad13e2d2e3ad84a5da2d001e1680fcf8b2255 192.168.1.5:6379
   replicates bc591a36af254e510488ab184b0e638e7298ff6d  ##slave节点是没有slots的,master宕机后会自动继承
S: d53b5724df5ae6f6f5305cebb419e6b5ec2a6096 192.168.1.4:6379
   replicates 7226c301d028168f22f60930db0bf8b4260c2905
Can I set the above configuration? (type 'yes' to accept): yes

##配置文件中dir /var/lib/redis这里定义了放在哪,这个配置就会保存在这个位置,配置文件自动生成,不需要手动更改

  

 ----------------------------------------------- ----------------------------------------------- ----------------------------------------------- ----------------------------------------------- ----------------------------------------------- ----------------------------------------------- ----------------------------------

修改密码:

 vim /usr/local/lib/ruby/gems/2.5.0/gems/redis-版本号/lib/redis/client.rb #修改密码为redis 登录密码 

 redis5版本

redis-cli -a 123456  --cluster create 192.168.1.4:6379   192.168.1.5:6379  192.168.1.6:6379   192.168.1.7:6379  1 
92.168.1.8:6379   192.168.1.9:63879 --cluster-replicas 1  

 

 


报错如下:

  ERROR: Loading command: install (LoadError)
  cannot load such file -- zlib
  ERROR: While executing gem ... (NoMethodError)
  undefined method `invoke_with_build_args' for nil:NilClass

 解决办法:

yum install zlib-devel -y

进入对应的ruby目录下

cd /root/ruby-2.5.0/ext/zlib

执行

[12:41:58 root@localhost zlib]#ruby extconf.rb 
checking for deflateReset() in -lz... yes
checking for zlib.h... yes
checking for crc32_combine() in zlib.h... yes
checking for adler32_combine() in zlib.h... yes
checking for z_crc_t in zlib.h... yes
creating Makefile

编译

make

报错如下:

make: *** No rule to make target `/include/ruby.h', needed by `zlib.o'.  Stop.

解决办法:

[12:44:17 root@localhost zlib]#vim Makefile

找到下面这行(最下面几行)

zlib.o: $(top_srcdir)/include/ruby.h

替换成

zlib.o: ../../include/ruby.h

执行:

[12:47:14 root@localhost zlib]#make
compiling zlib.c
linking shared-object zlib.so
[12:47:16 root@localhost zlib]#make install
/usr/bin/install -c -m 0755 zlib.so /usr/local/lib/ruby/site_ruby/2.5.0/x86_64-linux

重新安装:

[12:47:32 root@localhost ~]#gem install -l redis-4.2.3.gem 
Successfully installed redis-4.2.3
Parsing documentation for redis-4.2.3
Installing ri documentation for redis-4.2.3
Done installing documentation for redis after 0 seconds
1 gem installed

 

 

 

 

 

 

 

 

 

 

 


 

也可以直接将目录打包到其他服务器上

  1、关闭进程

kill -9 `ps -ef|grep redis|tr -s " " |cut -d" " -f2`

  2、删除redis的data里的aof和rdb文件

rm -rf /apps/redis/data/*

  3、删除run里的pid数据

rm -rf /apps/redis/run/*

  4、删除日志文件

rm -rf /apps/redis/logs/*

  5、将redis打包

tar zcvf redis.tar.gz /apps/redis/*

/apps/redis/ 是我编译安装的位置,data这些文件夹都是我自己创建的

  6、将redis打包压缩包拷贝到使用的机器上

scp redis.tar.gz root@192.168.1.10:/apps/redis/

 

bc591a36af254e510488ab184b0e638e7298ff6d 
上一篇:JetBrains RubyMine 2021for Mac(Ruby代码编辑器)


下一篇:最佳 Web 编程语言都有哪些?