Redis 搭建集群
在一个主机IP下搭建集群,将6个文件夹当作6个redis节点
1.1 安装Redis(请参考其他博客)
1.2 安装ruby和rubygems
#1.2.1 ubuntu下安装
sudo apt-get install ruby-full rubygems #直接全部下载安装
whilch gem #检查rubygems是否安装成功
sudo gem install rubygems-update #安装rubygems管理工具包的更新工具
update-rubygems #执行更新
gem install redis #安装redis和ruby的接口
#1.2.2 centos下的安装
yum install ruby #安装ruby
yum install rubygems
gem install redis
2.1 redis.conf配置文件
#2.1.1建立文件夹目录及子文件夹用于存放集群各个节点的数据
mkdir /usr/local/redis-cluster 7001
mkdir /usr/local/redis-cluster 7002
mkdir /usr/local/redis-cluster 7003
mkdir /usr/local/redis-cluster 7004
mkdir /usr/local/redis-cluster 7005
mkdir /usr/local/redis-cluster 7006
#找到原redis.conf文件并cp备份一份
cp redis.conf /usr/local/redis-cluster/7001/ #将文件拷贝至7001文件夹中
.
.
.
#可以继续拷贝至7002、7003、7004、7005、7006,然后逐份修改,建议先修改好7001的redis.conf再拷贝
#2.1.2修改配置文件
cd /usr/local/redis-cluster/7001
vim redis.conf
#开始进行7001文件夹下redis.conf文件的修改
daemonize yes #设置redis后台启动
port 7001 #修改对应端口号
bind 192.168.1.111 #绑定当前IP
#使用腾讯云服务器之类的IP要确认填写正确,进入系统后 IP address for eth0:显示IP
dir /usr/local/redis-cluster/7001/ #指定数据文件存放的位置,不同节点指定不同的位置,防止数据丢失
cluster-enabled yes #启动集群模式
cluster-config-file nodes7001.conf #让各个节点之间相互关联
cluster-node-timeout 5000
appendonly yes
#以下3条语句可跳过
#若想查看日子文件,可以修改日志文件的存放位置,此条非必须,位置可变
logfile /var/log/redis-server.log
#若存在文件权限问题,先选择性决定修改权限
su
chmod -R 777 /usr/local/redis-cluster #递归设置redis-cluster下的所有文件的权限为777
#将redis.conf文件拷贝至其余文件夹下
cp /usr/local/redis-cluster/7001/redis.conf /usr/local/redis-cluster/7002/
cp /usr/local/redis-cluster/7001/redis.conf /usr/local/redis-cluster/7003/
cp /usr/local/redis-cluster/7001/redis.conf /usr/local/redis-cluster/7004/
cp /usr/local/redis-cluster/7001/redis.conf /usr/local/redis-cluster/7005/
cp /usr/local/redis-cluster/7001/redis.conf /usr/local/redis-cluster/7006/
#与修改7001的redis.conf文件配置一样,对其余文件夹下redis.conf文件中对应的端口号进行的修改
#3.1 启动6个redis实例,并检查是否启动成功
/usr/local/redis/bin/redis-server /usr/local/redis-cluster/7001/redis.conf
/usr/local/redis/bin/redis-server /usr/local/redis-cluster/7002/redis.conf
/usr/local/redis/bin/redis-server /usr/local/redis-cluster/7003/redis.conf
/usr/local/redis/bin/redis-server /usr/local/redis-cluster/7004/redis.conf
/usr/local/redis/bin/redis-server /usr/local/redis-cluster/7005/redis.conf
/usr/local/redis/bin/redis-server /usr/local/redis-cluster/7006/redis.conf
netstat -tunpl | grep redis #显示开启的redis服务
#结果如下
tcp 0 0 172.16.0.16:17001 0.0.0.0:* LISTEN 19909/redis-server
tcp 0 0 192.168.1.111:17002 0.0.0.0:* LISTEN 20581/redis-server
tcp 0 0 192.168.1.111:17003 0.0.0.0:* LISTEN 20620/redis-server
tcp 0 0 192.168.1.111:17004 0.0.0.0:* LISTEN 20629/redis-server
tcp 0 0 192.168.1.111:17005 0.0.0.0:* LISTEN 20641/redis-server
tcp 0 0 192.168.1.111:17006 0.0.0.0:* LISTEN 20654/redis-server
tcp 0 0 192.168.1.111:7001 0.0.0.0:* LISTEN 19909/redis-server
tcp 0 0 192.168.1.111:7002 0.0.0.0:* LISTEN 20581/redis-server
tcp 0 0 192.168.1.111:7003 0.0.0.0:* LISTEN 20620/redis-server
tcp 0 0 192.168.1.111:7004 0.0.0.0:* LISTEN 20629/redis-server
tcp 0 0 192.168.1.111:7005 0.0.0.0:* LISTEN 20641/redis-server
tcp 0 0 192.168.1.111:7006 0.0.0.0:* LISTEN 20654/redis-server
#4.1 创建redis集群
#以下新旧版本的redis可能有区别
cd /usr/local/bin #在此目录下找到 redis-trib.rb文件
./redis-trib.rb #执行脚本,可以查看help文件,及使用方法,如果报错是因为现在使用了redis-cli来代替redis-trib.rb脚本
redis-cli --cluster help #查看新脚本的帮助文件
cd /usr/local/bin
#开始创建集群,其中--cluster-replicas的参数代表master和slave的比例关系,按顺序分配master与slave
./redis-cli --cluster create 192.168.1.111:7001 192.168.1.111:7002 192.168.1.111:7003 192.168.1.111:7004 192.168.1.111:7005 192.168.1.111:7006 --cluster-replicas 1
#创建过程中会显示所要创建的集群信息
yes #开始创建
#创建完成
#检查集群是否创建成功
/usr/local/bin/redis-cli -c -h 192.168.1.111 -p 7001 #进入7001节点
cluster info #查看集群信息
cluster nodes #查看节点信息
#创建成功
#5.1 简单的操作
192.168.1.111:7001> set name Jett #当前 master 7001
-> Redirected to slot [5798] located at 192.168.1.111:7002 #redis进行分配槽至[5798]在 master 7002
OK
192.168.1.111:7002> keys *
1) “name”
192.168.1.111:7002> quit
root@VM-0-16-ubuntu:/usr/local/bin# /usr/local/bin/redis-cli -c -h 192.168.1.111 -p 7001
192.168.1.111:7001> keys *
(empty list or set)
192.168.1.111:7001> get name # name在7002,但其他节点都可以读取该信息
-> Redirected to slot [5798] located at 192.168.1.111:7002
“Jett”
ubuntu@VM-0-16-ubuntu:~$ /usr/local/bin/redis-cli -c -h 192.168.1.111 -p 7004
192.168.1.111:7004> keys * #同时7002对应的slave中含有name的key
1) “name”