离线安装 redis 集群(5.0以下版本)

前言:

    要搭建一个最简单的 redis 集群,我们至少需要6个节点:3个 Master 和3个 Slave。那为什么需要3个 Master 呢?其实就是一个“铁三角”的关系,当1个 Master 下线的时候,其他2个 Master 和对应的 Salve 立马就能顶替上去,确保集群能够正常使用,如果你之前了解 Mongodb/Hadoop/Strom 这些的话,你就很容易目标一般分布式的最低要求基数个数节点,这样便于选举(少数服从多数的原则)。本文当中,我们就偷下懒,在一台 Linux 虚拟机上搭建6个节点的 redis 集群(实际真正生产环境,需要3台 Linux 服务器分布存放3个 Master)实际上,Redis 集群的操作在后文你可以看到是通过 Ruby 脚本来完成的,因此我们需要安装 Ruby 相关的 RPM 包,以及 Redis 和 Ruby 的接口包。

1、Ruby离线安装:

    Ruby 安装包可以通过去官网下载:http://www.ruby-lang.org/en/downloads/,这里使用的版本是:ruby-2.6.6。在安装之前,请确保你 root 权限,将下载的 Ruby 安装包上传到服务器当中,使用 Xftp 可以很方便的将文件传入到 linux 服务器上。安装步骤如下:

[root@localhost ~]# cd /usr/local/src/
[root@localhost src]# tar zxf ruby-2.6.6.tar.gz
[root@localhost src]# cd ruby-2.6.6/
[root@localhost ruby-2.6.6]# ./configure --prefix=/usr/local/ruby
[root@localhost ruby-2.6.6]# make  &&  make install

    配置 Ruby 环境变量:

[root@localhost ruby-2.6.6]# vim /etc/profile
# 在文件最后添加一行:
export PATH=/usr/local/ruby/bin:$PATH
[root@localhost ruby-2.6.6]# source /etc/profile
[root@localhost ruby-2.6.6]# ruby -v

2、离线安装RubyGems

    RubyGems 安装包可以通过去官网下载:https://rubygems.org/pages/download,这里使用的版本是:rubygems-3.2.2.tgz。安装步骤如下:

[root@localhost ruby-2.6.6]# cd ../
[root@localhost src]# tar zxf rubygems-3.2.2.tgz
[root@localhost src]# cd rubygems-3.2.2/
[root@localhost rubygems-3.2.2]# ruby setup.rb
这里提示了报错:cannot load such file -- zlib (LoadError)

    这里提示了 “cannot load such file -- zlib (LoadError)” 报错,根据报错显示可能是需要安装 zlib 工具,那么我们就提前安装一下 zlib 工具,因为后面也需要安装。zlib 工具安装包官方下载地址:http://www.zlib.net安装步骤如下:

[root@localhost rubygems-3.2.2]# cd ../
[root@localhost src]# tar -zxf zlib-1.2.11.tar.gz
[root@localhost src]# cd zlib-1.2.11/
[root@localhost zlib-1.2.11]# ./configure --prefix=/usr/local/zlib
[root@localhost zlib-1.2.11]# make && make install

    在 Ruby 安装包中安装配置 zlib 环境变量:

[root@localhost zlib-1.2.11]# cd ../ruby-2.6.6/ext/zlib/
[root@localhost zlib]# ruby extconf.rb --with-zlib-include=/usr/local/zlib/include/ --with-zlib-lib=/usr/local/zlib/lib
[root@localhost zlib]# vim Makefile
# 修改下面的一行配置:
zlib.o: $(top_srcdir)/include/ruby.h 修改成 zlib.o: ../../include/ruby.h
[root@localhost zlib]# make && make install

    zlib 工具已经安装好了,重新来执行一下安装 RubyGems 的命令:

[root@localhost rubygems-3.2.2]# ruby setup.rb

3、离线安装 Redis:

    Redis 安装包可以通过去官网下载:http://www.ruby-lang.org/en/downloads/,这里使用的版本是:redis-4.0.2。安装步骤如下:

[root@localhost rubygems-3.2.2]# cd ../
[root@localhost src]# tar zxf redis-4.0.2.tar.gz
[root@localhost src]# cd redis-4.0.2/
[root@localhost redis-4.0.2]# make PREFIX=/usr/local/redis install

    配置 redis 的环境变量,并启动验证:

[root@localhost redis-4.0.2]# vim /etc/profile
# 在文件最后添加一行:
export PATH=/usr/local/redis/bin:$PATH
[root@localhost redis-4.0.2]# source /etc/profile
[root@localhost redis-4.0.2]# redis-server redis.conf

4、配置 Redis 集群:

    因为前面提到我们需要6个节点的 redis 作为集群,所以我们在 redis 安装目录下用6个节点各自对应的端口数字来创建6个文件夹,分别用来存放6个节点的配置信息,比如:6381~6386。相关命令如下(注意删掉注释):

[root@localhost redis-4.0.2]# cd /usr/local/redis/
[root@localhost redis]# mkdir redis-cluster && cd redis-cluster
[root@localhost redis-cluster]# mkdir 638{1,2,3,4,5,6}
[root@localhost redis-cluster]# cat << EOF > 6381/redis.conf
protected-mode no
bind 0.0.0.0
port 6381    # 服务监听端口
daemonize yes    # 后台启动
dir /usr/local/redis/redis-cluster/6381/
pidfile /usr/local/redis/redis-cluster/6381/redis.pid
appendonly yes    # 启用守护进程
cluster-enabled yes    # 启用集群
cluster-config-file "nodes.conf"    # 关联集群的配置文件
cluster-node-timeout 5000    # 集群超时时间
cluster-require-full-coverage no    # 只要有结点宕机导致 16384 个槽没全被覆盖,整个集群就全部停止服务,所以一定要改为 no
EOF
[root@localhost redis
-cluster]# cat << EOF > 6382/redis.conf protected-mode no bind 0.0.0.0 port 6382 daemonize yes dir /usr/local/redis/redis-cluster/6382/ pidfile /usr/local/redis/redis-cluster/6382/redis.pid appendonly yes cluster-enabled yes cluster-config-file "nodes.conf" cluster-node-timeout 5000 cluster-require-full-coverage no EOF
[root@localhost redis
-cluster]# cat << EOF > 6383/redis.conf protected-mode no bind 0.0.0.0 port 6383 daemonize yes dir /usr/local/redis/redis-cluster/6383/ pidfile /usr/local/redis/redis-cluster/6383/redis.pid appendonly yes cluster-enabled yes cluster-config-file "nodes.conf" cluster-node-timeout 5000 cluster-require-full-coverage no EOF
[root@localhost redis
-cluster]# cat << EOF > 6384/redis.conf protected-mode no bind 0.0.0.0 port 6384 daemonize yes dir /usr/local/redis/redis-cluster/6384/ pidfile /usr/local/redis/redis-cluster/6384/redis.pid appendonly yes cluster-enabled yes cluster-config-file "nodes.conf" cluster-node-timeout 5000 cluster-require-full-coverage no EOF
[root@localhost redis
-cluster]# cat << EOF > 6385/redis.conf protected-mode no bind 0.0.0.0 port 6385 daemonize yes dir /usr/local/redis/redis-cluster/6385/ pidfile /usr/local/redis/redis-cluster/6385/redis.pid appendonly yes cluster-enabled yes cluster-config-file "nodes.conf" cluster-node-timeout 5000 cluster-require-full-coverage no EOF
[root@localhost redis
-cluster]# cat << EOF > 6386/redis.conf protected-mode no bind 0.0.0.0 port 6386 daemonize yes dir /usr/local/redis/redis-cluster/6386/ pidfile /usr/local/redis/redis-cluster/6386/redis.pid appendonly yes cluster-enabled yes cluster-config-file "nodes.conf" cluster-node-timeout 5000 cluster-require-full-coverage no EOF

    启动 redis 集群服务:

[root@localhost redis-cluster]# redis-server /usr/local/redis/redis-cluster/6381/redis.conf
[root@localhost redis-cluster]# redis-server /usr/local/redis/redis-cluster/6382/redis.conf
[root@localhost redis-cluster]# redis-server /usr/local/redis/redis-cluster/6383/redis.conf
[root@localhost redis-cluster]# redis-server /usr/local/redis/redis-cluster/6384/redis.conf
[root@localhost redis-cluster]# redis-server /usr/local/redis/redis-cluster/6385/redis.conf
[root@localhost redis-cluster]# redis-server /usr/local/redis/redis-cluster/6386/redis.conf

    查看 redis 启动进程与端口:

[root@localhost redis-cluster]# ps aux | grep redis
[root@localhost redis-cluster]# netstat -anltp | grep redis

5、离线安装redis与ruby的接口包:

    现在还缺少 redis 和 ruby 的接口,我们可以使用 gem 安装,因此我们需要下载对应 Redis 的 gem 安装包。Rubygems 的官网其实提供了 Redis 的 gem 包,我们可以直接去 https://rubygems.org/gems/redis/ 下载,这里下载的版本是:redis-4.2.1.gem。

    因为前面我们已经安装了 zlib 工具,所以这里就不用再次安装,只需要安装一下 Redis 集群交互时需要用到的 OpenSSL 依赖,其中 OpenSSL 下载地址为 https://www.openssl.org/source/,这里我们使用的 OpenSSL 是 openssl-1.1.0k 版本。安装步骤如下:

[root@localhost redis-cluster]# cd /usr/local/src/
[root@localhost src]# tar zxf openssl-1.1.0k.tar.gz
[root@localhost src]# cd openssl-1.1.0k/
[root@localhost openssl-1.1.0k]# ./config -fPIC --prefix=/usr/local/openssl enable-shared
[root@localhost openssl-1.1.0k]# ./config -t
[root@localhost openssl-1.1.0k]# make && make install

    OpenSSL 安装完成后,需要进入到 Ruby 安装包的 ruby-2.6.6/ext/openssl/ 目录下,像安装 zlib 一样安装配置 OpenSSL,相关命令如下:

[root@localhost openssl-1.1.0k]# cd ../ruby-2.6.6/ext/openssl/
[root@localhost openssl]# ruby extconf.rb --with-openssl-include=/usr/local/openssl/include/ --with-openssl-lib=/usr/local/openssl/lib

    一样的会在当前目录下生成一个 Makefile 文件,我们需要在 Makefile 文件开头的地方设置一下 "top_srcdir = ../..",然后再执行 make && make install 命令即可安装完成。相关命令如下:

[root@localhost openssl]# vim Makefile
[root@localhost openssl]# cat Makefile | grep "top_srcdir = ../.."
top_srcdir = ../..
[root@localhost openssl]# make && make install

    然后进入存放 "redis-4.2.1.gem" 包的目录下,执行相关命令就可以配置 redis 集群的。相关命令如下(执行时间可能比较长):

[root@localhost openssl]# cd /usr/local/src/
[root@localhost src]# gem install redis-4.2.1.gem

6、Ruby 完成 Redis 集群最后关联设置:

    因为 redis-5.0 以下的版本,是通过使用 Ruby脚本完成构建 redis 集群的,所以我们可以将 redis 安装包目录下的  "redis-trib.rb create" 指令拷贝到 redis 安装目录,然后执行构建集群命令。相关命令如下:

[root@localhost src]# cp redis-4.0.2/src/redis-trib.rb /usr/local/redis/bin/
[root@localhost src]# redis-trib.rb create --replicas 1 192.168.109.135:6381 192.168.109.135:6382 192.168.109.135:6383 192.168.109.135:6384 192.168.109.135:6385 192.168.109.135:6386

7、集群验证:

[root@localhost redis-4.0.2]# redis-cli -h 192.168.109.135 -c -p 6381
192.168.109.135:6381> SET hello world
OK
192.168.109.135:6381> exit
[root@localhost redis-4.0.2]# redis-cli -h 192.168.109.135 -c -p 6385
192.168.109.135:6385> get hello
-> Redirected to slot [866] located at 192.168.109.135:6381
"world"
192.168.109.135:6381> exit

 

参考:https://www.cnblogs.com/tigerchen666/p/9922473.html

posted @ 2021-01-11 10:31  Zombie☠️  阅读(218)  评论(0)    收藏  举报