CentOS7下载,安装Redis集群详细步骤,并测试

/********************* Redis 3.0 集群搭建 ********************************/
在redis3.0以前,提供了Sentinel工具来监控各Master的状态;
如果Master异常,则会做主从切换,将slave作为master,将master作为slave。
其配置也是稍微的复杂,并且各方面表现一般。现在redis3.0已经支持集群的容错功能,并且非常简单。
下面我们来进行学习下redis3.0如何搭建集群。
集群搭建:至少要三个master

前置步骤(必须安装):
安装集群之前, 首先安装Redis单节点, 参考链接(本博主的)如下:
…安装单节点的Redis…(必须安装)

**第一步:**创建一个文件夹redis-cluster,然后在其下面分别创建6个文件夹如下:

[root@jsyfprod001 local]# sudo rm -rf redis-cluster/
[root@jsyfprod001 local]# mkdir -p /usr/local/redis-cluster
# 创建用来存放Redis集群的6个目录
[root@jsyfprod001 redis-cluster]# mkdir 3301
[root@jsyfprod001 redis-cluster]# mkdir 3302
[root@jsyfprod001 redis-cluster]# mkdir 3303
[root@jsyfprod001 redis-cluster]# mkdir 3304
[root@jsyfprod001 redis-cluster]# mkdir 3305
[root@jsyfprod001 redis-cluster]# mkdir 3306

第二步:把之前的前置文章的redis.conf配置文件分别copy到330下,进行修改各个文件内容,也就是对330下的每一个copy的redis.conf文件进行修改!
注意: 这里不能直接复制, 需要修改对应目录

如下:

# 重申: 这里不能直接复制, 需要修改对应目录 * 
cp /usr/local/redis/etc/redis.conf /usr/local/redis-cluster/330*


# *代表当前需要配置的Redis.conf的目录
cd /usr/local/redis-cluster/330*
# 编辑Redis.conf 修改以下内容
sudo vim redis.conf 

#daemonize no --> yes
daemonize yes 
# Redis的进程
pidfile /usr/local/redis-cluster/330*/redis.pid
# 分别对每个机器的端口号进行设置 port 6379 --> 330*
port 330*
# 如果对集群设置密码,那么requirepass和masterauth都需要设置,否则发生主从切换时,就会遇到授权问题 此处不做配置 因为如果配置无法把Redis节点添加配置(步骤6.2中会有设置)
# 配置Redis的密码
# requirepass myPassword
# 从库连接主库需要使用的密码
# masterauth myPassword

# (必须要绑定当前机器的ip,不然会无限悲剧下去哇..深坑勿入!!!)
# 注意: 请写内网IP 如果一旦写外网IP,启动的时候可能会出现
bind 10.144.113.86 # 必须为当前机器内网的IP 

# 指定数据文件存放位置,必须要指定不同的目录位置,不然会丢失数据,深坑勿入!!!
dir /usr/local/redis-cluster/330*/

# 启动集群模式,开始玩耍
cluster-enabled yes

# 这里330x最好和port对应上
cluster-config-file /usr/local/redis-cluster/330*/nodes.conf

# 启动每一个节点的时间
cluster-node-timeout 5000

appendonly yes

logfile /usr/local/redis-cluster/330*/redis.log

注意:
Redis不能启动Redis.conf对应的redis.log中报错
错误信息如下:
Creating Server TCP listening socket ip:3301: bind: Cannot assign requested address
解决方法:
把redis.conf中的bind后面对应的ip修改为内网

第三步:注意每个文件要修改端口号,bind的ip,数据存放的dir,并且nodes文件都需要进行修改!

第四步:由于redis集群需要使用ruby命令,所以我们需要安装ruby

注意: CentOS7 使用gem install redis 时会出现 redis requires Ruby version >= 2.2.2.的错误 解决方法请看以下博客链接(CentOS6忽略)
http://blog.csdn.net/fengye_yulu/article/details/77628094

yum install ruby
yum install rubygems
# 此时注意在CentOS7中会出现 redis requires Ruby version >= 2.2.2.的错误 
# 解决方法请看以下链接http://blog.csdn.net/fengye_yulu/article/details/77628094
# 注意: 这个步骤安装较慢
gem install redis #(安装redis和ruby的接口)

第五步:
**重点内容:**分别启动6个redis实例,然后检查是否启动成功

# 注意: 此处需要启动6个Redis服务,每次启动一个
/usr/local/redis/bin/redis-server /usr/local/redis-cluster/330*/redis.conf 

# 当6个Redis服务全部启动之后 ,查看是否启动成功
ps -ef | grep redis

**第六步:**首先到redis3.0的安装目录下,然后执行redis-trib.rb命令。
1. 把Redis节点添加到集群

cd /usr/local/redis-3.0.0/src/
# 注意: 如果是外网请指定外网IP 不然外网无法正常使用集群, 外set值的时候会实然访问内网IP
./redis-trib.rb  create --replicas 1 10.144.113.86:3301 10.144.113.86:3302 10.144.113.86:3303 10.144.113.86:3304 10.144.113.86:3305 10.144.113.86:3306

注意:
把Redis添加到集群时 控制台可能会出现一直出现Waiting for the cluster to join… 很久都没有反应
原因如下:
redis集群不仅需要开通redis客户端连接的端口,而且需要开通集群总线端口
集群总线端口为redis客户端连接的端口 + 10000
如redis端口为6379
则集群总线端口为16379
故,所有服务器的点需要开通redis的客户端连接端口和集群总线端口
解决方法:
解决步骤一: 停掉Redis,并删除Redis.conf中cluster-config-file对应的nodes.conf文件
解决步骤二: Linux中需要在防火墙内添加客户端连接端口和集群总线端口
解决步骤三: 如果有安全组,也要开放客户端连接端口和集群总线端口
解决步骤一四: 重新启动Redis, 并重新执行把Redis节点添加到集群的步骤(6.1步骤)

2. 为Redis节点设置账号密码

# *代表当前需要配置的Redis.conf的目录 本步骤需要修改6个文件
cd /usr/local/redis-cluster/
# 编辑Redis.conf 修改以下内容
sudo vim 330*/redis.conf 

修改内容如下:

# 如果对集群设置密码,那么requirepass和masterauth都需要设置,否则发生主从切换时,就会遇到授权问题 
# 配置Redis的密码
requirepass myPassword
# 从库连接主库需要使用的密码
masterauth myPassword

**第七步:**到此为止我们集群搭建成功!进行验证:

**1: ** 连接任意一个客户端即可

# 连接任意一个客户端即可
cd /usr/local/redis/bin/
./redis-cli -c -h -p  #-c表示集群模式,指定ip地址和端口号
# 如下: 
/usr/local/redis/bin/redis-cli -c -h 10.144.113.86 -p 330* -a myPassword

**2: ** 连接Redis集群之后
用cluster info 查看集群信息, cluster nodes查看节点列表

# 查看集群信息
ip:3301> cluster info
cluster_state:ok
cluster_slots_assigned:16384
cluster_slots_ok:16384
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:6
cluster_size:3
cluster_current_epoch:6
cluster_my_epoch:1
cluster_stats_messages_sent:1860
cluster_stats_messages_received:1853

# 查看节点列表
ip:3301> cluster nodes
64a80c20e979b72f930cc4314b36adcef6ad65c3 47.94.197.87:3305 slave 0ffd1ffeae522a250b7b02db921878bb24d1be03 0 1511076460918 5 connected
9cebecfaf51f440eef02c44b8c90a0a9e1dd79be 192.168.1.34:3301 myself,master - 0 0 1 connected 0-5460
acf94d1a59337f08a8e30cd99d3c82cd201a8903 47.94.197.87:3306 slave a6299ffcc2063eacb0116aad19cb48f96ebe8970 0 1511076460416 6 connected
0ffd1ffeae522a250b7b02db921878bb24d1be03 47.94.197.87:3302 master - 0 1511076459915 2 connected 5461-10922
a6299ffcc2063eacb0116aad19cb48f96ebe8970 47.94.197.87:3303 master - 0 1511076458913 3 connected 10923-16383
83b421f4177aaa8a3a62776df96321cf528a4033 47.94.197.87:3304 slave 9cebecfaf51f440eef02c44b8c90a0a9e1dd79be 0 1511076459414 4 connected

**3: ** 进行数据操作验证
4: 关闭集群则需要逐个进行关闭

# 注意: myPassword为你在Redis.conf中配置的密码(见第二步)
/usr/local/redis/bin/redis-cli -c -h 10.144.113.86 -p 330* -a myPassword shutdown

第八步:(补充)
友情提示:当出现集群无法启动时,删除临时的数据文件,再次重新启动每一个redis服务,然后重新构造集群环境。

第九步:(集群操作文章)
redis-trib.rb官方群操作命令:
http://redis.io/topics/cluster-tutorial
推荐博客:
http://blog.51yip.com/nosql/1726.html/comment-page-1

你可能感兴趣的:(数据库,nosql)