CentOS6.7方式搭建redis(多机多节点)集群步骤
版本:0.0.1 编辑:朱* 内容:创建文档 时间:20190814
按流程操作,自测有效
网上看了很多教程,都有坑,花了很对时间才搭完,记录我的流程
一、ruby的安装
-
1、官网下载,这里选择的是ruby-2.2.10.tar.gz
https://www.ruby-lang.org/en/downloads/ -
2、安装编译
跳转到:cd /usr/local
创建文件夹:mkdir ruby
将tar 包上传至/usr/local/ruby目录:cp /home/****/ruby-2.2.10.tar.gz /usr/local/rubytar -zxvf ruby-2.2.10.tar.gz
cd ruby-2.2.10
./configure
make
make install -
3、查看ruby是否安装成功
ruby -v
二、rubygems的安装
RubyGems简称gems,是一个用于对 Ruby组件进行打包的 Ruby 打包系统。
1、下载zlib-1.2.11.tar.gz包
cd /home/****/
wget http://www.zlib.net/zlib-1.2.11.tar.gz
tar -zxvf zlib-1.2.11.tar.gz
cd zlib-1.2.11
指定安装目录:
./configure --prefix=/usr/local/zlib/install/
编译安装:
make
make install
再到ruby目录下安装一下,
cd /usr/local/ruby/ruby-2.2.10/ext/zlib/
ruby extconf.rb --with-zlib-include=/usr/local/zlib/install/include/ --with-zlib-lib=/usr/local/zlib/install/lib/
make
make install
2、下载rubygems-3.0.3.tgz
cd /home/****/
https://rubygems.org/pages/download 下载后复制到虚拟机
解压安装
tar -zxvf rubygems-3.0.3.tgz
cd ./rubygems-3.0.3
ruby setup.rb
三、redis集群的搭建
1、下载、安装redis4.0.6的tar包
cd /usr/local
mkdir redis
命令: wget http://download.redis.io/releases/redis-4.0.6.tar.gz
命令: tar -zxvf redis-4.0.6.tar.gz
cd redis-4.0.6
make && make install
2、安装openssl:
cd /home/***/
wget https://www.openssl.org/source/openssl-1.0.2h.tar.gz
tar -zxvf openssl-1.0.2h.tar.gz
cd openssl-1.0.2h
./config -fPIC --prefix=/usr/local/openssl enable-shared
./config -t
make && make install
编译ruby中的openssl:
cd /usr/local/ruby/ruby-2.2.10/ext/openssl/
ruby extconf.rb --with-openssl-include=/usr/local/openssl/include/ --with-openssl-lib=/usr/local/openssl/lib/
修改Makefile,增加变量 :
vim Makefile,加入下面一行
top_srcdir = …/…
保存后
make
make install
openssl 安装成功
3、下载安装redis-4.0.3.gem
https://rubygems.org/gems/redis/versions/4.0.3
cd /home/*****/
在redis-4.0.3.gem目录同级执行 gem install redis-4.0.3.gem完成安装
4、编写配置文件并启动各个节点
* 1、跳转到redis安装目录
cd /usr/local
* 2、创建一个新目录:cluster (该目录名称、位置任意,此处我是建在了redis安装目录下)
mkdir cluster
* 3、在cluster目录下,创建两个目录,分别是6379 6380(用于存储redis配置文件)
备注:此处新建的目录名必须与redis节点对应的端口号对应
cd cluster
mkdir 6379 6380
* 4、添加redis节点对应的配置文件,此处我直接拷贝redis安装目录下的配置文件redis.conf再加以修改
cp /usr/local/redis/redis-4.0.6/redis.conf ./6379
cp /usr/local/redis/redis-4.0.6/redis.conf ./6380
cd /usr/local/redis/cluster/6379
mv redis.conf redis_6379.conf
cd /usr/local/redis/cluster/6380
mv redis.conf redis_6380.conf
* 5、修改redis配置文件(目录6379、6380下的redis.conf),主要修改如下配置,
绑定局域网ip,使得三台服务器可相互访问
bind 192.168.103.54
protected-mode yes
redis节点监听端口
port 6380
以守护进程启动
daemonize yes
pidfile /var/run/redis_6380.pid
logfile "/usr/local/redis/cluster/6379.log"
dbfilename dump_6380.rdb
dir /usr/local/redis/cluster/6379
如下为集群配置
cluster-enabled yes 启用集群
cluster-config-file nodes-6380.conf 集群配置文件,由redis自动更新,不需要手动配置
cluster-node-timeout 5000 集群节点超时时间,即集群中主从节点断开连接时间阈值,超过该值则认为主节点不可以,从节点将有可能转为master
cluster-slave-validity-factor 10
在进行故障转移的时候全部slave都会请求申请为master,但是有些slave可能与master断开连接一段时间了导致数据过于陈旧,不应该被提升为master。该参数就是用来判断slave节点与master断线的时间是否过长
(计算方法为:cluster-node-timeout * cluster-slave-validity-factor,此处为:5000 * 10 毫秒)
cluster-migration-barrier 1
cluster-require-full-coverage yes 集群中的所有slot(16384个)全部覆盖,才能提供服务
5、启动3台机器上的6个节点
cd /usr/data/redis-4.0.8/src
./redis-server ../cluster/6379/redis.conf
./redis-server ../cluster/6380/redis.conf
6、创建集群
因为此处我是以192.168.103.54作为集群控制端,所有一下操作都在改机器上完成
注:集群创建时 先不要设置密码,
gem install redis
./redis-trib.rb create --replicas 1 192.168.103.54:6379 192.168.103.54:6380 192.168.103.56:6379 192.168.103.56:6380 192.168.103.57:6379 192.168.103.57:6380
7、注意
1、如果建立集群时报错:CLUSTERDOWN Hash slot not served,
解决办法如下:
用命令检测:redis-trib.rb check 127.0.0.1:7000
检测结果:[ERR] Not all 16384 slots are covered by nodes
执行修复命令:redis-trib.rb fix 127.0.0.1:7000
修复完成之后,便可正常使用Redis集群了。
用到的包:D:\rubygems-3.0.4.tar.gz
d:\redis-4.0.6.tar.gz
d:\redis-4.0.3.gem
ruby-2.2.10.tar.gz
zlib-1.2.11.tar.gz
openssl-1.0.2h.tar.gz