离线安装 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