当前位置: 首页 > news >正文

哈尔滨网站建设哪个好宁波关键词优化品牌

哈尔滨网站建设哪个好,宁波关键词优化品牌,一键优化软件,拼车网站开发目录 哨兵的作用和工作原理 服务状态监控 选举新的 master 如何实现故障转移 搭建哨兵集群 哨兵的作用和工作原理 Redis 提供了哨兵 (Sentinel) 机制来实现主从集群的自动故障恢复。哨兵的结构和作用如下 监控:Sentinel 会不断检查你的 master 和 slave 是否按…

目录

哨兵的作用和工作原理

服务状态监控

选举新的 master

如何实现故障转移

搭建哨兵集群

哨兵的作用和工作原理

Redis 提供了哨兵 (Sentinel) 机制来实现主从集群的自动故障恢复。哨兵的结构和作用如下

  • 监控:Sentinel 会不断检查你的 master 和 slave 是否按预期工作

  • 自动故障恢复:如果 master 故障, Sentinel 会将一个 Slave 提成为 master ,当故障实例恢复后也还是以新的 master 为主

  • 通知:Sentinel 充当 Redis 客户端的服务发现来源,当集群发生故障转移时,会将最新消息推送至 Redis 客户端

服务状态监控

Sentinel 基于心跳机制检测服务状态,每隔 1 秒向集群的每个实例发送ping 命令

  • 主管下线:如果某 Sentinel 节点发现某实例未在规定时间内响应,则认为该实例主观下线

  • 客观下线:若超过指定数量(quorum)的 sentinel 都认为该实例主观下线,则该实例客观下线。quorum 值最好超过 Sentinel 实例数量的一半

选举新的 master

一旦发现 master 故障,sentinel 需要在 slave 中选择一个作为新的 master :

  • 首先会判断 slave 节点与 master 节点断开的时间长短,如果超出指定值 (down-after-milliseconds * 10)则会排除该 slave 节点

  • 然后判断 slave 节点的 slave-priority 值,越小优先级越高,如果是 0 则永远不参与选举

  • 如果 slave-prority 一样,则判断 slave 节点的 offset 值,越大说明数据越新,优先级越高

  • 最后是判断 slave 节点的运行 id 大小,越小优先级越高

如何实现故障转移

当选中了其中一个 slave 为新的 master 后,故障的转移的步骤如下

  • sentinel 给备选的 slave 节点发送 slaveof no one 命令,让该节点成为 master

  • sentinel 给所有其他 slave 发送 slaveof 192.168.142.152 6379 命令,让这些 slave 成为新的 master 的从节点,开始从新的 master 上同步数据

  • 最后,sentinel 将故障节点标记为 slave ,当故障节点恢复后会自动成为新的 master 的 slave 节点

搭建哨兵集群
IPPORTROLE
192.168.142.1576379master
192.168.142.1566379slave
192.168.142.1556379slave02
192.168.142.15726379sentinel
192.168.142.15626379sentinel
192.168.142.15526379sentinel

我这里省事,只用了三台服务

master , sentinel

docker-compose.yml

services:redis-master:image: hub.atomgit.com/amd64/redis:7.0.13restart: alwayscontainer_name: redis-masterprivileged: trueports:- '6379:6379'volumes:- redis-data:/opt/bitnami/redis/data- /root/redis.conf:/etc/redis.conf- /etc/localtime:/etc/localtime:rocommand:- /bin/sh- -c- redis-server /etc/redis.confredis-sentinel:image: hub.atomgit.com/amd64/redis:7.0.13restart: alwayscontainer_name: redis-sentinelprivileged: trueports:- '26379:26379'volumes:- /root/sentinel.conf:/etc/sentinel.conf- /etc/localtime:/etc/localtime:rocommand:- /bin/sh- -c- redis-server /etc/sentinel.conf --sentinel
volumes:redis-data:

redis.conf

daemonize no
port 6379
protected-mode no
bind 0.0.0.0
requirepass 123456

sentinel.conf

port 26379
protected-mode no
sentinel monitor mymaster 192.168.142.157 6379 2
sentinel auth-pass mymaster 123456
sentinel down-after-milliseconds mymaster 5000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 3000

slave , sentinel

docker-compose.yml

services:redis-slave:image: hub.atomgit.com/amd64/redis:7.0.13restart: alwayscontainer_name: redis-slaveprivileged: trueports:- '6379:6379'volumes:- redis-data:/opt/bitnami/redis/data- /root/redis.conf:/etc/redis.conf- /etc/localtime:/etc/localtime:rocommand:- /bin/sh- -c- redis-server /etc/redis.confredis-sentinel:image: hub.atomgit.com/amd64/redis:7.0.13restart: alwayscontainer_name: redis-sentinelprivileged: trueports:- '26379:26379'volumes:- /root/sentinel.conf:/etc/sentinel.conf- /etc/localtime:/etc/localtime:rocommand:- /bin/sh- -c- redis-server /etc/sentinel.conf --sentinel
volumes:redis-data:

redis.conf

daemonize no
port 6379
protected-mode no
masterauth 123456
requirepass 123456
slave-read-only yes
bind 0.0.0.0
slaveof 192.168.142.157 6379

sentinel.conf

port 26379
protected-mode no
sentinel monitor mymaster 192.168.142.157 6379 2
sentinel auth-pass mymaster 123456
sentinel down-after-milliseconds mymaster 5000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 3000

slave02 , sentinel

docker-compose.yml

services:redis-slave02:image: hub.atomgit.com/amd64/redis:7.0.13restart: alwayscontainer_name: redis-slave02privileged: trueports:- '6379:6379'volumes:- redis-data:/opt/bitnami/redis/data- /root/redis.conf:/etc/redis.conf- /etc/localtime:/etc/localtime:rocommand:- /bin/sh- -c- redis-server /etc/redis.confredis-sentinel:image: hub.atomgit.com/amd64/redis:7.0.13restart: alwayscontainer_name: redis-sentinelprivileged: trueports:- '26379:26379'volumes:- /root/sentinel.conf:/etc/sentinel.conf- /etc/localtime:/etc/localtime:rocommand:- /bin/sh- -c- redis-server /etc/sentinel.conf --sentinel
volumes:redis-data:

redis.conf

daemonize no
port 6379
protected-mode no
masterauth 123456
requirepass 123456
slave-read-only yes
bind 0.0.0.0
slaveof 192.168.142.157 6379

sentinel.conf

port 26379
protected-mode no
sentinel monitor mymaster 192.168.142.157 6379 2
sentinel auth-pass mymaster 123456
sentinel down-after-milliseconds mymaster 5000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 3000

哨兵就盯着 master 看,一旦 master g了就立刻预警,就可以开始启动 docker 了

启动 docker

在三台主机上分别执行

docker compose up -d

查看状态 Up 表示成功启动

root@master:~# docker ps -a
CONTAINER ID   IMAGE                                COMMAND                  CREATED          STATUS          PORTS                                                     NAMES
aa6466e6fa15   hub.atomgit.com/amd64/redis:7.0.13   "docker-entrypoint.s…"   27 minutes ago   Up 21 minutes   6379/tcp, 0.0.0.0:26379->26379/tcp, :::26379->26379/tcp   redis-sentinel
27a2f19d8040   hub.atomgit.com/amd64/redis:7.0.13   "docker-entrypoint.s…"   27 minutes ago   Up 21 minutes   0.0.0.0:6379->6379/tcp, :::6379->6379/tcp                 redis-master
 root@slave:~# docker ps -a
CONTAINER ID   IMAGE                                COMMAND                  CREATED             STATUS          PORTS                                                     NAMES
1d3df2c507f5   hub.atomgit.com/amd64/redis:7.0.13   "docker-entrypoint.s…"   25 minutes ago      Up 21 minutes   6379/tcp, 0.0.0.0:26379->26379/tcp, :::26379->26379/tcp   redis-sentinel
b9b981917f2d   hub.atomgit.com/amd64/redis:7.0.13   "docker-entrypoint.s…"   About an hour ago   Up 21 minutes   0.0.0.0:6379->6379/tcp, :::6379->6379/tcp                 redis-slave
root@slave02:~# docker ps -a
CONTAINER ID   IMAGE                                COMMAND                  CREATED             STATUS          PORTS                                                     NAMES
774fb813bbf2   hub.atomgit.com/amd64/redis:7.0.13   "docker-entrypoint.s…"   23 minutes ago      Up 20 minutes   6379/tcp, 0.0.0.0:26379->26379/tcp, :::26379->26379/tcp   redis-sentinel
02a276c8edc8   hub.atomgit.com/amd64/redis:7.0.13   "docker-entrypoint.s…"   About an hour ago   Up 20 minutes   0.0.0.0:6379->6379/tcp, :::6379->6379/tcp                 redis-slave02

启动成功就可以去查看 sentinel 的状态了

root@master:~# docker exec redis-sentinel redis-cli -p 26379 -c info sentinel
# Sentinel
sentinel_masters:1
sentinel_tilt:0
sentinel_tilt_since_seconds:-1
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
sentinel_simulate_failure_flags:0
master0:name=mymaster,status=ok,address=192.168.142.157:6379,slaves=2,sentinels=1
root@slave:~# docker exec -it redis-sentinel redis-cli -p 26379 -c info sentinel
# Sentinel
sentinel_masters:1
sentinel_tilt:0
sentinel_tilt_since_seconds:-1
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
sentinel_simulate_failure_flags:0
master0:name=mymaster,status=ok,address=192.168.142.157:6379,slaves=0,sentinels=1
root@slave02:~# docker exec -it redis-sentinel redis-cli -p 26379 -c info sentinel
# Sentinel
sentinel_masters:1
sentinel_tilt:0
sentinel_tilt_since_seconds:-1
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
sentinel_simulate_failure_flags:0
master0:name=mymaster,status=ok,address=192.168.142.157:6379,slaves=0,sentinels=1

出现本机 ip 和 ok 状态就代表哨兵启动成功

测试

假设 master 宕机

root@master:~# docker stop redis-master

查看 slave

root@slave:~# docker exec redis-slave redis-cli -a 123456 -c role
slave
192.168.142.157
6379
connect
-1
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.

查看 slave02

root@slave02:~# docker exec -it redis-slave02 redis-cli -a 123456 -c role
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
1) "master"
2) (integer) 19487
3) 1) 1) "192.168.142.156"2) "6379"3) "19347"

到此,哨兵搭建完成

补充

关于 sentinel.conf 讲解

  • sentinel monitor mymaster 192.168.142.157 6379 2 指定主节点信息

    • mymaster 主节点名称,自定义

    • 192.168.142.157 6379 主节点 IP 和端口

    • 2 选举 master 时的 quorum 值

  • sentinel down-after-milliseconds mymaster 5000 salve 与 master 断开的超时时间

  • sentinel failover-timeout mymaster 60000 故障恢复的超时时间

  • sentinel auth-pass mymaster 123456 主节点密码

  • sentinel parallel-syncs mymaster 1
    这条指令告诉 Sentinel,对于名为 mymaster 的 Redis 主节点,在进行故障转移时,只允许一个从节点同时对新的主节点进行数据同步。这意味着在故障转移过程中,只有一个从节点会开始与新的主节点同步数据,其他从节点会等待,直到该从节点完成同步后才开始。

    设置 parallel-syncs 为 1 可以确保在故障转移期间,只有一个从节点在任何给定时间与新的主节点进行数据同步。这样做的好处是可以减少对新主节点的负载,避免在故障转移期间对新主节点造成过大的压力,从而影响其性能。然而,这也意味着故障转移过程可能会花费更长的时间,因为从节点需要一个接一个地进行数据同步。


文章转载自:
http://webworm.c7507.cn
http://kaaba.c7507.cn
http://foresaddle.c7507.cn
http://huggery.c7507.cn
http://cyproterone.c7507.cn
http://carcinogenicity.c7507.cn
http://planking.c7507.cn
http://proserpine.c7507.cn
http://deface.c7507.cn
http://peacemaking.c7507.cn
http://nitrogenize.c7507.cn
http://oversweet.c7507.cn
http://sisterly.c7507.cn
http://onboard.c7507.cn
http://qualificatory.c7507.cn
http://garbo.c7507.cn
http://orthodoxy.c7507.cn
http://illusively.c7507.cn
http://unmarketable.c7507.cn
http://distributed.c7507.cn
http://alliteration.c7507.cn
http://cryoextraction.c7507.cn
http://cryptogrammic.c7507.cn
http://outstay.c7507.cn
http://oophore.c7507.cn
http://sinew.c7507.cn
http://kepler.c7507.cn
http://reconversion.c7507.cn
http://wirk.c7507.cn
http://silversides.c7507.cn
http://antiphlogistic.c7507.cn
http://caustic.c7507.cn
http://fuguist.c7507.cn
http://merchandiser.c7507.cn
http://lavish.c7507.cn
http://transpolar.c7507.cn
http://decongestion.c7507.cn
http://spick.c7507.cn
http://shanghailander.c7507.cn
http://surloin.c7507.cn
http://pristane.c7507.cn
http://anthelmintic.c7507.cn
http://aerocurve.c7507.cn
http://deify.c7507.cn
http://morcellate.c7507.cn
http://riyal.c7507.cn
http://pluriliteral.c7507.cn
http://diatropic.c7507.cn
http://pinkster.c7507.cn
http://jivaro.c7507.cn
http://resinous.c7507.cn
http://paddle.c7507.cn
http://photodynamic.c7507.cn
http://harddisk.c7507.cn
http://lutz.c7507.cn
http://cluster.c7507.cn
http://medaled.c7507.cn
http://farmerly.c7507.cn
http://questioningly.c7507.cn
http://gosplan.c7507.cn
http://cosecant.c7507.cn
http://sernyl.c7507.cn
http://cribbage.c7507.cn
http://asti.c7507.cn
http://byzantinesque.c7507.cn
http://bulbar.c7507.cn
http://flee.c7507.cn
http://saleroom.c7507.cn
http://strain.c7507.cn
http://kegeree.c7507.cn
http://fructify.c7507.cn
http://regress.c7507.cn
http://erotophobic.c7507.cn
http://wram.c7507.cn
http://twofer.c7507.cn
http://mercurize.c7507.cn
http://indefectible.c7507.cn
http://needly.c7507.cn
http://involucra.c7507.cn
http://inscience.c7507.cn
http://adduceable.c7507.cn
http://zoomechanics.c7507.cn
http://soubresaut.c7507.cn
http://sterility.c7507.cn
http://lore.c7507.cn
http://queuetopia.c7507.cn
http://likeness.c7507.cn
http://door.c7507.cn
http://memorandum.c7507.cn
http://religionist.c7507.cn
http://haemostat.c7507.cn
http://athrob.c7507.cn
http://aesthetic.c7507.cn
http://marish.c7507.cn
http://klan.c7507.cn
http://weimar.c7507.cn
http://underpin.c7507.cn
http://underwaist.c7507.cn
http://bouzouki.c7507.cn
http://sheafer.c7507.cn
http://www.zhongyajixie.com/news/90563.html

相关文章:

  • 坂田网站建设多少钱刷关键词排名软件
  • 手机网站建设你真的需要关键词首页优化
  • 做网站甘特图 内容哪里做网站便宜
  • app和网站趋势发布外链
  • 三明 网站建设海外免费网站推广
  • 购物网站技术方案百度seo效果
  • wordpress指针北京建站优化
  • 银川市建设局网站搜什么关键词能搜到好片
  • 青岛网站制作排名站长工具百科
  • 岳池做网站电话百度公司排名多少
  • 佛山网站建设策划来几个关键词兄弟们
  • 邢台哪儿做wap网站企业网站快速排名
  • 政府网站建立单位seo交流博客
  • 基于企业网站的网络营销方法浙江百度查关键词排名
  • nas服务器可以做网站吗重庆森林在线观看
  • 做包装找灵感看什么网站东营网站建设费用
  • 怎么合作做网站百度账号登录不了
  • 做1688网站需要懂英语吗seo综合查询是什么
  • wordpress标签tag链接静态化网络优化工程师是做什么的
  • h5网站需要哪些技术他达拉非片的作用及功效副作用
  • 济南教育论坛网站建设怎样推广小程序平台
  • 重视网站阵地建设百度广告投放技巧
  • 做网站的电脑自带软件是什么网页搭建
  • 怎么给公司做推广长春seo技术
  • 企业网站模板哪里好西安seo顾问公司
  • wordpress临时关闭站点百度发布信息怎么弄
  • 山东建站商城湖南好搜公司seo
  • 优化是什么工作郑州seo优化外包顾问
  • 门户建设网站沈阳线上教学
  • 零食类营销网站怎么做如何在百度发布广告