Redis集群搭建

      本文是在root用户下搭建的,需要关闭防火墙。

1、需要的安装包

zlib-1.2.11

ruby-2.4.2

redis-3.3.1.gem

redis-3.2.8

2、集群构成

      总共三台服务器:redis1, redis2, redis3

      每台服务器上运行两个 redis 服务,一主一备。 分别运行于 7000 和 7001 端口。

3、安装zlib

解压

tar -zxvf zlib-1.2.11.tar.gz -C ../../software/

安装

      进入刚解压的目录:

cd ../../software/

      重命名:

mv zlib-1.2.11/ zlib

      安装:

./configure(--prefix=/usr/local/ruby)	#后面的括号中参数是可选项,保持默认也可以
make
make install

4、安装ruby

解压

tar -zxvf ruby-2.4.2.tar.gz -C ../../software/

安装

      进入刚解压的目录:

cd ../../software/

      重命名:

mv ruby-2.4.2/ zlib

     安装:

./configure(--prefix=/usr/local/ruby)	#后面的括号中参数是可选项,保持默认也可以
make
make install

5、安装ruby的redis依赖

gem install -l packages/redis-3.3.1.gem

      出现如下信息表示安装成功:

6、安装redis

解压

tar -zxvf redis-3.2.8.tar.gz -C ../../software/

安装

      进入刚解压的目录:

cd ../../software/

      重命名:

mv redis-3.2.8/ zlib

      安装:

./configure(--prefix=/usr/local/ruby)	#后面的括号中参数是可选项,保持默认也可以
make
make install

      至此,如果输入 redis-server 能看到如下图则表示安装成功:

7、集群配置文件修改 

      创建 /redis/cluster/7000/ 目录和 /redis/cluster/7001/ 目录。将原解压的 redis 目录里的 redis.conf 文件复制到这两个文件夹下:

cp redis.conf /redis/cluster/7000/
cp redis.conf /redis/cluster/7001/

      然后修改这两个文件,以 /redis/cluster/7000/ 目录下的 redis.conf 为例:

bind redis1
port 7000
daemonize yes
pidfile  /redis/cluster/7000/redis_7000.pid
appendonly  yes
cluster-enabled  yes
cluster-config-file  /redis/cluster/7000/nodes_7000.conf
cluster-node-timeout  5000

      上面修改的配置说明如下:

port  7000                               		    #端口7000
daemonize    yes                         		    #设置redis后台运行
pidfile  /redis/cluster/7000/redis_7000.pid	       #pidfile文件对应7000
appendonly  yes                           		    #aof日志打开
cluster-enabled  yes                      	         #开启集群  把注释#去掉
cluster-config-file  /redis/cluster/7000/nodes_7000.conf     #集群自动生成的配置文件路径 
cluster-node-timeout  5000                	            #请求超时时间,5秒没问题

      而 7001 文件夹下的 redis.conf 文件需要把上面修改的所有 7000 改成 7001 ,改完后把 /redis 目录发送到另外两台机器上:

scp -r /redis/ root@redis2:/
scp -r /redis/ root@redis3:/

      另外两台只需要修改的是 7000 和 7001 目录下的 redis.conf 文件里的 bind 就行,将 redis1 改为 redis2,redis3

8、启动redis

      在每台 redis 服务器上运行以下命令:

cd /redis/cluster/7000/
redis-server redis.conf

cd /redis/cluster/7001/
redis-server redis.conf

      两个 cd 命令最好不要省略,这样可以保证各自生成的临时文件都在对应的文件夹中。

      注:重启由于会生成 aof 文件和 nodes.conf 文件导致重启失败,故可以在重启的时候删除那两个文件:

cd /redis/cluster/7000/
rm -rf appendonly.aof
rm -rf nodes_7000.conf
redis-server redis.conf

cd /redis/cluster/7001/
rm -rf appendonly.aof
rm -rf nodes_7001.conf
redis-server redis.conf

9、构建集群

      由于官方自带的redis-trib.rb脚本在构建集群的时候会出现同一份数据的主从出现在同一台主机中的现象(且出现概率是100%。这个bug很早之前就有人提出过,但是一直没修复),因此要对构建集群的脚本做一些修改。

      打开 /root/software/redis/src/redis-trib.rb,搜索 masters.each{|m| puts m},在后面加上一行 interleaved.push interleaved.shift,关闭保存即可。

      执行命令构建集群:

cd /root/software/redis/src/
./redis-trib.rb create --replicas 1 192.168.21.139:7000 192.168.21.140:7000 192.168.21.141:7000 192.168.21.139:7001 192.168.21.140:7001 192.168.21.141:7001

      注:在这里没有使用域名,由于我尝试多次使用域名都会导致构建集群失败,所以改用 ip。

      执行命令后出现如下图,输入 yes 接受分配:

      检查一下同一份数据的主从节点不在同一个主机中即可。

      看到如下信息表示集群构建成功:

10、测试

      执行:

redis-cli -c -h redis1 -p 7000

      在 redis 命令行执行以下命令,查看结果:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值