A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 等不到彩虹的雨 于 2018-3-15 10:33 编辑

接上篇单机版的Redis,这篇文章介绍集群版linux的安装:

2. redis集群搭建2.1. 准备6节点
为了保证可以进行投票,至少需要3个主节点。每个主节点都需要至少一个从节点,所以需要至少3个从节点。
一共需要6redis服务器;可以使用6redis实例。6redis实例的端口号:7001~7006
2.1.1. 复制实例
#停止redis
./redis-cli shutdown
#bin目录里面的rdb,aof文件删除,准备干净的redis
cd /usr/local/redis/bin
rm -rf appendonly.aof
rm -f dump.rdb
#bin复制6
cd ..
#创建redis-cluster目录
mkdir redis-cluster
cp -r bin redis-cluster/redis1 && cp -r bin redis-cluster/redis2 && cp -r bin redis-cluster/redis3
cp -r bin redis-cluster/redis4 && cp -r bin redis-cluster/redis5 && cp -r bin redis-cluster/redis6
file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps25FF.tmp.jpg
3. 修改端口号
依次修改端口号为7001~7006
cd redis1
vim redis.conf
#修改第84行,端口63797001
port 6379 修改为 port 7001
file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps2600.tmp.jpg
#其它5个一样修改

2.1.2. 同时启动6个实例
cd /usr/local/redis/redis-cluster
#编写启动脚本
vim start-all.sh
#在文件中输入如下内容:
cd redis1
./redis-server redis.conf
cd ..
cd redis2
./redis-server redis.conf
cd ..
cd redis3
./redis-server redis.conf
cd ..
cd redis4
./redis-server redis.conf
cd ..
cd redis5
./redis-server redis.conf
cd ..
cd redis6
./redis-server redis.conf
cd ..
#设置脚本启动权限
chmod u+x start-all.sh
#执行脚本;启动6个实例
./start-all.sh
#查看
ps -ef | grep redis
file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps2610.tmp.jpg
#停止6redis
ps -ef | grep redis
kill 进程号 进程号 ...

2.2. 安装环境
redis集群的管理工具使用的是ruby脚本语言,安装集群需要ruby环境。
#安装ruby环境(上课提供的虚拟机,环境已经装好)
yum install ruby
#安装Ruby的打包系统
yum install rubygems
#安装redis-3.0.0.gemruby接口库
cd /root
使用rz 上传“redis-3.0.0.gem
#安装
gem install redis-3.0.0.gem
file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps2611.tmp.jpg

2.3. 安装redis集群2.3.1. 配置集群节点
#需要修改每个实例的redis.conf配置文件,开启redis-cluster
cd /usr/local/redis/redis-cluster/
vim redis1/redis.conf
# 取消第721行注释(设置集群可用) cluster-enabled yes
# 需要修改其它5个节点;同样修改
# 重启redis实例
./start-all.sh

2.3.2. 集群创建
集群管理工具在redis解压文件夹的src的文件夹中;使用redis-trib.rb命令创建集群。
#先进入集群管理工具所在的路径
cd /root/redis-3.2.8/src/
#执行创建命令(注意如下连接中的ip最好不用127.0.0.1和默认端口)
./redis-trib.rb create --replicas 1 192.168.12.128:7001 192.168.12.128:7002 192.168.12.128:7003 192.168.12.128:7004 192.168.12.128:7005 192.168.12.128:7006
格式:./redis-trib.rb create --replicas 1 ip:port
      ./redis-trib.rb 创建 副本 1  ip:port

启动信息(中间需要输入yes,查看如下红色字体)
>>> Creating cluster
>>> Performing hash slots allocation on 6 nodes...
Using 3 masters:
192.168.12.128:7001
192.168.12.128:7002
192.168.12.128:7003
Adding replica 192.168.12.128:7004 to 192.168.12.128:7001
Adding replica 192.168.12.128:7005 to 192.168.12.128:7002
Adding replica 192.168.12.128:7006 to 192.168.12.128:7003
M: f6eb843ea8176c7f9d3dc313fb14e9db18999408 192.168.12.128:7001
   slots:0-5460 (5461 slots) master
M: b227f3c43727b210f42783314d865170a13ea363 192.168.12.128:7002
   slots:5461-10922 (5462 slots) master
M: d6611966e6bf8ed41583f664e12e12c24a358c67 192.168.12.128:7003
   slots:10923-16383 (5461 slots) master
S: 20a4a937bebc174fbac1d1c74dafe975a06ed44c 192.168.12.128:7004
   replicates f6eb843ea8176c7f9d3dc313fb14e9db18999408
S: 5f6b2fd3d2fe6bb9724277bb0f11973469507dc7 192.168.12.128:7005
   replicates b227f3c43727b210f42783314d865170a13ea363
S: f401437efc8efbea56d0389dbf490aa0087a0cf3 192.168.12.128:7006
   replicates d6611966e6bf8ed41583f664e12e12c24a358c67
Can I set the above configuration? (type 'yes' to accept): yes
>>> Nodes configuration updated
>>> Assign a different config epoch to each node
>>> Sending CLUSTER MEET messages to join the cluster
Waiting for the cluster to join.....
>>> Performing Cluster Check (using node 192.168.12.128:7001)
M: f6eb843ea8176c7f9d3dc313fb14e9db18999408 192.168.12.128:7001
   slots:0-5460 (5461 slots) master
   1 additional replica(s)
S: 20a4a937bebc174fbac1d1c74dafe975a06ed44c 192.168.12.128:7004
   slots: (0 slots) slave
   replicates f6eb843ea8176c7f9d3dc313fb14e9db18999408
M: d6611966e6bf8ed41583f664e12e12c24a358c67 192.168.12.128:7003
   slots:10923-16383 (5461 slots) master
   1 additional replica(s)
S: f401437efc8efbea56d0389dbf490aa0087a0cf3 192.168.12.128:7006
   slots: (0 slots) slave
   replicates d6611966e6bf8ed41583f664e12e12c24a358c67
M: b227f3c43727b210f42783314d865170a13ea363 192.168.12.128:7002
   slots:5461-10922 (5462 slots) master
   1 additional replica(s)
S: 5f6b2fd3d2fe6bb9724277bb0f11973469507dc7 192.168.12.128:7005
   slots: (0 slots) slave
   replicates b227f3c43727b210f42783314d865170a13ea363
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
3. Redis集群连接3.1. 工具连接
redis的单机版,默认是16个数据库,但是redis-Cluster集群版,有n个数据库(多个主数据库则多少个,整个集群算是一个数据库)
#使用redis命令行客户端连接
cd /usr/local/redis/bin
./redis-cli -h 192.168.12.128 -p 7006 -c
file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps2612.tmp.jpg
【注意】一定要-c参数,节点之间则可以互相跳转

使用图形客户端连接时;因为有3台主redis数据库,所以需要连接3台。

3.2. 代码连接
/** 使用JedisCluster集群对象 */
@Test
public void test() throws Exception{
        /** 定义Set集合封装主机与端口HostAndPort(集群节点) */
        Set<HostAndPort> nodes = new HashSet<>();
        /** 添加多个集群节点 */
        nodes.add(new HostAndPort("192.168.12.128", 7001));
        nodes.add(new HostAndPort("192.168.12.128", 7002));
        nodes.add(new HostAndPort("192.168.12.128", 7003));
        nodes.add(new HostAndPort("192.168.12.128", 7004));
        nodes.add(new HostAndPort("192.168.12.128", 7005));
        nodes.add(new HostAndPort("192.168.12.128", 7006));
        
        /** 创建JedisCluster集群对象 */
        JedisCluster jedisCluster = new JedisCluster(nodes);
        /** 设置数据 */
        jedisCluster.set("test", "jedisCluster");
        /** 获取数据 */
        System.out.println(jedisCluster.get("test"));
        /** 关闭JedisCluster */
        jedisCluster.close();
}



0 个回复

您需要登录后才可以回帖 登录 | 加入黑马