实现过程
集群规划
两台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 //启动故障点,让集群正常运行