云服务器搭建redis集群

在搭建redis集群之前需要安装ruby。redis使用ruby来做集群的。用一个叫redis-trib.rb的ruby脚本。redis-trib.rb是redis官方推出的管理redis集群的工具,集成在redis的源码src目录下(redis-xxx/src/)。是基于redis提供的集群命令封装成简单、便捷、实用的操作工具。redis-trib.rb是redis作者用ruby完成的。所以redis集群需要先安装ruby环境。

安装ruby


下载:>wget https://cache.ruby-china.com/pub/ruby/ruby-2.3.1.tar.gz

解压:tar -xf ruby-2.3.1.tar.gz

进入目录:cd ruby-2.3.1

在当前根目录执行编译(相当于c语言有各种打包、压缩过程;可以将打包压缩的内容解压):./configrue

编译安装:make && make install (时间较长)

云服务器搭建redis集群_第1张图片

yum安装rubygems

RubyGems(简称gems)是一个用于对Ruby组件进行打包的Ruby打包系统。它提供了一个分发Ruby程序和库的标准格式,还提供一个管理程序包安装的工具(简单理解就是ruby运行时,需要的各种插件都在gems里)是一种技术支持。

安装命令:yum install rubygems 

安装过程需要输入y同意

云服务器搭建redis集群_第2张图片

安装redis接口包

redis-cluster安装需要通过gem install redis来安装相关依赖。否则报错。

通过gem install redis会报如下错误:(源地址https://blog.csdn.net/feinifi/article/details/78251486)

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

这是缺少zlib依赖,需要安装zlib库。当添加完zlib库之后,再次执行gem install redis 还会出现错误2:

ERROR:  While executing gem ... (Gem::Exception)
Unable to require openssl, install OpenSSL and rebuild ruby (preferred) or use non-HTTPS sources

提示缺少openssl库,这两个库可以通过yum安装,但是安装了需要集成到ruby中。

先解决错误一,解决办法分为两步:

一、安装zlib库,如果已经安装,跳过,直接进入第二步

yum install zlib-devel

二、集成zlib库到ruby环境 

cd /{解压目录}/ruby-2.3.1
cd ext/zlib
ruby extconf.rb
make && make install

// 源地址中有写将Makefile中$(top_srcdir)改为../..   但是我在Makefile中并未发现$(top_srcdir),大家根据自己情况,若发现应该修改。

另一个缺少openssl库的错误,可以用同样的问题解决。

一、安装openssl库,如果已经安装可以跳过,直接进入第二步。

yum install openssl-devel 

二、集成zlib库到ruby环境

cd /{解压目录}/ruby-2.3.1
cd ext/zlib
ruby extconf.rb

//在操作下一步之前需要在Makefile文件中添加top_srcdir = ../..

// 目的是为文件中$(top_srcdir)赋值,否则在make时会出现如下错误:
//make:*** No rule to make target `/include/ruby.h', needed by `zlib.o'.  Stop
make && make install 

make && make install 运行结果: 

[root@test01 openssl]# make && make install
compiling openssl_missing.c
compiling ossl.c
compiling ossl_asn1.c
compiling ossl_bio.c
compiling ossl_bn.c
compiling ossl_cipher.c
compiling ossl_config.c
compiling ossl_digest.c
compiling ossl_engine.c
compiling ossl_hmac.c
compiling ossl_ns_spki.c
compiling ossl_ocsp.c
compiling ossl_pkcs12.c
compiling ossl_pkcs5.c
compiling ossl_pkcs7.c
compiling ossl_pkey.c
compiling ossl_pkey_dh.c
compiling ossl_pkey_dsa.c
compiling ossl_pkey_ec.c
compiling ossl_pkey_rsa.c
compiling ossl_rand.c
compiling ossl_ssl.c
compiling ossl_ssl_session.c
compiling ossl_x509.c
compiling ossl_x509attr.c
compiling ossl_x509cert.c
compiling ossl_x509crl.c
compiling ossl_x509ext.c
compiling ossl_x509name.c
compiling ossl_x509req.c
compiling ossl_x509revoked.c
compiling ossl_x509store.c
linking shared-object openssl.so
/usr/bin/install -c -m 0755 openssl.so /usr/local/lib/ruby/site_ruby/2.4.0/x86_64-linux
installing default openssl libraries 

 成功之后,再次运行gem install redis,出现以下界面:

Fetching: redis-4.0.1.gem (100%)
Successfully installed redis-4.0.1
Parsing documentation for redis-4.0.1
Installing ri documentation for redis-4.0.1
Done installing documentation for redisafter 1 seconds
1 gem installed

检查版本 :ruby -v

完成ruby环境的安装,就可以利用ruby的环境配置执行.rb文件。

安装reids

到此搭建redis集群的准备工作完成,接下来开始搭建集群。 搭建公网集群与内网不同,有一些需要注意的地方。redis集群需要使用3.0以上版本的tar包。

下载tar包:wget http://download.redis.io/releases/redis-3.2.11.tar.gz

进入解压目录:cd /{解压目录}/redis-3.2.11

解压编译安装:make && make install

云服务器搭建redis集群_第3张图片

创建节点:创建集群节点,不同的节点创建对应的目录管理配置文件。例如:占用8000端口的redis服务,对应的redis.conf放到8000的文件夹下。

拷贝配置文件到对应的目录下:cp redis.conf 8000

修改配置文件:vim redis.conf    (显示文件行数命令->:set number)

p61 bind 0.0.0.0  //由于是公网所以必须更改为0.0.0.0,让所有网络均可访问。内网设置为本机ip即可。

p80 protected-mode no  //yes改为no,关闭保护模式,登录时不需要提供安全信息,例如密码。

p84 port 8000  //端口

p128 daemonize yes  //后台运行

P150 pidfile /var/run/redis_8000.pid  //当大量的进程启动后,很难通过ps -ef|grep redis直接寻找你需要操作的进程的pid

P163 logfile 8000/redis.log  //相对路径,启动时在redis的根目录,log文件记录的内容,就是在启动时,控制台打印的内容,和后续操作redis时所有的日志信息;

P237 dump dump8000.rdb  //指定当前服务加载的持久化文件

P593 appendonly yes  //默认是rdb方式持久化

P597 appendfilename "appendonly8000.aof"  //指定一个aof格式的持久化文件

P721 cluster-enabled yes  //加载当前配置文件的redis服务一旦启动需要开启集群模式,否则无法使用集群的各种策略和逻辑

P729 cluster-config-file nodes_8000.conf  //集群配置启动后,将会创建这个nodes文件,记录当前服务器上唯一的一个集群状态;例如,搭建了8000-8005这样一个集群,操作失误下,集群失效,重新搭建集群,当前服务器读取这个配置文件会发现,槽道已经被一个集群分配了,新的集群搭建失败;

P735 cluster-node-timeout 15000  //请求超时 默认15秒,可自行设置

利用vim的替换命令,将不同节点的端口在文件中替换拷贝到对应管理的文件夹中。vim中:%s/8000/8001/g

完成之后调用ls检查目录中是否都存在redis.conf文件。

云服务器搭建redis集群_第4张图片

分别启动节点实例:

redis-server 8000/redis.conf

redis-server 8001/redis.conf

检查是否成功:ps -ef|grep redis

云服务器搭建redis集群_第5张图片

到此,一台云服务器上的redis服务配置完成,以同样的方式在其他云服务器上配置。 

创建集群

在redis根目录src目录下有个文件redis-trib.rb,这个就是用ruby写的命令文件,它是一个语言编写的快速操作集群的命令文件,整合了底层客户端的各种各样的命令,执行创建集群命令(redis集群最少需要3个master才能正常运行)。

关闭服务器防火墙:

service iptables stop //临时关闭防火墙,重启之后防火墙依然开启

chkconfig iptables off //永久关闭防火墙配置,两个命令配合

进入src目录:

使用命令创建集群:./redis-trib.rb create --replicas 1 节点信息们。

--replicas 1表示自动为每一个master节点分配至少一个slave节点。我使用了六个节点,则程序会按照规则生成3个master3个slave。

 

会报错,提示连接不到节点。这是因为使用的是云服务器,在阿里云的安全组中没有将对应的端口开放,需要登录阿里云将自己配置的端口放行。

具体配置规则:https://jingyan.baidu.com/article/fea4511a2e387cf7bb912532.html

再次执行命令:

集群搭建成功。

 

你可能感兴趣的:(redis)