主从复制测试
redis的主从复制很简单,只要在从服务器中添加master是哪个节点就可以
此测试是基于:redis-3.2.9,以及自动化安装脚本,实际情况以实际为准修改
这里设置有三个redis节点,一个master,两个slave。
使用自动化安装脚本安装redis,这里不做赘述
redis为安全起见,默认监听:127.0.0.1:6380,修改配置文件,为内网ip,其他节点可以访问到
同时修改master节点的防火墙,允许同一网段机器访问
-A INPUT -s 192.168.170.0/24 -p tcp --dport 6380 -j ACCEPT
设置master配置文件,重启服务
requirepass 234567 #添加密码
设置slave1配置文件,重启服务
slaveof 192.168.170.10 6380 masterauth 234567
设置slave2配置文件,重启服务
slaveof 192.168.170.10 6380 masterauth 234567
设置好后可以在master节点看到两个从节点,主从复制完成
127.0.0.1:6380> info # Replication role:master connected_slaves:2 slave0:ip=192.168.170.12,port=6380,state=online,offset=931,lag=1 slave1:ip=192.168.170.11,port=6380,state=online,offset=931,lag=1 master_repl_offset:931
sentinel高可用测试
下面的测试是重新搭建的,和上面没有关系
三个节点同时操作:将自动安装脚本下载到本地
[root@master ~]#git clone https://git.andblog.cn/root/services_auto_install.git
三个节点同时操作:将自动安装的其他服务注释掉,只保留redis服务,端口:6380,然后进行编译安装
三个节点同时操作:安装好后修改redis的配置文件如下,即:要求输入密码,并设置从服务同步密码,并重启服务,因为每个节点都有可能会变成从节点,去主节点同步数据,这里都要睡着
[root@master /usr/local/redis-6380/conf]#vim redis.conf bind 0.0.0.0 masterauth 234567 requirepass 234567
两个从节点设置:设置每个节点的是哪个节点的从节点,这里只是设置初始化状态,运行后的主从关系根据sentinel的运行动态决定
[root@master /usr/local/redis-6380/conf]#vim redis.conf slaveof 192.168.170.10 6380
三个节点同时操作:配置防火墙允许同一网段的主机访问6380端口,不然从节点无法和主节点同步数据
[root@master ~]#vim /etc/sysconfig/iptables -A INPUT -s 192.168.170.0/24 -p tcp --dport 6380 -j ACCEPT
到这里主从同步就可以正常工作了,可以从主节点看到两个从节点的状况
三个节点同时操作:因为自动化脚本已经将sentinel配置文件和vip自动转移脚本复制到配置文件目录了,只需修改为需要的即可
修改master_failover.sh local ip,vip改为自己主机的内网ip 修改邮件发送的地址
三个节点同时操作:配置防护墙放行端口,sentinel通过此端口通信
-A INPUT -s 192.168.170.0/24 -p tcp --dport 26380 -j ACCEPT
为master节点添加ip地址
ip addr add 192.168.170.13/24 dev eth0
启动三个节点sentinel服务,查看日志
service redis-6380-sentinel restart
进程,都是以redis身份运行
[root@master ~]#ps aux | grep redis redis 4891 0.2 0.9 135588 9692 ? Ssl 16:13 0:03 /usr/local/redis-6380/bin/redis-server 0.0.0.0:6380 redis 26695 0.5 0.7 133540 7676 ? Ssl 16:34 0:00 /usr/local/redis-6380/bin/redis-server 0.0.0.0:26380 [sentinel] root 26699 0.0 0.0 100960 616 pts/1 S+ 16:34 0:00 tail -f /var/log/redis/redis-6380-sentinel.log root 26705 0.0 0.0 103328 852 pts/0 S+ 16:35 0:00 grep --color=auto redis
然后从192.168.170.14机器上面测试,正常
redis-cli -h 192.168.170.13 -p 6380 -a 234567
查看节点状况
redis-cli -h 192.168.170.13 -p 26380 info sentinel
当不使用service脚本的时候,使用下面的命令可以让sentinel运行起来
redis-server /usr/local/redis-6380/conf/sentinel.conf --sentinel #后台模式启动
当sentinel发生master转移的时候,会向用户脚本中传递7个参数,分别是:
<master-name> <role> <state> <from-ip> <from-port> <to-ip> <to-port>
下面是通过脚本测试的结果
[root@master /usr/local/redis-6380/conf]#cat master_failover.sh #!/bin/bash cd /usr/local/redis-6380/conf echo $1 >> abc echo $2 >> abc echo $3 >> abc echo $4 >> abc echo $5 >> abc echo $6 >> abc echo $7 >> abc
当master要漂移到11上面的时候,有用的信息就是$6
[root@master /usr/local/redis-6380/conf]#cat abc mymaster leader start 192.168.170.10 6380 192.168.170.11 6380
–
–
–
评论前必须登录!
注册