Redis单机搭建主从复制以及哨兵机制

1、环境准备 centos 7  创建一个目录

mkdir /usr/local/redis-sentry

上传redis安装到到/usr/local/redis-sentry目录

5b0f65162928333cfc667caa4c92acc066b.jpg

解压安装包到当前目录

tar -zxvf redis-3.2.8.tar.gz

7e09bc86b67baf49e64b33c9a96da1466b5.jpg

进入到解压目录进行make

cd ./redis-3.2.8
make

编译完成后进入src目录进行安装

##我这里把redis安装到了redis-sentry目录下
make install  PREFIX=/usr/local/redis-sentry

创建redis启动文件目录

mkdir /usr/local/redis-sentry/etc

现在我们预备四个节点,一个主节点,两个从节点,那么我可以通过端口不同模拟三台机器,具体操作就是配置三个redis.conf文件,分别配置不同的端口,启动四个实例即可达到模拟多节点的效果

接下来我们在/usr/local/redis-sentry/etc目录下面创建四个文件夹 分别为7001,7002,7003

cd /usr/local/redis-sentry/etc
mkdir ./7001 ./7002 ./7003

复制redis.conf分别到./7001 ./7002 ./7003  三个目录

##进入到redis解压目录去复制redis.conf配置文件到三个节点目录下
cd /usr/local/redis-sentry/redis-3.2.8
cp redis.conf /usr/local/redis-sentry/etc/7001/
cp redis.conf /usr/local/redis-sentry/etc/7002/
cp redis.conf /usr/local/redis-sentry/etc/7003/

创建日志和数据存储目录

cd /usr/local/redis-sentry/
mkdir data/
mkdir logs/
mkdir data/7001 data/7002 data/7003
mkdir logs/7001 logs/7002 logs/7003

修改7001节点的配置文件

cd /usr/local/redis-sentry/etc/7001/
vi redis.conf
###具体需要修改的配置
port 7001
####redis一般都在内网运行,所以注释掉#bind 127.0.0.1
# bind 127.0.0.1
关闭保护模式,protected-mode 把yes改为no
protected-mode no
##开启后台守护进程模式启动
daemonize yes
##密码
requirepass 123456
##
masterauth 123456
pidfile /var/run/redis_7001.pid
###指明日志文件名
logfile "/usr/local/redis-sentry/logs/7001/7001.log"
dir /usr/local/redis-sentry/data/7001

修改7002节点的配置文件

cd /usr/local/redis-sentry/etc/7002/
vi redis.conf
###具体需要修改的配置
port 7002
###注释掉bind属性
# bind 127.0.0.1
protected-mode no
##开启后台守护进程模式启动
daemonize yes
##密码
requirepass 123456
##
masterauth 123456
pidfile /var/run/redis_7002.pid
logfile "/usr/local/redis-sentry/logs/7002/7002.log"
dir /usr/local/redis-sentry/data/7002

修改7003节点的配置文件

cd /usr/local/redis-sentry/etc/7003/
vi redis.conf
###具体需要修改的配置
port 7003
###注释掉bind属性
# bind 127.0.0.1
protected-mode no
##开启后台守护进程模式启动
daemonize yes
##密码
requirepass 123456
##
masterauth 123456
pidfile /var/run/redis_7003.pid
logfile "/usr/local/redis-sentry/logs/7003/7003.log"
dir /usr/local/redis-sentry/data/7003

 

启动redis实例

/usr/local/redis-sentry/bin/redis-server /usr/local/redis-sentry/etc/7001/redis.conf
/usr/local/redis-sentry/bin/redis-server /usr/local/redis-sentry/etc/7002/redis.conf
/usr/local/redis-sentry/bin/redis-server /usr/local/redis-sentry/etc/7003/redis.conf

接下来配置主从和哨兵

上面说了7001为主,那么我现在配置7002,7003的同步数据

在/user/local/redis-sentry/etc/7002/redis.conf  和 /user/local/redis-sentry/etc/7003/redis.conf中配置如下:

vi /usr/local/redis-sentry/etc/7002/redis.conf 
##配置如下:
slaveof 192.168.56.100 7001
vi /usr/local/redis-sentry/etc/7003/redis.conf
slaveof 192.168.56.100 7001

1127b00c7689757f412d4be9df2dc799a67.jpg

链接7001节点使用info replication命令查看发现该节点如预期结果为master节点

28c52ef20d0f80a2722c58097883e167b18.jpg

7002和7003节点查看为slave

6174e5f89883034a675af70555ce4838ce5.jpg

d7191f50f68f140ca49be2bce24a6e031cb.jpg

接下来我们需要配置哨兵节点,redis哨兵的启动和redis实例的启动没有关系。所以可以在任何机器上启动redis哨兵。至少要保证有两个哨兵在运行,要不然宕机后哨兵会找不到主节点,所以我分别在7002和7003配置

在7002节点创建哨兵配置文件

cd /usr/local/redis-sentry/etc/7002/
vi sentinel.conf
#sentinel端口
port 27002
#工作路径,注意路径不要和主重复,下面给出创建目录
dir "/usr/local/redis-sentry/sentry/7002/"
# 守护进程模式
daemonize yes
#关闭保护模式
protected-mode no
# 指明日志文件名
logfile "./sentinel.log"
#哨兵监控的master,主从配置一样,这里只用输入redis主节点的ip/port和法定人数。
sentinel monitor mymaster 192.168.56.100 7001 1
# master或slave多长时间(默认30秒)不能使用后标记为s_down状态。
sentinel down-after-milliseconds mymaster 5000
#若sentinel在该配置值内未能完成failover操作(即故障时master/slave自动切换),则认为本次failover失败。
sentinel failover-timeout mymaster 18000
#设置master和slaves验证密码
sentinel auth-pass mymaster 123456
#指定了在执行故障转移时, 最多可以有多少个从服务器同时对新的主服务器进行同步
sentinel parallel-syncs mymaster 1

复制7002节点的哨兵配置文件到7003

cp sentinel.conf ../7003/
##修改哨兵端口
vi /usr/local/redis-sentry/etc/7003/sentinel.conf
##修改prot为
port 27003

创建哨兵工作路径目录

mkdir /usr/local/redis-sentry/sentry
mkdir /usr/local/redis-sentry/sentry/7002/
mkdir /usr/local/redis-sentry/sentry/7003/

启动哨兵

/usr/local/redis-sentry/bin/redis-sentinel /usr/local/redis-sentry/etc/7002/sentinel.conf
/usr/local/redis-sentry/bin/redis-sentinel /usr/local/redis-sentry/etc/7003/sentinel.conf

sentinel参数在运行时可以使用SENTINEL SET命令更改

上面配置中的mymaster为该主从的名字,代码中会使用

通过哨兵查看集群的信息:

##连接哨兵
redis-cli -p 27002
##查看master的状态 
sentinel master mymaster
##查看salves的状态
SENTINEL slaves mymaster
##查看哨兵的状态
SENTINEL sentinels mymaster
##获取当前master的地址
SENTINEL get-master-addr-by-name mymaster
##查看哨兵信息
info sentinel

查看哨兵信息如下图

d20de8f994b0894aa385974a09cba284412.jpg

查看redis进行

718e64eb3e93a3c1f9218083872d930a798.jpg

现在我们kill 掉7001主节点,看是否会重新选举master

d8600bacf5fb7c40694e399eeec77f351d6.jpg

11eefd8b4b413fc29b22876aace1b69e079.jpg

5e5ef8ea86ef6aedca8d33ccd2d27f273b3.jpg

ec623dd5f607f3dcd65b24528a870a347dc.jpg

7003已经被选为master

 

转载于:https://my.oschina.net/shxjinchao/blog/2046247

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值