0
点赞
收藏
分享

微信扫一扫

Redis搭建稳定的集群

@TOC

redis集群搭建原理

 Redis搭建稳定的集群_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

启动服务

 Redis搭建稳定的集群_配置文件_02

查看启动状态

 Redis搭建稳定的集群_配置文件_03

以上是手动建立集群

配置集群时要配置静态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

 Redis搭建稳定的集群_Redis_04

 Redis搭建稳定的集群_Redis_05

编写关闭脚本

[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操作时会自动分配节点去执行写入操作;

 Redis搭建稳定的集群_配置文件_06

关闭集群

./shutdown.sh

 Redis搭建稳定的集群_redis_07

另一种方式是通过手动配置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 进程号

查看日志,短暂延迟后会发现,出现新的主。

cat 26379.log

举报

相关推荐

0 条评论