redis学习9---一主二从三哨兵环境配置-创新互联

Sentinel(哨兵)是用于监控redis集群中Master状态的工具,是Redis的高可用性解决方案,sentinel哨兵模式已经被集成在redis2.4之后的版本中。sentinel是redis高可用的解决方案,sentinel系统可以监视一个或者多个redis master服务,以及这些master服务的所有从服务;当某个master服务下线时,自动将该master下的某个从服务升级为master服务替代已下线的master服务继续处理请求。

发展壮大离不开广大客户长期以来的信赖与支持,我们将始终秉承“诚信为本、服务至上”的服务理念,坚持“二合一”的优良服务模式,真诚服务每家企业,认真做好每个细节,不断完善自我,成就企业,实现共赢。行业涉及成都自上料搅拌车等,在成都网站建设网络营销推广、WAP手机网站、VI设计、软件开发等项目上具有丰富的设计经验。

sentinel可以让redis实现主从复制,当一个集群中的master失效之后,sentinel可以选举出一个新的master用于自动接替master的工作,集群中的其他redis服务器自动指向新的master同步数据。一般建议sentinel采取奇数台,防止某一台sentinel无法连接到master导致误切换。

Redis-Sentinel是Redis官方推荐的高可用性(HA)解决方案,当用Redis做Master-slave的高可用方案时,假如master宕机了,Redis本身(包括它的很多客户端)都没有实现自动进行主备切换,而Redis-sentinel本身也是一个独立运行的进程,它能监控多个master-slave集群,发现master宕机后能进行自动切换。Sentinel由一个或多个Sentinel 实例 组成的Sentinel系统可以监视任意多个主服务器,以及这些主服务器属下的所有从服务器,并在被监视的主服务器进入下线状态时,自动将下线主服务器属下的某个从服务器升级为新的主服务器。

Sentinel工作方式(每个Sentinel实例都执行的定时任务)

1)每个Sentinel以每秒钟一次的频率向它所知的Master,Slave以及其他 Sentinel 实例发送一个PING命令。

2)如果一个实例(instance)距离最后一次有效回复PING命令的时间超过 own-after-milliseconds 选项所指定的值,则这个实例会被Sentinel标记为主观下线。 

3)如果一个Master被标记为主观下线,则正在监视这个Master的所有 Sentinel 要以每秒一次的频率确认Master的确进入了主观下线状态。 

4)当有足够数量的Sentinel(大于等于配置文件指定的值)在指定的时间范围内确认Master的确进入了主观下线状态,则Master会被标记为客观下线。

5)在一般情况下,每个Sentinel 会以每10秒一次的频率向它已知的所有Master,Slave发送 INFO 命令。

6)当Master被Sentinel标记为客观下线时,Sentinel 向下线的 Master 的所有Slave发送 INFO命令的频率会从10秒一次改为每秒一次。 

7)若没有足够数量的Sentinel同意Master已经下线,Master的客观下线状态就会被移除。 若 Master重新向Sentinel 的PING命令返回有效回复,Master的主观下线状态就会被移除。

环境:

主机IP:

192.168.121.121

192.168.121.122

192.168.121.123

系统:centos7.6

上传源码包到主机

redis-4.0.11.tar.gz

1、三台主机编译

yum install gcc gcc-c++ -y

tar -zxf redis-4.0.11.tar.gz -C /data/usr/src

cd /data/usr/src/redis-4.0.11/

make && make install PREFIX=/data/usr/redis

2、三台主机可拷贝配置文件

mkdir /data/usr/redis/{conf,data,logs}

cp *.conf /data/usr/redis/conf

编辑配置文件

cd /data/usr/redis/conf

2.1、配置redis

主节点:

vi redis.conf 

bind 127.0.0.1 192.168.121.121

protected-mode no

daemonize yes

slave-priority 100

appendonly yes

dir /data/usr/redis/data

requirepass "Redis2019!"

masterauth "Redis2019!"

logfile "/data/usr/redis/logs/redis.log"

两个从节点:

bind 127.0.0.1 192.168.121.122

protected-mode no

daemonize yes

slave-priority 90

appendonly yes

dir /data/usr/redis/data

slaveof 192.168.121.121 6379

requirepass "Redis2019!"

masterauth "Redis2019!"

logfile "/data/usr/redis/logs/redis.log"

bind 127.0.0.1 192.168.121.123

protected-mode no

daemonize yes

slave-priority 90

appendonly yes

dir /data/usr/redis/data

slaveof 192.168.121.121 6379

requirepass "Redis2019!"

masterauth "Redis2019!"

logfile "/data/usr/redis/logs/redis.log"

2.2、配置哨兵

vi sentinel.conf 

protected-mode no

daemonize yes

logfile "/data/usr/redis/logs/sentinel.log"

sentinel monitor mymaster 192.168.121.121 6379 2 #设置 主名称 ip地址 端口号 参入选举的哨兵数

sentinel auth-pass mymaster Redis2019!

最后两条配置要按照先后顺序

3、启动

将redis服务启动:先启动master再启动slave

/data/usr/redis/bin/redis-server /data/usr/redis/conf/redis.conf 

查看redis服务状态

/data/usr/redis/bin/redis-cli -h 192.168.121.121 -p 6379 -a Redis2019! info replication 

/data/usr/redis/bin/redis-cli -h 192.168.121.122 -p 6379 -a Redis2019! info replication 

/data/usr/redis/bin/redis-cli -h 192.168.121.123 -p 6379 -a Redis2019! info replication 

启动sentinel服务:先启动redis服务再启动sentinel服务,关闭则是反过来的,先关闭sentinel服务,再关闭redis服务。

/data/usr/redis/bin/redis-sentinel /data/usr/redis/conf/sentinel.conf 

查看哨兵服务状态

/data/usr/redis/bin/redis-cli -h 192.168.121.121 -p 26379 info sentinel

/data/usr/redis/bin/redis-cli -h 192.168.121.122 -p 26379 info sentinel

/data/usr/redis/bin/redis-cli -h 192.168.121.123 -p 26379 info sentinel

4、测试

4.1、同步测试

主节点:

192.168.121.121:6379> set name kkk

从节点:

192.168.121.122:6379> keys *

1) "name"

192.168.121.122:6379> get name

"kkk"

192.168.121.123:6379> keys *

1) "name"

192.168.121.123:6379> get name

"kkk"

4.2、从库只读测试

192.168.121.122:6379> set bname yyy

(error) READONLY You can't write against a read only slave.

192.168.121.123:6379> set bname yyy

(error) READONLY You can't write against a read only slave.

4.3、冗余测试

测试停止主redis,发现其中一个从变为主,启动停止的服务后发现为从服务,主服务不变。

停止一个节点sentinel服务,之后再停止主服务,发现其中一个从服务升级为主服务

停止哨兵服务命令

/data/usr/redis/bin/redis-cli -h 192.168.121.121 -p 26379 shutdown

停止redis服务命令

/data/usr/redis/bin/redis-cli -h 192.168.121.122 -p 6379 -a Redis2019 shutdown

停止第二个哨兵服务,再停止redis主服务,发现剩下的redis服务中并没有产生主服务,说明哨兵服务最少要有两个,最好是三个及以上。

5、问题处理

5.1、执行 make PREFIX=/data/usr/redis install 报错

cc: error: ../deps/hiredis/libhiredis.a: No such file or directory

cc: error: ../deps/lua/src/liblua.a: No such file or directory

cd deps/

ls

hiredis  jemalloc  linenoise  lua  Makefile  README.md  update-jemalloc.sh

cd hiredis

make 

cd linenoise

make

cd lua

make 

cd lua

make

编译报错

Please do

make PLATFORM

where PLATFORM is one of these:

aix ansi bsd freebsd generic linux macosx mingw posix solaris

See INSTALL for complete instructions.

[root@slave1 lua]# make PLATFORM

make: *** No rule to make target `PLATFORM'.  Stop.

执行下面命令编译

make generic

5.2、启动哨兵出错

./redis-sentinel sentinel.conf 

*** FATAL CONFIG FILE ERROR ***

Reading the configuration file, at line 92

>>> 'sentinel auth-pass mymaster Redis2019'

No such master with specified name.

出现错误:

sentinel monitor mymaster 192.168.121.123 6379 2

sentinel auth-pass mymaster Redis2019

上边的配置要按照顺序,错误是因为上边一条的配置在下面造成的。

参考:

https://www.cnblogs.com/kevingrace/p/9004460.html

https://blog.csdn.net/qq_40476230/article/details/85845166

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。

分享文章:redis学习9---一主二从三哨兵环境配置-创新互联
文章路径:https://www.cdcxhl.com/article40/eioeo.html

成都网站建设公司_创新互联,为您提供静态网站网站导航手机网站建设网站设计公司自适应网站网站策划

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

网站优化排名