河北网站建设报价,微商城网站策划,wordpress 新建表单,代理公司注册上海1、在虚拟机中部署具有三个主节点#xff0c;三个从节点的集群(注#xff0c;必须要有从节点)#xff0c;虚拟机的IP地址为192.168.133.129#xff0c;三个主节点的部口号分别为7001(从#xff1a;7004)、7002(从#xff1a;7005)、7003(从#xff1a;7006)。2、安装Red…1、在虚拟机中部署具有三个主节点三个从节点的集群(注必须要有从节点)虚拟机的IP地址为192.168.133.129三个主节点的部口号分别为7001(从7004)、7002(从7005)、7003(从7006)。2、安装Redis教程网上都有。这里我们已经准备好的Redis二进制安装文件放在/opt/modules/redis/bin目录下。再在redis目录下新建data、log、conf三个目录。分别存放集群数据、日志和配置文件。3、节点1的配置文件(conf/redis-7001.conf)如下# 以守护进程方式启动daemonize yes# 指定进程文件路径注意其它节点要有相应的变动把7001变成对应的端口号pidfile /opt/modules/redis/run/redis-7001.pid# 指定节点的端口port 7001# 指定节点的日志文件logfile /opt/modules/redis/log/redis-7001.log# 指定节点的数据文件dbfilename dump-7001.rdb# 指定集群的数据目录dir /opt/modules/redis/data# 启用集群cluster-enabled yes# 集群文件名称这个文件会有Redis自动生成并放在data目录下cluster-config-file nodes-7001.conf# 集群节点超时时间cluster-node-timeout 10000# 下面两行为了设置节点的密码以便可以远程访问masterauth 123456requirepass 123456# 绑定IP地址如果不写黙认绑定127.0.0.1远程就无法访问bind 192.168.133.129其它节点的配置文件直接复制7001节点的配置文件并将7001改成对应的值(7002-7006)配置文件名称也是redis-7002/7006.conf。放在conf目录下。4、上面完成之后这里我写了一个脚本启动这6个节点注意这个脚本要放在redis目录下由于脚本中的命令写的是相对路径所以放在redis目录下也就是与bin目录同级。脚本文件内容如下$pwd$/opt/modules/redis$cat start.shbin/redis-server conf/redis-7001.confbin/redis-server conf/redis-7002.confbin/redis-server conf/redis-7003.confbin/redis-server conf/redis-7004.confbin/redis-server conf/redis-7005.confbin/redis-server conf/redis-7006.conf$sudo chmod x start.sh5、再写一个停止6个节点的脚本文件也放在redis目录下。文件名称为stop.sh$ stop.shbin/redis-cli -h 192.168.133.129 -p 7001 -a 123456 shutdownbin/redis-cli -h 192.168.133.129 -p 7002 -a 123456 shutdownbin/redis-cli -h 192.168.133.129 -p 7003 -a 123456 shutdownbin/redis-cli -h 192.168.133.129 -p 7004 -a 123456 shutdownbin/redis-cli -h 192.168.133.129 -p 7005 -a 123456 shutdownbin/redis-cli -h 192.168.133.129 -p 7006 -a 123456 shutdown$ chmod x stop.sh6、运行start.sh启动6个节点$ cd /opt/modules/redis$ sudo ./start.sh7、好了现在每个节点都启动起来了可以用以下命令查看集群状态$ bin/redis-cli -h 192.168.133.129 -p 7001 -a 123456 cluster nodes注意这个命令只显示了7001节点是master节点同样查看7002-7006都是独立的master主节点。8、上面的节点都是独立的现在让它们组成集群相互发现自己注意这个操作只需要操作一遍redis会自己保存集群的配置文件也就是在节点配置文件中指定的集群配置文件的名称。集群发现脚本如下文件名为meet.sh也放在redis目录下$ cat meet.shbin/redis-cli -h 192.168.133.129 -p 7001 -a 123456 cluster meet 192.168.133.129 7002bin/redis-cli -h 192.168.133.129 -p 7001 -a 123456 cluster meet 192.168.133.129 7003bin/redis-cli -h 192.168.133.129 -p 7001 -a 123456 cluster meet 192.168.133.129 7004bin/redis-cli -h 192.168.133.129 -p 7001 -a 123456 cluster meet 192.168.133.129 7005bin/redis-cli -h 192.168.133.129 -p 7001 -a 123456 cluster meet 192.168.133.129 7006解释上面第一句命令让7001节点发现了7002节点这样7001、7002就组成了一个集群再让7001发现7003由于7001已经在一个集群中了所以7003就加入到集群中这个过程你也可以用7002节点去发现7003道理一样。好了现在再执行$ bin/redis-cli -h 192.168.133.129 -p 7001 -a 123456 cluster nodes这条命令就会显示6个master节点。8、为主节点分配slots注意现在主从节点还没有分别我们只是人为定义7001、7002、7003这三个节点为主节点分配槽的脚本如下$ cat slot.shfor i in {0..5400};do bin/redis-cli -h 192.168.133.129 -p 7001 -a 123456 cluster addslots $i; donefor i in {5401..11000};do bin/redis-cli -h 192.168.133.129 -p 7002 -a 123456 cluster addslots $i; donefor i in {11001..16383};do bin/redis-cli -h 192.168.133.129 -p 7003 -a 123456 cluster addslots $i; done注意槽数量一定一共有16384个槽编号为0..16383上述命令平均分配三个节点。9、现在所有的节点都是主节点现在要将7004、7005、7006这三个节点指定为7001、7002、7003的从节点。命令如下$ cd /opt/modules/redis$ bin/redis-cli -h 192.168.133.129 -p 7004 -a 123456 cluster replicate 89bd19f86c9eaa04f6b9aa8e1813a5bfe379c5f2$ bin/redis-cli -h 192.168.133.129 -p 7005 -a 123456 cluster replicate 08db1cecd4770dd1c086b3cf8c34acb457bb0ebc$ bin/redis-cli -h 192.168.133.129 -p 7006 -a 123456 cluster replicate 7e618dc71117821d2cbfb908c7a07460a1a286fd上述命令中的89bd19f86c9eaa04f6b9aa8e1813a5bfe379c5f2是7001节点的ID08db1cecd4770dd1c086b3cf8c34acb457bb0ebc是7002节点的ID7e618dc71117821d2cbfb908c7a07460a1a286fd是7003节点的ID。这个ID可以使用命令查看$ bin/redis-cli -h 192.168.133.129 -p 7001 -a 123456 cluster nodes7e618dc71117821d2cbfb908c7a07460a1a286fd 192.168.133.129:700317003 master - 0 1555847474000 5 connected 11001-16383f3b669f5654eddb5b782bf72bf390dc702b9e201 192.168.133.129:700617006 slave 7e618dc71117821d2cbfb908c7a07460a1a286fd 0 1555847475087 5 connected7196289749e68d25fe77f3e66c44becbe37cc791 192.168.133.129:700517005 slave 08db1cecd4770dd1c086b3cf8c34acb457bb0ebc 0 1555847472037 4 connected89bd19f86c9eaa04f6b9aa8e1813a5bfe379c5f2 192.168.133.129:700117001 myself,master - 0 1555847471000 1 connected 0-5400cb015faba5d1ead01787173998d56852935a19b2 192.168.133.129:700417004 slave 89bd19f86c9eaa04f6b9aa8e1813a5bfe379c5f2 0 1555847473048 2 connected08db1cecd4770dd1c086b3cf8c34acb457bb0ebc 192.168.133.129:700217002 master - 0 1555847474077 3 connected 5401-11000从节点分配好后如以上命令所示。注意分配置从节点时这个节点上必须没有被分配任何一个槽并且节点中没有数据。10、这个集群就分配好了可以使用./stop.sh停止这6个节点再用./start.sh启动这6个节点再用$ bin/redis-cli -h 192.168.133.129 -p 7001 -a 123456 cluster nodes这个命令查看集群状态是对的。redis会自动保存集群的状态。11、你可以停止7001主节点发现7004的状态由slave状态变成master状态。$ bin/redis-cli -h 192.168.133.129 -p 7001 -a 123456 shudown$ bin/redis-cli -h 192.168.133.129 -p 7002 -a 123456 cluster nodes89bd19f86c9eaa04f6b9aa8e1813a5bfe379c5f2 192.168.133.129:700117001 master,fail - 1555848004665 1555848000000 1 disconnectedf3b669f5654eddb5b782bf72bf390dc702b9e201 192.168.133.129:700617006 slave 7e618dc71117821d2cbfb908c7a07460a1a286fd 0 1555848029000 5 connectedcb015faba5d1ead01787173998d56852935a19b2 192.168.133.129:700417004 master - 0 1555848031010 6 connected 0-540008db1cecd4770dd1c086b3cf8c34acb457bb0ebc 192.168.133.129:700217002 myself,master - 0 1555848029000 3 connected 5401-110007196289749e68d25fe77f3e66c44becbe37cc791 192.168.133.129:700517005 slave 08db1cecd4770dd1c086b3cf8c34acb457bb0ebc 0 1555848030000 4 connected7e618dc71117821d2cbfb908c7a07460a1a286fd 192.168.133.129:700317003 master - 0 1555848030000 5 connected 11001-16383现在可以看到7004已经成为主节点了下次再将7001启动起来7001会自动成为7004的从节点。12、设置数据$ bin/redis-cli -h 192.168.133.129 -p 7002 -a 123456 set foo 1Warning: Using a password with -a or -u option on the command line interface may not be safe.(error) MOVED 12182 192.168.133.129:7003在7002节点上将foo键设置为1时报了一个错(error) MOVED 12182 192.168.133.129:7003。注意这是正常Redis告诉你这个foo键的hash槽在7003节点中不在7002节点中你应该在7003节点设置foo这个键的值。如果使用redis desktop manager连接redis集群如果连接了7002再设置set foo 1时会自动切换到7003节点的连接将设置成功。如果使用Java的Jedis连接集群也是有专门的配置方式在设置一个键时如果槽不在这个节点上Redis会给出反馈客户端会自动切换到对应节点上再设置。