CentOS7安装redis4.0 (5.0)集群配置

我将redis安装到 /usr/local/目录下,下载redis包,我这里用的redis-4.0.9版本。

下载地址:https://redis.io/

上传安装包到/usr/local/:

然后解压,我这里就不看解压过程了:

tar -zxf redis-4.0.9.tar.gz

 

然后我们进入安装的redis目录下,进行编译安装:这里会出现一个错误,下面我会解决这个问题。

 

出现以下错误:因为缺少依赖包gcc的相关依赖包。

然后我们在进行依赖包安装:

yum install gcc*

然后再进行编译,发现还是错误,这是因为你已经编译过了,存在编译了的文件

然后返回上一级删除你解压的redis文件,重新解压一个,再进行编译。

cd ..
rm -rf redis-4.0.9

tar -zxf redis-4.0.9.tar.gz
cd redis-4.0.9
make && make install

成功信息:

然后我们要开启端口号 6379,16379;

查看防火墙状态:

systemctl status  firewalld

开启状态:

 

然后开启端口号:

firewall-cmd --permanent --zone=public --add-port=6379/tcp

 

firewall-cmd --permanent --zone=public --add-port=16379/tcp

然后重启防火墙:

 

systemctl restart  firewalld

然后修改配置文件:

vi redis.conf

修改以下信息:然后保存。

 
#端口:
	port  6379
#默认ip为127.0.0.1 需要改为其他节点机器可访问的ip 否则创建集群时无法访问对应的端口,无法创建集群
	bind  192.168.131.139
#redis后台运行	
	daemonize    yes
#pidfile文件对应6379 	
	pidfile  /var/run/redis_6379.pid
#开启集群  把注释#去掉		
	cluster-enabled  yes
#集群的配置  配置文件首次启动自动生成 6379 把注释#去掉	
	cluster-config-file  nodes_6379.conf
#请求超时  默认15秒,可自行设置
	cluster-node-timeout  15000
#设置密码
	requirepass guest

然后启动redis:

src/redis-server redis.conf

查询reids端口情况:

ps aux | grep redis

 

然后用Redis Desktop Manager连接:

关闭reids,我们直接杀这个进程。

kill -9 1303

 

然后我们准备安装集群的环境:

 

1.Redis-trib.rb 需要ruby环境,先安装ruby环境

yum -y  install zlib ruby rubygems

成功信息:

然后升级版本:

gem update --system

然后安装redis

gem install redis

出现错误,以下版本过低:Ruby至少需要2.2.2版本以上。

然后我们吧Ruby进行升级:

gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB

curl -sSL https://get.rvm.io | bash -s stable

find / -name rvm -print

source /usr/local/rvm/scripts/rvm

查看rvm库中已知的ruby版本:

rvm list known

我们选择最新版本2.4.1,设置成默认。

rvm install 2.4.1

使用安装的版本:

rvm use 2.4.1

设置默认版本:

rvm use 2.4.1 --default

查看版本:

ruby --version

安装redis:

gem install redis

 

然后关闭虚拟机,我们进行克隆,因为redis集群需要6个节点(redis集群要求最小3主3从),所以还需要克隆5台,或者是你开其它的端口来充当,由于我的电脑比较刚,那就直接复制5台。

 

复制的5台修改修改以下信息:如果说你复制的5台,IP分别是:192.168.131.140,192.168.131.141,192.168.131.142,192.168.131.143,192.168.131.144;那么你要将你复制的虚拟机的redis。

修改你的这个IP,改成你本机的IP:
	bind  192.168.131.139

然后就启动redis,每台都要启动:

cd /usr/local/redis/
src/redis-server redis.conf

启动集群,再安装的redis的目录下:

src/redis-trib.rb create --replicas 1 192.168.131.139:6379 192.168.131.140:6379 192.168.131.141:6379 192.168.131.142:6379 192.168.131.143:6379 192.168.131.144:6379 

 

重新启动出现错误:

可能是密码设置没有对;要找到 client.rb这个配置文件,路径/usr/local/rvm/gems/ruby-2.4.1/gems/redis-4.0.1/lib/redis/client.rb,因为我们上面是安装的ruby2.4.1版本。

find / -name ruby

找到 :password => nil,把nil改为"guest"

找到 :password => nil,把nil改为"guest"

vi /usr/local/rvm/gems/ruby-2.4.1/gems/redis-4.0.1/lib/redis/client.rb 

如果是正式环境可以先修复

redis-trib.rb fix 192.168.131.139:6379

把单节点全部关掉,先备份,先备份,先备份,重要的事情说3边。然后删除 dump.rdb; nodes-6379.conf; appendonly.aof。

rm -rf dump.rdb nodes-6379.conf appendonly.aof

然后重启

redis-5.0.5集群搭建(三台服务器:192.168.33.101,192.168.33.102,192.168.33.103),在101;102;103上分别搭建2台,

端口分别为7001,7002,然后在home文件下创建两个redis,然后创建集群。

cd /home
cp -rf redis/ redis01/
cp -rf redis/ redis02/
vi redis01/redis-7001.conf
vi redis01/redis-7002.conf


然后将192.168.33.101克隆两台服务器:192.168.33.102;192.168.33.103

然后分别启动redis,

ps aux|grep redis

 

然后创建集群:redis-cli --cluster create 192.168.33.101:7001 192.168.33.101:7002 192.168.33.102:7001 192.168.33.102:7002 192.168.33.103:7001 192.168.33.103:7002 --cluster-replicas 1

redis-5使用 redis-cli的方式创建

redis-cli --cluster create 192.168.33.101:7001 192.168.33.101:7002 192.168.33.102:7001 192.168.33.102:7002 192.168.33.103:7001 192.168.33.103:7002 --cluster-replicas 1

当出现一下情况,一直在等待其他节点加入。出现以上问题,我们需要在192.168.33.102(非主节点)执行

$: cd /home/redis01/src/
$: ./redis-cli -c -p 7001 -h 192.168.33.102

 然后我们kill掉一个redis

然后我们在查看集群节点信息如图:

 

我们发现102:7001 这个已经fail掉了。然后我们在重启它

 

清除redis所有数据

172.16.51.65:7001> flushall

我们发现它又成功加入了集群。 

 当我们发现出现如下错误时:

在节点上的redis.conf配置中加入 masterauth guest

redis cluster命令

集群(cluster)  
cluster info       打印集群的信息
cluster nodes   列出集群当前已知的所有节点(node),以及这些节点的相关信息   
节点(node)  
cluster meet <ip> <port>       将ip和port所指定的节点添加到集群当中,让它成为集群的一份子  
cluster forget <node_id>        从集群中移除node_id指定的节点
cluster replicate <node_id>   将当前节点设置为node_id指定的节点的从节点
cluster saveconfig                   将节点的配置文件保存到硬盘里面
cluster slaves <node_id>       列出该slave节点的master节点
cluster set-config-epoch        强制设置configEpoch 
槽(slot)  
cluster addslots <slot> [slot ...]                         将一个或多个槽(slot)指派(assign)给当前节点
cluster delslots <slot> [slot ...]                          移除一个或多个槽对当前节点的指派 
cluster flushslots                                                移除指派给当前节点的所有槽,让当前节点变成一个没有指派任何槽的节点 
cluster setslot <slot> node <node_id>            将槽slot指派给node_id指定的节点,如果槽已经指派给另一个节点,那么先让另一个节点删除该槽,然后再进行指派 
cluster setslot <slot> migrating <node_id>   将本节点的槽slot迁移到node_id指定的节点中  
cluster setslot <slot> importing <node_id>   从node_id 指定的节点中导入槽slot到本节点 
cluster setslot <slot> stable                             取消对槽slot的导入(import)或者迁移(migrate) 
键(key)  
cluster keyslot <key>                                       计算键key应该被放置在哪个槽上  
cluster countkeysinslot <slot>                         返回槽slot目前包含的键值对数量 
cluster getkeysinslot <slot> <count>              返回count个slot槽中的键
其它
cluster myid       返回节点的ID
cluster slots       返回节点负责的slot
cluster reset      重置集群,慎用


redis cluster配置
cluster-enabled yes
如果配置yes则开启集群功能,此redis实例作为集群的一个节点,否则,它是一个普通的单一的redis实例。

cluster-config-file nodes-6379.conf
虽然此配置的名字叫"集群配置文件",但是此配置文件不能人工编辑,它是集群节点自动维护的文件,主要用于记录集群中有哪些节点、他们的状态以及一些持久化参数等,方便在重启时恢复这些状态。通常是在收到请求之后这个文件就会被更新。
 
cluster-node-timeout 15000
这是集群中的节点能够失联的最大时间,超过这个时间,该节点就会被认为故障。如果主节点超过这个时间还是不可达,则用它的从节点将启动故障迁移,升级成主节点。注意,任何一个节点在这个时间之内如果还是没有连上大部分的主节点,则此节点将停止接收任何请求。一般设置为15秒即可。

cluster-slave-validity-factor 10
如果设置成0,则无论从节点与主节点失联多久,从节点都会尝试升级成主节点。如果设置成正数,则cluster-node-timeout乘以cluster-slave-validity-factor得到的时间,是从节点与主节点失联后,此从节点数据有效的最长时间,超过这个时间,从节点不会启动故障迁移。假设cluster-node-timeout=5,cluster-slave-validity-factor=10,则如果从节点跟主节点失联超过50秒,此从节点不能成为主节点。注意,如果此参数配置为非0,将可能出现由于某主节点失联却没有从节点能顶上的情况,从而导致集群不能正常工作,在这种情况下,只有等到原来的主节点重新回归到集群,集群才恢复运作。

cluster-migration-barrier 1
主节点需要的最小从节点数,只有达到这个数,主节点失败时,它从节点才会进行迁移。更详细介绍可以看本教程后面关于副本迁移到部分。

cluster-require-full-coverage yes
在部分key所在的节点不可用时,如果此参数设置为"yes"(默认值), 则整个集群停止接受操作;如果此参数设置为”no”,则集群依然为可达节点上的key提供读操作。

redis cluster状态
127.0.0.1:8001> cluster info
cluster_state:ok             

如果当前redis发现有failed的slots,默认为把自己cluster_state从ok个性为fail, 写入命令会失败。如果设置cluster-require-full-coverage为no,则无此限制。
cluster_slots_assigned:16384   #已分配的槽
cluster_slots_ok:16384              #槽的状态是ok的数目
cluster_slots_pfail:0                    #可能失效的槽的数目
cluster_slots_fail:0                      #已经失效的槽的数目
cluster_known_nodes:6             #集群中节点个数
cluster_size:3                              #集群中设置的分片个数
cluster_current_epoch:15          #集群中的currentEpoch总是一致的,currentEpoch越高,代表节点的配置或者操作越新,集群中最大的那个node epoch
cluster_my_epoch:12                 #当前节点的config epoch,每个主节点都不同,一直递增, 其表示某节点最后一次变成主节点或获取新slot所有权的逻辑时间.
cluster_stats_messages_sent:270782059
cluster_stats_messages_received:270732696


127.0.0.1:8001> cluster nodes
25e8c9379c3db621da6ff8152684dc95dbe2e163 192.168.64.102:8002 master - 0 1490696025496 15 connected 5461-10922
d777a98ff16901dffca53e509b78b65dd1394ce2 192.168.64.156:8001 slave 0b1f3dd6e53ba76b8664294af2b7f492dbf914ec 0 1490696027498 12 connected
8e082ea9fe9d4c4fcca4fbe75ba3b77512b695ef 192.168.64.108:8000 master - 0 1490696025997 14 connected 0-5460
0b1f3dd6e53ba76b8664294af2b7f492dbf914ec 192.168.64.170:8001 myself,master - 0 0 12 connected 10923-16383
eb8adb8c0c5715525997bdb3c2d5345e688d943f 192.168.64.101:8002 slave 25e8c9379c3db621da6ff8152684dc95dbe2e163 0 1490696027498 15 connected
4000155a787ddab1e7f12584dabeab48a617fc46 192.168.67.54:8000 slave 8e082ea9fe9d4c4fcca4fbe75ba3b77512b695ef 0 1490696026497 14 connected
#说明
节点ID:例如25e8c9379c3db621da6ff8152684dc95dbe2e163
ip:port:节点的ip地址和端口号,例如192.168.64.102:8002
flags:节点的角色(master,slave,myself)以及状态(pfail,fail)
如果节点是一个从节点的话,那么跟在flags之后的将是主节点的节点ID,例如192.168.64.156:8001主节点的ID就是0b1f3dd6e53ba76b8664294af2b7f492dbf914ec
集群最近一次向节点发送ping命令之后,过了多长时间还没接到回复
节点最近一次返回pong回复的时间
节点的配置纪元(config epoch)
本节点的网络连接情况
节点目前包含的槽,例如192.168.64.102:8002目前包含的槽为5461-10922
原文链接:https://blog.csdn.net/mysqldba23/article/details/67640478

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值