700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > redis集群之主从复制+哨兵模式

redis集群之主从复制+哨兵模式

时间:2019-03-17 10:21:28

相关推荐

redis集群之主从复制+哨兵模式

文章目录

一、redis集群之主从复制1.1、集群介绍1.2、搭建过程1.3、验证二、redis集群之哨兵模式2.1、部署过程1、搭建主从复制集群2、设置哨兵模式的配置文件3、启动哨兵服务2.2、故障模拟

redis集群的理论知识请参考我之前的博客,链接为:redis集群之主从复制+哨兵模式+cluster群集(理论+实战,收获满满!!!)

一、redis集群之主从复制

1.1、集群介绍

在主从模式的Redis系统中,从数据库在整个系统中起到了数据冗余备份和读写分离的作用。

1.2、搭建过程

1、先给每个节点安装redis

//安装编译工具yum install -y gcc gcc-c++ make//安装包可以用下面这个命令下载,但是慢。wget http://download.redis.io/releases/redis-5.0.7.tar.gz#软件包解压到/usr/local目录下tar -zxvf redis-5.0.7.tar.gz -C /usr/local //编译安装cd /usr/localmv redis-5.0.7 rediscd redismakecd src && make install

2、修改主、从节点的配置文件

主节点:vi /usr/local/redis/redis.conf 69/bind 0.0.0.0在研发、测试环境可以考虑bind 0.0.0.0,线上生产环境建议绑定从节点服务器的IP地址sed -i '69s/127.0.0.1/0.0.0.0/' /usr/local/redis/redis.conf136行 daemonize no#开启守护进程yessed -i '136s/no/yes/' /usr/local/redis/redis.conf171行 logfile "" 改成 logfile /usr/local/redis/redis.logsed -i '171s/""/\/usr\/local\/redis\/redis.log/' /usr/local/redis/redis.conf263行 dir ./ 改成 dir /usr/local/redis #本地数据库的存放目录sed -i '263s/.\//\/usr\/local\/redis/' /usr/local/redis/redis.conf699/appendonly no #启用AOF持久化sed -i '699s/no/yes/' /usr/local/redis/redis.conf

从节点:vi /usr/local/redis/redis.conf 69/bind 0.0.0.0在研发、测试环境可以考虑bind 0.0.0.0,线上生产环境建议绑定从节点服务器的IP地址sed -i '69s/127.0.0.1/0.0.0.0/' /usr/local/redis/redis.conf136行 daemonize no#开启守护进程yessed -i '136s/no/yes/' /usr/local/redis/redis.conf171行 logfile "" 改成 logfile /usr/local/redis/redis.logsed -i '171s/""/\/usr\/local\/redis\/redis.log/' /usr/local/redis/redis.conf263行 dir ./ 改成 dir /usr/local/redissed -i '263s/.\//\/usr\/local\/redis/' /usr/local/redis/redis.conf699/appendonly no #启用AOF持久化sed -i '699s/no/yes/' /usr/local/redis/redis.conf286/# replicaof <masterip> <masterport> 改成 replicaof 192.168.100.128 6379sed -i '286creplicaof 192.168.100.128 6379' /usr/local/redis/redis.conf

3、设置防火墙,放通6379端口的信息流通

firewall-cmd --zone=public --add-port=6379/tcp --permanentfirewall-cmd --reload

4、设置内存分配策略

cat >> /etc/sysctl.conf<<EOFvm.overcommit_memory = 1EOF/proc/sys/vm/overcommit_memory 可选值:0、1、2。0:表示内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则,内存申请失败,并把错误返回给应用进程。1:表示内核允许分配所有的物理内存,而不管当前的内存状态如何。2:表示内核允许分配超过所有物理内存和交换空间总和的内存sysctl -p #加载生效

5、启动服务,先启动master redis,然后依次启动slave

/usr/local/redis/src/redis-server /usr/local/redis/redis.conf

6、 查看日志文件内容,可以看到两个slave节点连接成功的信息!

tail -99f /usr/local/redis/redis.log

也可以通过登录数据库,查看节点角色

1.3、验证

进入主节点的数据库中,创建键值对,在从节点中可以进行查询,但是不能在从节点创建新的键值对。

主节点:

[root@localhost redis]# redis-cli127.0.0.1:6379> set name zhangsan #创建一个键值对OK127.0.0.1:6379> keys * #查看所有键1) "name"127.0.0.1:6379> get name #查看name键的值"zhangsan"127.0.0.1:6379> exit

从节点服务器:

[root@localhost ~]# redis-cli 127.0.0.1:6379> get name #查看name键的值"zhangsan"127.0.0.1:6379> exit

二、redis集群之哨兵模式

2.1、部署过程

redis2.8版本之前是主从复制模式,但是当数据库遇到异常中断服务后,我们只能通过手动的方式选择一个从数据库来升格为主数据库,显然这种方式很麻烦需要人工介入,这时通过哨兵模式可以实现自动化的系统监控和故障恢复。

哨兵模式是在主从复制的基础上加入监控机制,来实现自动化的系统监控和故障恢复功能。

具体功能如下:

哨兵集群的结构图:

每个节点都有一个哨兵进行监控。

1、搭建主从复制集群

2、设置哨兵模式的配置文件

master节点:

vi /usr/local/redis/sentinel.conf17/protected-mode no #关闭保护模式sed -i '17s/^#//' /usr/local/redis/sentinel.confsed -i '17s/^ //' /usr/local/redis/sentinel.conf21/port 26379#无需修改,sentinel的端口号26/daemonize yes 指定sentinel为后台启动sed -i '26s/no/yes/' /usr/local/redis/sentinel.conf36/logfile /usr/local/redis/sentinel.log #日志存放路径sed -i '36s/""/\/usr\/local\/redis\/sentinel.log/' /usr/local/redis/sentinel.conf65/dir /tmp 改成 dir "/usr/local/redis" #数据库存放路径sed -i '65s/tmp/usr\/local\/redis/' /usr/local/redis/sentinel.conf84/sentinel monitor mymaster 192.168.100.128 6379 2sed -i '84s/127.0.0.1/192.168.100.128/' /usr/local/redis/sentinel.conf//sentinel monitor mymaster [主服务器节点IP] [主服务器节点port] [几个哨兵检测到主节点失联数量] -- 至少有几个哨兵检测到主服务器故障了,才进行故障迁移 113/sentinel down-after-milliseconds mymaster 3000#原来是30000,为了尽快看到效果,将时间缩短 sed -i '113s/30000/3000/' /usr/local/redis/sentinel.conf146/sentinel failover-timeout mymaster 120000 #原来是180000sed -i '146s/180000/120000/' /usr/local/redis/sentinel.conf

slave节点:

vi /usr/local/redis/sentinel.conf17/protected-mode no #关闭保护模式sed -i '17s/^#//' /usr/local/redis/sentinel.confsed -i '17s/^ //' /usr/local/redis/sentinel.conf26/daemonize yes 指定sentinel为后台启动sed -i '26s/no/yes/' /usr/local/redis/sentinel.conf36/logfile /usr/local/redis/sentinel.log #日志存放路径65/dir /tmp 改成 dir "/usr/local/redis" #数据库存放目录84/sentinel monitor mymaster 192.168.100.128 6379 2 #填写主节点的地址113/sentinel down-after-milliseconds mymaster 3000#原来是30000,为了尽快看到效果,将时间缩短 sed -i '113s/30000/3000/' /usr/local/redis/sentinel.conf146/sentinel failover-timeout mymaster 120000 #原来是180000sed -i '146s/180000/120000/' /usr/local/redis/sentinel.conf

3、启动哨兵服务

依次启动哨兵sentinel,先启动master 然后slave

//放在后台运行/usr/local/redis/src/redis-sentinel /usr/local/redis/sentinel.conf &

查看哨兵信息,里面有master节点的IP地址

redis-cli -p 26379 INFO Sentinel

2.2、故障模拟

关闭主节点的redis-server服务

ps -ef | grep redis #查看redis-server进程数kill -9 进程数 #关闭redis-server//查看日志tail -99f /usr/local/redis/sentinel.log 看到switch-master mymaster 192.168.100.128 6379 192.168.100.132 6379,即主节点down掉,从节点顶替主节点。// 查看哨兵信息,可以看到master节点的IP地址改变redis-cli -p 26379 INFO Sentinel

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。