• 欢迎来到小爱博客,一个分享互联网IT技术的网站,喜欢就收藏吧!

redis sentinel安装和部署

other 小爱 4周前 (10-03) 34次浏览 已收录 0个评论 扫描二维码

三个sentinel节点,一个redis主节点,两个redis从节点
redis版本:redis-5.0.3
机器IP
192.168.0.31、192.168.0.32、192.168.0.33

1.下载并安装redis
在三台机器上执行如下命令,安装redis

<code class="has-numbering">安装gcc
yum install gcc

$ wget http://download.redis.io/releases/redis-5.0.3.tar.gz
$ tar xzf redis-5.0.3.tar.gz
$ ln -s redis-5.0.3/ redis
$ cd redis
$ make MALLOC=libc

将src目录下的文件加到/usr/local/bin目录
[root@kafka31 redis]# cd src && make install
执行完后可以看到/usr/local/bin有以下redis的可执行文件
redis-benchmark  redis-check-aof  redis-check-rdb  redis-cli  redis-sentinel  redis-server

创建日志文件目录
[root@kafka33 redis]# mkdir log
创建conf目录,配置文件都放在conf目录下
[root@kafka31 redis]# mkdir conf
[root@kafka31 redis]# cp redis.conf conf/
[root@kafka31 redis]# cp sentinel.conf conf/
</code>

 

2.部署redis数据节点
2.1.主节点
主节点配置
192.168.0.31作为主节点
复制conf下的配置文件

<code class="has-numbering">[root@kafka31 conf]# cp redis.conf data_master.conf
</code>

 

修改配置文件

<code class="has-numbering">删除bind 127.0.0.1
修改
port 6380
protected-mode no
daemonize yes
logfile "redis_6380.log"
dbfilename dump_6380.rdb
dir "/opt/redis/log/"
pidfile /var/run/redis_6380.pid
requirepass 1234@abcd
</code>

 

启动主节点

<code class="has-numbering">[root@kafka31 redis]# redis-server conf/data_master.conf 
</code>

 

连接测试

<code class="has-numbering">[root@kafka31 redis]# redis-cli -h 127.0.0.1 -p 6380 -a 1234@abcd ping
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
PONG
</code>

 

2.2.从节点
192.168.0.32,192.168.0.33作为从节点
下面以32机器为例
复制conf下的配置文件

<code class="has-numbering">[root@kafka32 conf]# cp redis.conf data_slave.conf
</code>

从节点的配置和主节点差不多,只是多了一个slaveof和masterauth的配置

<code class="has-numbering">删除bind 127.0.0.1
修改
port 6380
protected-mode no
daemonize yes
logfile "redis_6380.log"
dbfilename dump_6380.rdb
dir "/opt/redis/log/"
pidfile /var/run/redis_6380.pid
requirepass 1234@abcd
masterauth 1234@abcd

增加
slaveof 10.1.12.31 6380
</code>

 

配置文件说明:

<code class="has-numbering">redis默认是
bind 127.0.0.1
protected-mode yes
表示只允许本地访问

修改成如下
删除bind 127.0.0.1
protected-mode no
requirepass 1234@abcd
表示该节点访问需要密码1234@abcd

daemonize yes 启动后redis进程在后台运行

masterauth 1234@abcd 从节点连接主节点需要密码

</code>

 

启动从节点

<code class="has-numbering">[root@kafka32 redis]# redis-server conf/data_slave.conf
</code>

从节点测试

<code class="has-numbering">[root@kafka32 redis]# redis-cli -h 127.0.0.1 -p 6380 -a 1234@abcd ping
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
PONG
</code>

33机器的操作完全一致

3.确认主从关系
主节点执行

<code class="has-numbering">[root@kafka31 log]# redis-cli -h 127.0.0.1 -p 6380 -a 1234@abcd info replication
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
# Replication
role:master
connected_slaves:2
slave0:ip=192.168.0.32,port=6380,state=online,offset=126,lag=1
slave1:ip=192.168.0.33,port=6380,state=online,offset=126,lag=1
master_replid:19521c9694401ebb937118ad2da24f3a2038edd1
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:126
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:126
</code>

4.部署sentinel节点
sentinel的配置方式都是一样的
sentinel配置
修改conf/sentinel.conf文件

<code class="has-numbering">port 26379
daemonize yes
pidfile /var/run/redis-sentinel.pid
logfile "sentinel.log"
dir "/opt/redis-5.0.3/data/"
sentinel monitor mymaster 192.168.0.31 6380 2
sentinel auth-pass mymaster 1234@abcd 
requirepass 123456  #注意 这个配置表明sentinel连接需要密码123456,这个密码必须要求每个sentinel的都一样,因为sentinel内部沟通的时候也是通过这个配置来确认密码的正确性
sentinel down-after-milliseconds mymaster 30000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 180000
sentinel deny-scripts-reconfig yes
</code>

三台机器的sentinel的配置都一样
启动sentinel节点
方法一:
使用redis-sentinel 配置文件

<code class="has-numbering">[root@kafka32 redis]# redis-sentinel conf/sentinel.conf
</code>

方法二:
redis-server 配置文件 –sentinel

<code class="has-numbering">[root@kafka32 redis]# redis-server conf/sentinel.conf --sentinel
</code>

5.确认sentinel状态

<code class="has-numbering">[root@kafka31 redis]# redis-cli -h 127.0.0.1 -p 26379 -a 123456 info Sentinel
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
# Sentinel
sentinel_masters:1
sentinel_tilt:0
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
sentinel_simulate_failure_flags:0
master0:name=mymaster,status=ok,address=192.168.0.31:6380,slaves=2,sentinels=3
</code>

 

以上信息表明sentinel当前监控的主节点有两个从节点,存在三个sentinel
sentinel节点配置说明:

<code class="has-numbering">sentinel monitor <master-name> <ip> <port> <quorum>
master-name表示sentinel要监控的节点名称,这个名称可以自己定义ip和port对应的是要监控的节点ip地址和端口号。quorum代表要判断主节点不可达需要的票数,同时quorum还与sentinel节点的选举有关,至少要有max(quorum,num(sentinels)/2+1)个Sentinel节点参与选举才能选出领导者sentinel。

sentinel down-after-milliseconds <master-name> <times>
每个sentinel节点都会通过ping来判断redis数据节点和其余的sentinel节点是否可达,如果超过了down-after-milliseconds设置的时间,则判定节点不可达。该配置虽然用master-name作为参数,但是实际上对sentinel节点、从节点、主节点都有效。

sentinel parallel-syncs <master-name> <num>
当redis主节点出现故障的时候,sentinel领导者会选出一个从节点作为主节点,其余的从节点会从新的主节点复制数据,这个参数就是用来设置同时又多少个从节点从新的主节点同步数据。很明显如果配置过大,则出现故障时新的主节点IO必然会比较大。

sentinel failover-timeout <master-name> <times>
故障转移超时时间

sentinel auth-pass <master-name> <passwor>
如果sentinel监控的主节点配置了密码,可以通过此配置添加主节点的密码

requirepass <passwor>
sentinel也可以配置自己的密码,这样客户端在连接的时候需要通过密码验证。但是要注意,如果sentinel配置了密码,那么所有的sentinel都要配置相同的密码,因为这个配置也是sentinel之间沟通的验证密码。
</code>

 

sentinel节点会对所有节点进行监控,但是在sentinel节点的配置中没有看到有关从节点和其余sentinel节点的配置,那是因为sentinel节点会从主节点获取有关从节点以及其余sentinel节点的先关信息,并且当sentinel节点启动后,这些信息会写到sentinel节点的配置文件中,打开sentinel节点可以看到新增如下内容

<code class="has-numbering">protected-mode no
sentinel known-replica mymaster 192.168.0.33 6380
sentinel known-replica mymaster 192.168.0.32 6380
sentinel known-sentinel mymaster 192.168.0.33 26379 1756900c0e4276ce2892ec42a553cc8c870170c7
sentinel known-sentinel mymaster 192.168.0.32 26379 583861d25d20388879d745be157a78096755e6e9
sentinel current-epoch 0</code>

小爱博客 , 版权所有
转载请注明原文链接:redis sentinel安装和部署
喜欢 (1)
【你的支持, 我的动力】
分享 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址