一、redis 手动切换主从(了解即可)
搭建三个redis,主节点开服务edis-server --port xxxx,从节点开启服务redis-server --port xxxx slave of [主节点ip] [主节点端口]
此时已开启主从,从节点只读,主节点可用以增删改。
主节点挂掉手动在其中一个执行slaveof no one 为主节点。 其余slaveof [新主节点ip] [端口]
二,redis2.X哨兵模式搭建
当主服务挂掉,哨兵集群会进行投票,选出新的主节点。在redis3.0之前sentinel是单独的进程。与redis是分开的。目录在redis/src/redis-sentinel
首先cp redis/src/redis-sentinel /opt/soft/redis/bin/ 将执行文件放入可直接执行目录,其次创建哨兵配置文件内容为
kanq代表监控的集群名称 不可重复。127.0.0.1代表所监控的主节点ip
+端口 2代表票数。当前我的哨兵为3个所以配置的2!!!
开启主从节点服务:主节点开服务edis-server --port xxxx,从节点开启服务redis-server --port xxxx slave of [主节点ip] [主节点端口]。
开启哨兵进程:redis-sentinel s1.conf (设置的每个哨兵都开启)
达到效果,主节点挂掉从节点中选取一个成为主节点。解决单点故障。但是依旧存在单点瓶颈。
三、redis3.x rediscluster集群。
在redis3.0后 redis-server自带哨兵。cluster集群将数据库分为16384个槽位slot。所有的key先进行计算slot_number=crc16(key)%16384,
然后根据结果分配到不同的槽。这也就意味着:1,集群会进行初始化生成槽。2,每个主节点会被分配到一定的槽。从而解决单点瓶颈。3,每个主节点会有自己的从节点,从而解决单点故障。4,每个主节点会内置类似sentinel的功能,进行自动故障转移。5,集群无中心节点,请求会发给任意节点。主节点只执行和自己的槽有关的命令,对于其他草的命令转向到对应的节点执行。
开始搭建:
1、上传3.x包,解压。安装 make && make PREFIX=/xx/xx/xx install
2,yum install 一些组件 如 gcc tcl ruby rubygems等
3,在cluster下执行gem install --local redis-3.3.0.gem 安装gem支持redis3.0分配槽位。
4,配置启动时加载的文件redis.conf:
5,开启服务(以6台为例),redis-server redis.conf
6,在redis/src目录下执行脚本。./redis-trib.rb create --replicas 1 127.0.0.1:7000 127.0.0.1:7001
127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005
此命令完成主从节点定义 及槽位分配。可见:
完成搭建。
ps:做一只快乐的胖子,要是再找到个小姐姐就更棒了!哈哈