redis 集群
实现过程 集群规划 两台redis服务器,每一台服务器上放置三个节点,一共六个结点 1,创建单机redis 克隆redis1为redis2 1)修改ip地址(只需要改ip,因为本身克隆机) vim /etc/sysconfig/network-scripts/ifcfg-eth0 2)删除网卡和mac地址的对应文件 rm -rf/etc/udev/rules.d/70-persistent-net.rules 3)修改主机名称 vim /etc/sysconfig/network (把HOSTNAME=虚拟机名) 4)修改hosts vim /etc/hosts ip + 虚拟机名 5)重启 reboot 2,单机创建节点 1)在单机 /usr/redis目录下创建 cluster 目录; mkdir cluster 2)在 cluster 下创建节点目录(为了方便创建和端口号一样的目录) mkdir cluster/7001 mkdir cluster/7002 mkdir cluster/7003 3)复制redis.conf配置到节点目录下 cp bin/redis.conf cluster/7001/ 4)修改配置redis.conf: vim cluster/7001/redis.conf port 7001 //端口7001,7002,7003 92行 bind 本机ip //默认ip为127.0.0.1 需要改为其他节点机器可访问的ip 否则创建集群时无法访问对应的端口,无法创建集群 69行 daemonize yes //redis后台运行 136行 pidfile /var/run/redis_7000.pid //pidfile文件对应7000,7001,7002 158行 cluster-enabled yes //开启集群 把注释#去掉 814行 cluster-config-file nodes_7000.conf //集群的配置 配置文件首次启动自动生成 7000,7001,7002 822行 cluster-node-timeout 15000 //请求超时 默认15秒,可自行设置 828行 appendonly yes //aof日志开启 有需要就开启,它会每次写操作都记录一条日志 672行 5)复制7001下redis.conf 到7002和7003 cp cluster/7001/redis.conf cluster/7002 cp cluster/7001/redis.conf cluster/7003 6) 修改7002和7003下的配置文件 vim cluster/7002/redis.conf 使用全局替换,把7001替换为7002 底行模式下 :%s/7001/7002/g vim cluster/7003/redis.conf 底行模式下 :%s/7001/7003/g 3,如果多台主机都分别执行第2步操作 登录redis2上 进入redis目录 cd /usr/redis 执行远程cp命令 scp -r 192.168.182.20:/usr/redis/cluster . 把 192.168.182.20上的cluster目录拷贝到,当前目录下 输入yes 等待输入密码:tiger 修改目录名称: mv cluster/7001 cluster/7004 mv cluster/7002 cluster/7005 mv cluster/7003 cluster/7006 修改配置: vim cluster/7004/redis.conf 底行模式下 :%s/7001/7004/g 69行,修改IP vim cluster/7005/redis.conf 底行模式下 :%s/7002/7005/g 69行,修改IP vim cluster/7006/redis.conf 底行模式下 :%s/7003/7006/g 69行,修改IP 4,启动及检查 启动: redis1: ./bin/redis-server cluster/7001/redis.conf ./bin/redis-server cluster/7002/redis.c-onf ./bin/redis-server cluster/7003/redis.conf redis2: ./bin/redis-server cluster/7004/redis.conf ./bin/redis-server cluster/7005/redis.conf ./bin/redis-server cluster/7006/redis.conf 关闭: ./bin/redis-cli -h 192.168.23.30 -p 7001 shutdown 检查: ps -ef | grep redis netstat -tnlp | grep redis 5,使用官方提供工具创建集群(只需要启动机器上安装) ( 使用命令前需要安装 ruby ) redis-trib.rb 该命令是ruby程序写的,所以要下载安装ruby yum -y install ruby ruby-devel rubygems rpm-build yum install -y centos-release-scl-rh (SCL:Software Collections SCL 的设计初衷就是在不影响原有配置的前提下,让新旧软件能一起运行。 用户提供一种以方便、安全地安装和使用应用程序和运行时环境的多个(而且可能是更新的)版本的方式,同时避免把系统搞乱。) yum install rh-ruby23 -y scl enable rh-ruby23 bash ruby -v gem install redis ././gem Gem是一个管理Ruby库和程序的标准包,它通过Ruby Gem 源来查找、安装、升级和卸载软件包,非常的便捷。 使用redis提供命令创建集群 在解压目录的redis-4.0.1/src下执行:redis-trib.rb 语法: redis-trib.rb create --replicas 1 ip1:7000 ip1:7001 ip1:7002 ip2:7003 ip2:7004 ip2:7005 实际操作: ./redis-4.0.1/src/redis-trib.rb create --replicas 1 192.168.182.20:7001 192.168.182.20:7002 192.168.182.20:7003 192.168.182.21:7004 192.168.182.21:7005 192.168.182.21:7006 中间确认:Can I set the above configuration? (type 'yes' to accept): yes [OK] All 16384 slots covered // 成功!! 链接测试 语法: ./redis-cli -h ip1 -c -p 7000 设置值,在任意其他节点取值,可以成功,说明集群成功
集群的启动和关闭 让节点故障 方法1: cluster nodes //节点信息的使用 ps -ef|grep redis // 在192.168.182.21 kill -9 主节点进程ID kill -9 2929 ps -ef|grep redis 使用客户端链接 ./bin/redis-cli -c -h 192.168.182.20 -p 7001 链接集群,查看节点信息 cluster nodes -- 注意: 节点故障修复后,会被集群自动加入 ./bin/redis-server cluster/7004/redis.conf //在192.168.182.21上执行 ps -ef|grep redis 方法2: cluster nodes //节点信息的使用 7006是7002的从节点 ./bin/redis-cli -h 192.168.182.20 -p 7002 shutdown ps -ef|grep redis ./bin/redis-cli -c -h 192.168.182.20 -p 7001 cluster nodes //发现7006变为主节点 7002 fail ./bin/redis-server cluster/7002/redis.conf //启动 ./bin/redis-cli -c -h 192.168.182.20 -p 7001 cluster nodes //发现7002成为7006的从节点 cluster nodes :查看所有的节点 cluster info :查看节点的状态 ps -ef | grep redis //查看是否挂掉 ./bin/redis-cli -c -h ip -p port //进入该节点 集群恢复正常 ./bin/redis-server cluster/端口/redis.conf //启动故障点,让集群正常运行