当前位置: 首页 > Linux

Redis集群搭建及简单使用(四)

时间:2023-04-06 04:10:27 Linux

工具VMware版本号:12.0.0CentOS版本:7.0三台虚拟机(IP):192.168.1.8、192.168.1.9、192.168.1.10安装Redis下载、解压、编译:$cd/usr/local/$wgethttp://download.redis.io/releases/redis-3.2.6.tar.gz$tarxzfredis-3.2.6.tar.gz$cdredis-3.2.6$make创建Redis节点先在192.168.1.8机器的/usr/local/redis-3.2.6目录下创建redis_cluster目录$mkdir/usr/local/redis-3.2.6/redis_cluster 在redis_cluster目录,创建7000、7001、7002目录,将redis.conf复制到这三个目录$mkdir700070017002$cp/usr/local/redis-3.2.6/redis.conf/usr/local/redis-3.2。6/redis_cluster/7000$cp/usr/local/redis-3.2.6/redis.conf/usr/local/redis-3.2.6/redis_cluster/7001$cp/usr/local/redis-3.2.6/redis。conf/usr/local/redis-3.2.6/redis_cluster/7002分别修改这三个配置文件,修改如下内容port7000//port7000,7002,7003bindlocalip//defaultipis127.0.0.1,需要改成其他node机器可以访问的ip,否则创建集群时无法访问对应端口,无法创建集群daemonizeyes//redis后台运行pidfile/var/run/redis_7000.pid//pidfile对应7000,7001,7002cluster-enabledyes//启用集群,去掉cluster-config-file中的注释#nodes_7000.conf//集群的配置,第一次自动生成配置文件7000,7001,7002cluster-node-timeout15000//请求超时,默认15秒,可以设置appendonlyyes//开启Aof日志,如果需要,会记录一条日志对于每一次写操作 然后在另外两台机器(192.168.1.9、192.168.1.10)上重复以上三步,只需将目录改为7003、7004、7005、7006、7007、7008即可。配置文件也可以按照这个规则修改启动各个节点##在第一台机器上执行$/usr/local/redis-3.2.6/src/redis-server/usr/local/redis-3.2.6/redis_cluster/7000/redis.conf$/usr/local/redis-3.2.6/src/redis-server/usr/local/redis-3.2.6/redis_cluster/7001/redis.conf$/usr/local/redis-3.2.6/src/redis-server/usr/local/redis-3.2.6/redis_cluster/7002/redis.conf##执行$/usr/local/redis-3.2.6/src/redis-server/usr/local/redis-3.2.6/redis_cluster/在第二台机器上7003/redis.conf$/usr/local/redis-3.2.6/src/redis-server/usr/local/redis-3.2.6/redis_cluster/7004/redis.conf$/usr/local/redis-3.2.6/src/redis-server/usr/local/redis-3.2.6/redis_cluster/7005/redis.conf##在第三台机器redis上执行$/usr/local/-3.2.6/src/redis-server/usr/local/redis-3.2.6/redis_cluster/7006/redis.conf$/usr/local/redis-3.2.6/src/redis-server/usr/local/redis-3.2.6/redis_cluster/7007/redis.conf$/usr/local/redis-3.2.6/src/redis-server/usr/local/redis-3.2.6/redis_cluster/7008/redis.conf检查每个Redis启动状态##第一台机器$ps-ef|grepredis//redis是否启动成功$netstat-tnlp|grepredis//监听redis端口注意:确保各节点没有配置错误,启动时关闭防火墙$firewall-cmd--state##查看防火墙状态runningrunning表示防火墙开启$systemctlstopfirewalld##关闭防火墙$firewall-cmd--statenotrunning注意:CentOS7关闭防火墙不同于CentOS6安装Ruby$yum-yinstallruby??ruby??-develruby??gemsrpm-build$geminstallredis注意:创建集群需要安装Ruby运行redis-trib.rb创建集群Redis解压目录src目录下提供官方工具redis-trib.rb$/usr/local/redis-3.2.6/src/redis-trib.rb创建--replicas1192.168.1.8:7000192.168.1.8:7001192.168.1.8:7002192.168.1.9:7006192.168.1.9:7004192.168.1.9:7005192.168.1.10:7006192.168.1.10:7007192.168.1.10:7008其中前三个ip:ports为第一台机器的节点,中间三个第二台机器输入yes,最后三个是第三台机器,然后出现如下内容,说明安装成功。集群验证在第一台机器上连接集群的7000节点,7004节点连接另一台。连接方式为:##添加参数-C连接集群,因为redis.conf更改bind为ip地址,所以-h参数不能省略,-p参数为端口号$/usr/local/redis-3.2.6/src/redis-cli-h192.168.1.8-c-p7000在7004节点执行命令:192.168.1.9:7004>setnameredis然后查看key的内容为name192.168.1.8:7000在另外两个端口7000和7007>getname192.168.1.10:7007>getname表示集群运行正常。总结Redis集群在设计时考虑了去中心化和中间件。也就是说,集群中的每个节点都是平等的关系。都是平等的,每个节点保存自己的数据和整个集群的状态,每个节点都连接到所有其他节点,并且这些连接保持活跃,这保证了我们只需要连接到集群中的任何一个节点,你可以获取其他节点的数据。Redis集群并没有使用传统的一致性哈希来分配数据,而是使用另一种称为哈希槽(hashslot)的方法来分配数据。Redis集群默认分配16384个槽。当我们设置一个key时,我们会使用CRC16算法取模得到它所属的slot,然后将key分配给hashslot区间内的节点。具体算法为:CRC16(key)%16384。所以我们在测试的时候看到set和get,就直接跳转到7000端口的节点,Redis集群会将数据存储在一个master节点,然后master和它对应的slave进行数据同步。在读取数据时,也会根据一致性哈希算法从对应的主节点获取数据。只有当一个master挂了,才会启动一个对应的slave节点充当master。需要注意的是,master节点必须有3个或更多,否则集群创建失败,当存活的master节点数量少于节点总数的一半时,整个集群将无法创建提供服务。相关文档:中文:http://www.redis.cn/topics/cl...英文:https://redis.io/topics/clust...相关链接:Linux下PHP安装Redis扩展(二)Redis主从配置(三)Redis持久化(五)