环境:centos7.6 redis4.0
模拟在一个Centos7下安装6个redis实例搭建集群 3主3从
安装wget
yum -y install wget
安装gcc
yum -y install gcc automake autoconf libtool make
下载redis
cd /usr/local/software
wget http://download.redis.io/releases/redis-4.0.0.tar.gz
解压
tar -xzvf redis-4.0.0.tar.gz
切换至程序目录
cd redis-4.0.0
执行make编译Redis:
make MALLOC=libc
注意:make命令执行完成编译后,会在src目录下生成6个可执行文件,分别是redis-server、redis-cli、redis-benchmark、redis-check-aof、redis-check-rdb、redis-sentinel。
安装Redis:
make install
--------------------
计划集群中 Redis 节点的端口号为 7001-7006 ,端口号即集群下各实例文件夹。数据存放在 端口号/data 文件夹中,日志存放在 端口号/log 文件夹中
cd /usr/local/software
mkdir redis-cluster
cd redis-cluster
mkdir -p 7001/data 7002/data 7003/data 7004/data 7005/data 7006/data
mkdir -p 7001/log 7002/log 7003/log 7004/log 7005/log 7006/log
把安装好的Redis的redis.conf 拷贝到这6个端口目录中
cd redis-4.0.0
cp redis.conf /usr/local/software/redis_cluster/7001
cp redis.conf /usr/local/software/redis_cluster/7002
cp redis.conf /usr/local/software/redis_cluster/7003
cp redis.conf /usr/local/software/redis_cluster/7004
cp redis.conf /usr/local/software/redis_cluster/7005
cp redis.conf /usr/local/software/redis_cluster/7006
修改各个端口的redis配置内容如下,以7001为例
#端口号 port 7001 #默认ip为127.0.0.1 需要改为其他节点机器可访问的ip(本机ip) 否则创建集群时无法访问对应的端口,无法创建集群 bind 192.168.182.129 #数据文件存放位置 dir /usr/local/software/redis-cluster/7001/data/ #日志文件存放位置 logfile /usr/local/software/redis-cluster/7001/log/redis.log #redis后台运行 daemonize yes #为保证redis-trib.rb工具的正常运行,需要设置为no,完成后可以改回yes,但每次使用redis-trib.rb都需要改回为no protected-mode no #pidfile文件 pidfile /var/run/redis_7001.pid #开启集群 cluster-enabled yes #集群的配置 配置文件首次启动自动生成 cluster-config-file nodes_7001.conf #请求超时 默认15秒,可自行设置 cluster-node-timeout 15000 #rdb文件名 dbfilename dump-7001.rdb #aof日志开启 有需要就开启,它会每次写操作都记录一条日志 appendonly yes #aof文件名 appendfilename "appendonly-7001.aof" #设置密码 masterauth 123456 requirepass 123456
注意:各个节点密码都必须一致,否则Redirected就会失败
在redis-cluster 下创建 bin 文件夹,用来存放集群运行脚本,并把安装好的 Redis 的 src 路径下的运行脚本拷贝过来
cd /usr/local/software/redis_cluster
mkdir bin
cd /usr/local/software/redis-4.0.0
cp -r src/* /usr/local/software/redis-cluster/bin/
启动节点
/usr/local/software/redis-cluster/bin/redis-server /usr/local/software/redis-cluster/7001/redis.conf
/usr/local/software/redis-cluster/bin/redis-server /usr/local/software/redis-cluster/7002/redis.conf
/usr/local/software/redis-cluster/bin/redis-server /usr/local/software/redis-cluster/7003/redis.conf
/usr/local/software/redis-cluster/bin/redis-server /usr/local/software/redis-cluster/7004/redis.conf
/usr/local/software/redis-cluster/bin/redis-server /usr/local/software/redis-cluster/7005/redis.conf
/usr/local/software/redis-cluster/bin/redis-server /usr/local/software/redis-cluster/7006/redis.conf
可以检查一下6个节点是否启动成功:ps -ef | grep redis
创建集群
由于 Redis 集群需要使用 ruby 命令,所以我们需要安装 ruby 和相关接口
yum -y install ruby ruby-devel rubygems rpm-build
gem install redis
在执行gem install redis时
如果提示:
gem install redis
ERROR: Error installing redis:
redis requires Ruby version >= 2.3.0
原因,ruby版本小于了2.3.0
安装RVM
gpg2 --keyserver hkp://pool.sks-keyservers.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
curl -L https://get.rvm.io | bash -s stable
find / -name rvm -print
source /usr/local/rvm/scripts/rvm
查看rvm库中已知的ruby版本
rvm list known
根据列表显示 选择一个高版本安装
rvm install 2.5.5
使用一个ruby版本
rvm use 2.5.5
设置默认版本
rvm use 2.5.5 --default
查看ruby版本
ruby --version
继续执行安装redis
gem install redis
Redis 官方提供了 redis-trib.rb 这个工具,就在解压目录的 src 目录中
上面已经将它复制到 /usr/local/software/redis_cluster/bin 目录中,可以直接在命令行中使用了
/usr/local/software/redis-cluster/bin/redis-trib.rb create --replicas 1 192.168.182.129:7001 192.168.182.129:7002 192.168.182.129:7003 192.168.182.129:7004 192.168.182.129:7005 192.168.182.129:7006
节点设置密码之后如果需要使用redis-trib.rb的各种命令
则会报错 Sorry, can’t connect to node
解决方法:找到client.rb 然后修改默认password为上面设置的密码
client.rb路径可以通过find命令查找:
find / -name ‘client.rb‘
类似/usr/local/rvm/gems/ruby-2.5.5/gems/redis-4.1.2/lib/redis/client.rb
执行过程中,可能需要输入 yes
从屏幕输出,可以很容易地看出哪些是主(master)节点,哪些是从(slave)节点
--replicas 1 表示主从复制比例为 1:1,即一个主节点对应一个从节点;然后,默认给我们分配好了每个主节点和对应从节点服务,以及 solt 的大小
验证是否成功安装好集群
通过客户端命令连接上,通过集群命令看一下状态和节点信息
/usr/local/software/redis-cluster/bin/redis-cli -c -h 192.168.182.129 -p 7001 -a 123456
cluster info
cluster nodes
设置一个key值
set key1 value1
keys *
get key1
然后登录另外一个实例
/usr/local/software/redis-cluster/bin/redis-cli -c -h 192.168.182.129 -p 7002 -a 123456
get key1
如果返回value1,说明集群运作正常
原文地址:https://www.cnblogs.com/zengnansheng/p/11421436.html