@TOC
redis集群搭建原理
Redis集群的搭建
当集群中超过或等于1/2节点不可用时,整个集群不可用。为了搭建稳定集群,都采用奇数节点。
- 1,配置redis
- [ ] 复制配置文件
将 /usr/local/redis/bin下的redis.conf复制一份,并重命名为redis-6789.conf
名字可随便起,但要见名知意,6789是复制后要修改成的文件端口号
[root@localhost bin]# cp /usr/local/redis/bin/redis.conf /usr/local/redis/bin/redis-6789.conf
[root@localhost bin]# ls
redis-6789.conf redis-check-aof redis-cli redis-sentinel
redis-benchmark redis-check-rdb redis.conf redis-server
- [ ] 修改redis-6789.conf
[root@localhost bin]# vi /usr/local/redis/bin/redis-6789.conf
修改内容如下
port 6789
#普通的redis实例不能作为集群实例的一部分,只有节点才能作为集群的启动点;
cluster-enabled yes # 启用集群支持
# 集群节点的配置文件, 由节点自己生成自己管理;每个节点的配置文件要求不能重名
cluster-config-file nodes-6789.conf
# 群集节点超时是一个节点必须不可达的毫秒数,使其处于失效状态。
#大多数其他内部时间限制都是节点超时的倍数。
cluster-node-timeout 15000
# appendonly yes 如果开启aof默认,需要修改为yes。如果使用rdb,此处不需要修改
# 开启守护线程,Redis会在/var/run/ Redis中写入一个pid文件监控pid。
daemonize yes
#将保护模式关闭
protected-mode no
#如果指定了pid文件,Redis会在启动时将其写入指定的位置并在退出时移除它。
#当服务器运行非守护进程时,如果没有pid文件,则不创建pid文件
#在配置中指定。当服务器被守护时,pid文件即使没有指定也会被使用,默认值为“/var/run/redis.pid”。
#如果没有创建成功.pid文件,redis也会正常运行;
pidfile /var/run/redis_6789.pid
- [ ] 将redis-6789.conf复制6份,将相关配置按照上面的方式修改
port 6790
cluster-config-file nodes-6790.conf
pidfile /var/run/redis_6790.pid
- [ ] 启动6个redis
启动之前先要删除之前存在的dump.rdb文件,以免影响启动策略
新建一个启动文件 startup.sh 编辑内容如下
./redis-server redis-6789.conf
./redis-server redis-6790.conf
./redis-server redis-6791.conf
./redis-server redis-6792.conf
./redis-server redis-6793.conf
./redis-server redis-6794.conf
赋予权限~
chmod a+x startup.sh
启动服务
查看启动状态
以上是手动建立集群
配置集群时要配置静态Ip,dang ip改变时,集群就失效了
在redis5之后支持命令行创建集群在/usr/local/redis/bin下执行
./redis-cli --cluster create
192.168.135.145:6789
192.168.135.145:6790
192.168.135.145:6791
192.168.135.145:6792
192.168.135.145:6793
192.168.135.145:6794
--cluster-replicas 1
编写关闭脚本
[root@localhost bin]# touch shutdown.sh
[root@localhost bin]# vi shutdown.sh
编写内容~
./redis-cli -p 6789 shutdown
./redis-cli -p 6790 shutdown
./redis-cli -p 6791 shutdown
./redis-cli -p 6792 shutdown
./redis-cli -p 6793 shutdown
./redis-cli -p 6794 shutdown
赋予权限
[root@localhost bin]# chmod a+x shutdown.sh
启动集群
注意 端口号 后 要有 -c 表示启动集群,如果没有则表示正常启动redis的一个;
[root@localhost bin]# ./redis-cli -p 6789 -c
127.0.0.1:6789> set name lisi
-> Redirected to slot [5798] located at 192.168.135.145:6790
OK
192.168.135.145:6790> get name
"lisi"
192.168.135.145:6790> hset person name wangwu
-> Redirected to slot [1838] located at 192.168.135.145:6789
(integer) 1
192.168.135.145:6789>
有上述信息可以发现~redis set name 重定向到192.168.135.145:6790机器 redis 6790 这个节点.如果看到这样的现象,说明redis cluster集群已经是可用的了!!!!!!
集群在遇到大量i/o操作时会自动分配节点去执行写入操作;
关闭集群
./shutdown.sh
另一种方式是通过手动配置redis的配置信息来完成redis的定制化
基本配置指定主节点ip和端口
replicaof 192.168.93.10 6379
修改自己端口
port 6381
守护模式开启,保护模式关闭
为了增强redis集群的健壮性,我们还需要开启哨兵来监控redis的运行状态,万一哪一天主节点挂了,以备有子节点能顶上;
在redis主从默认是只有主具备写的能力,而从只能读。如果主宕机,整个节点不具备写能力。但是如果这是让一个从变成主,整个节点就可以继续工作。即使之前的主恢复过来也当做这个节点的从即可。
1,新建目录
mkdir /usr/local/sentinel
2,复制redis
cp -r /usr/local/redis/bin/* /usr/local/sentinel
3,从redis解压目录中复制sentinel配置文件
cd /usr/local/tmp/redis-5.0.5/
cp sentinel.conf /usr/local/sentinel/
4.修改配置文件
cd /usr/local/sentinel
vim sentinel.conf
port 26379
daemonize yes
logfile “/usr/local/sentinel/26379.log”
sentinel monitor mymaster 192.168.93.10 6379 2
其他的节点配置类似
接下来启动 redis 集群
然后启动哨兵
新建启动文件--startup.sh,并赋予权限
启动文件的内容
cd /usr/local/sentinel/bin
./redis-sentinel sentinel.conf
cd /usr/local/sentinel/bin
./redis-sentinel sentinel-26380.conf
cd /usr/local/sentinel/bin
./redis-sentinel sentinel-26381.conf
ps aux|grep sentinel
~
赋予权限chmod a+x startup.sh
启动哨兵
测试宕机
查看redis进程号
ps aux|grep redis
杀死主进程号
kill -9 进程号
查看日志,短暂延迟后会发现,出现新的主。
标签:bin,6789,Redis,redis,集群,conf,sentinel,搭建 From: https://blog.51cto.com/u_15912968/6148304cat 26379.log