本帖最后由 等不到彩虹的雨 于 2018-3-15 10:33 编辑
接上篇单机版的Redis,这篇文章介绍集群版linux的安装:
2. redis集群搭建2.1. 准备6个节点为了保证可以进行投票,至少需要3个主节点。每个主节点都需要至少一个从节点,所以需要至少3个从节点。 一共需要6台redis服务器;可以使用6个redis实例。6个redis实例的端口号: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行,端口6379为7001 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 #停止6个redis ps -ef | grep redis kill 进程号 进程号 ... |
2.2. 安装环境redis集群的管理工具使用的是ruby脚本语言,安装集群需要ruby环境。 #安装ruby环境(上课提供的虚拟机,环境已经装好) yum install ruby #安装Ruby的打包系统 yum install rubygems #安装redis-3.0.0.gem的ruby接口库 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(); } |
|