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

站长如何做视频类网站网站安全检测中心

站长如何做视频类网站,网站安全检测中心,电子产品定制开发,广告传媒建设网站文章目录 一、redis 哨兵#xff08;sentinel#xff09;redis 集群介绍哨兵#xff08;Sentinel#xff09;工作原理sentinel 架构和故障转移sentinel中的三个定时任务 实时哨兵启动哨兵验证哨兵端口查看哨兵日志当前sentinel状态停止Redis Master测试故障转移恢复故障的m… 文章目录 一、redis 哨兵sentinelredis 集群介绍哨兵Sentinel工作原理sentinel 架构和故障转移sentinel中的三个定时任务 实时哨兵启动哨兵验证哨兵端口查看哨兵日志当前sentinel状态停止Redis Master测试故障转移恢复故障的master重新加入redis集群sentinel 运维python连接redispython连接Sentinel哨兵 一、redis 哨兵sentinel redis 集群介绍 主从架构无法实现master和slave角色的自动切换即当master出现redis服务异常、主机断电、磁盘损坏等问题导致master无法使用而redis主从复制无法实现自动的故障转移(将slave 自动提升为新master)需要手动修改环境配置,才能切换到slave redis服务器另外也无法横向扩展Redis服务的并行写入性能当单台Redis服务器性能无法满足业务写入需求的时候,也需要解决以上的两个核心问题 master和slave角色的无缝切换让业务无感知从而不影响业务使用可横向动态扩展Redis服务器从而实现多台服务器并行写入以实现更高并发的目的。 Redis 集群实现方式 客户端分片: 由应用决定将不同的KEY发送到不同的Redis服务器代理分片: 由代理决定将不同的KEY发送到不同的Redis服务器,代理程序如:codis,twemproxy等Redis Cluster 哨兵Sentinel工作原理 sentinel 架构和故障转移 Sentinel 进程是用于监控redis集群中Master主服务器工作的状态在Master主服务器发生故障的时候可以实现Master和Slave服务器的切换保证系统的高可用此功能在redis2.6的版本已引用Redis的哨兵模式到了2.8版本之后就稳定了下来。一般在生产环境也建议使用Redis的2.8版本的以后版本 哨兵(Sentinel) 是一个分布式系统可以在一个架构中运行多个哨兵(sentinel) 进程这些进程使用流言协议(gossip protocols)来接收关于Master主服务器是否下线的信息并使用投票协议(AgreementProtocols)来决定是否执行自动故障迁移,以及选择哪个Slave作为新的Master 每个哨兵(Sentinel)进程会向其它哨兵(Sentinel)、Master、Slave定时发送消息以确认对方是否”活”着如果发现对方在指定配置时间(此项可配置)内未得到回应则暂时认为对方已离线也就是所谓的”主观认为宕机” (主观:是每个成员都具有的独自的而且可能相同也可能不同的意识)英文名称Subjective Down简称SDOWN 有主观宕机对应的有客观宕机。当“哨兵群”中的多数Sentinel进程在对Master主服务器做出SDOWN的判断并且通过 SENTINEL is-master-down-by-addr 命令互相交流之后得出的Master Server下线判断这种方式就是“客观宕机”(客观:是不依赖于某种意识而已经实际存在的一切事物)英文名称是Objectively Down 简称 ODOWN 通过一定的vote算法从剩下的slave从服务器节点中选一台提升为Master服务器节点然后自动修改相关配置并开启故障转移failover Sentinel 机制可以解决master和slave角色的自动切换问题但单个 Master 的性能瓶颈问题无法解决,类似于MySQL中的MHA功能 Redis Sentinel中的Sentinel节点个数应该为大于等于3且最好为奇数 客户端初始化时连接的是Sentinel节点集合不再是具体的Redis节点但Sentinel只是配置中心不是代理。 Redis Sentinel 节点与普通redis 没有区别,要实现读写分离依赖于客户端程序 redis 3.0 之前版本中,生产环境一般使用哨兵模式,但3.0后推出redis cluster功能后,可以支持更大规模的生产环境 sentinel中的三个定时任务 每10秒每个sentinel对master和slave执行info 发现slave节点确认主从关系 每2秒每个sentinel通过master节点的channel交换信(pub/sub) 通过sentinel_hello频道交互交互对节点的“看法”和自身信息 每1秒每个sentinel对其他sentinel和redis执行ping 实时哨兵 哨兵的准备实现主从复制架构 哨兵的前提是已经实现了一个redis的主从复制的运行环境从而实现一个一主两从基于哨兵的高可用redis架构注意: master 的配置文件中masterauth 和slave 都必须相同 # 在所有主从节点执行这里以master为例 [rootmaster ~]# vim /apps/redis/etc/redis.conf bind 0.0.0.0 masterauth centos requirepass centos [rootmaster ~]# echo -e net.core.somaxconn 1024\nvm.overcommit_memory 1 /etc/sysctl.conf [rootmaster ~]# sysctl -p net.core.somaxconn 1024 vm.overcommit_memory 1 net.core.somaxconn 1024 vm.overcommit_memory 1 [rootmaster ~]# echo never /sys/kernel/mm/transparent_hugepage/enabled [rootmaster ~]# echo echo never /sys/kernel/mm/transparent_hugepage/enabled /etc/rc.d/rc.local [rootmaster ~]# chmod x /etc/rc.d/rc.local [rootmaster ~]# systemctl restart redis设置主从复制 #在所有从节点执行这里以slave1为例 [rootslave1 ~]# echo replicaof 192.168.64.129 6379 /apps/redis/etc/redis.conf [rootslave1 ~]# systemctl restart redismaster服务器状态 [rootmaster ~]# redis-cli 127.0.0.1:6379 auth centos OK 127.0.0.1:6379 info replication # Replication role:master connected_slaves:2 slave0:ip192.168.175.20,port6379,stateonline,offset112,lag0 slave1:ip192.168.175.30,port6379,stateonline,offset112,lag0 master_replid:ec21203b0f3034282e18d6532055379b3de45f82 master_replid2:0000000000000000000000000000000000000000 master_repl_offset:112 second_repl_offset:-1 repl_backlog_active:1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:1 repl_backlog_histlen:112编辑哨兵的配置文件 Sentinel实际上是一个特殊的redis服务器,有些redis指令支持,但很多指令并不支持.默认监听在26379/tcp端口哨兵可以不和Redis服务器部署在一起但一般部署在一起所有redis节点使用相同的配置文件 # 如果是编译安装在源码目录有sentinel.conf复制到安装目录即可 [rootmaster ~]# cp redis-5.0.9/sentinel.conf /apps/redis/etc/ [rootmaster ~]# grep -Ev ^(#|$) /apps/redis/etc/sentinel.conf port 26379 daemonize no pidfile /var/run/redis-sentinel.pid logfile dir /tmp #工作目录 sentinel monitor mymaster 127.0.0.1 6379 2 #指定当前mymaster集群中master服务器的地址和端口 #2为法定人数限制(quorum)即有几个sentinel认为master down了就进行故障转移一般此值是所有sentinel节点(一般总数是3的 奇数,如:3,5,7等)的一半以上的整数值比如总数是3即3/21.5取整为2,是master的ODOWN客观下线的依据 sentinel auth-pass master-name password #mymaster集群中master的密码注意此行要在上面行的下面 sentinel down-after-milliseconds mymaster 30000 #(SDOWN)判断mymaster集群中所有节点的主观下线的时间单位毫秒建议30000 sentinel parallel-syncs mymaster 1 #发生故障转移后同时向新master同步数据的slave数量数字越小总同步时间越长但可以减轻新master的负载压力 sentinel failover-timeout mymaster 180000 #所有slaves指向新的master所需的超时时间单位毫秒 sentinel deny-scripts-reconfig yes #禁止修改脚本三个哨兵服务器的配置都如下以master为例 [rootmaster ~]# grep -Ev ^(#|$) /apps/redis/etc/sentinel.conf port 26379 daemonize no pidfile /apps/redis/run/redis-sentinel.pid logfile /apps/redis/log/sentinel.log dir /tmp sentinel monitor mymaster 192.168.64.129 6379 2 sentinel auth-pass mymaster centos sentinel down-after-milliseconds mymaster 3000 sentinel parallel-syncs mymaster 1 sentinel failover-timeout mymaster 180000 sentinel deny-scripts-reconfig yes [rootmaster ~]# chown redis.redis /apps/redis/etc/sentinel.conf启动哨兵 三台哨兵服务器都要启动 # 添加哨兵服务 [rootmaster ~]# cat EOF /lib/systemd/system/redis-sentinel.service [Unit] DescriptionRedis Sentinel Afternetwork.target Afternetwork-online.target Wantsnetwork-online.target [Service] ExecStart/apps/redis/bin/redis-sentinel /apps/redis/etc/sentinel.conf --supervised systemd ExecStop/usr/libexec/redis-shutdown redis-sentinel Typenotify Userredis Groupredis RuntimeDirectoryredis RuntimeDirectoryMode0755 [Install] WantedBymulti-user.target EOF [rootmaster ~]# systemctl daemon-reload # 确保每个哨兵主机myid不同 #在master上 [rootmaster ~]# systemctl enable --now redis-sentinel [rootmaster ~]# grep myid /apps/redis/etc/sentinel.conf sentinel myid 4e119d69b1b0bee2a660bcb3162b6116907672e3 # 在slave1上 [rootslave1 ~]# systemctl enable --now redis-sentinel [rootslave1 ~]# grep myid /apps/redis/etc/sentinel.conf sentinel myid 946a5a7cb7ab39f46043e2db4f2f41ca1a04ec45 #在slave2上 [rootslave2 ~]# systemctl enable --now redis-sentinel [rootslave2 ~]# grep myid /apps/redis/etc/sentinel.conf sentinel myid 8d40b041b85bd197b33a34358169ee7b08de0ecc # 以下内容在服务启动后自动生成不需要修改 [rootmaster ~]# grep mymaster /apps/redis/etc/sentinel.conf # sentinel auth-pass mymaster MySUPER--secret-0123passw0rd sentinel monitor mymaster 192.168.175.10 6379 2 sentinel down-after-milliseconds mymaster 3000 sentinel auth-pass mymaster centos # sentinel notification-script mymaster /var/redis/notify.sh # sentinel client-reconfig-script mymaster /var/redis/reconfig.sh sentinel config-epoch mymaster 0 # instead of the normal ones. For example if the master mymaster, and the # SENTINEL rename-command mymaster CONFIG GUESSME # SENTINEL rename-command mymaster CONFIG CONFIG sentinel leader-epoch mymaster 0 sentinel known-replica mymaster 192.168.175.30 6379 sentinel known-replica mymaster 192.168.175.20 6379 sentinel known-sentinel mymaster 192.168.175.30 263798d40b041b85bd197b33a34358169ee7b08de0ecc sentinel known-sentinel mymaster 192.168.175.20 26379946a5a7cb7ab39f46043e2db4f2f41ca1a04ec45验证哨兵端口 [rootmaster ~]# ss -ntl State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 511 *:26379 *:*查看哨兵日志 [rootmaster ~]# tail /apps/redis/log/sentinel.log 18077:X 10 Jul 2021 11:23:34.486 # Current maximum open files is 4096.maxclients has been reduced to 4064 to compensate for low ulimit. If you need higher maxclients increase ulimit -n. 18077:X 10 Jul 2021 11:23:34.487 * Running modesentinel, port26379. 18077:X 10 Jul 2021 11:23:34.487 # Sentinel ID is 4e119d69b1b0bee2a660bcb3162b6116907672e3 18077:X 10 Jul 2021 11:23:34.487 # monitor master mymaster 192.168.175.10 6379 quorum 2 18077:X 10 Jul 2021 11:23:37.553 # sdown slave 192.168.175.30:6379 192.168.175.30 6379 mymaster 192.168.175.10 6379 18077:X 10 Jul 2021 11:23:37.553 # sdown slave 192.168.175.20:6379 192.168.175.20 6379 mymaster 192.168.175.10 6379 18077:X 10 Jul 2021 11:33:18.954 * sentinel sentinel 946a5a7cb7ab39f46043e2db4f2f41ca1a04ec45 192.168.175.20 26379 mymaster 192.168.175.10 6379 18077:X 10 Jul 2021 11:33:22.007 # sdown sentinel 946a5a7cb7ab39f46043e2db4f2f41ca1a04ec45 192.168.175.20 26379 mymaster 192.168.175.10 6379 18077:X 10 Jul 2021 11:33:48.674 * sentinel sentinel 8d40b041b85bd197b33a34358169ee7b08de0ecc 192.168.175.30 26379 mymaster 192.168.175.10 6379 18077:X 10 Jul 2021 11:33:51.763 # sdown sentinel 8d40b041b85bd197b33a34358169ee7b08de0ecc 192.168.175.30 26379 mymaster 192.168.175.10 6379当前sentinel状态 在sentinel状态中尤其是最后一行涉及到masterIP是多少有几个slave有几个sentinels必须是符合全部服务器数量 [rootmaster ~]# redis-cli -p 26379 127.0.0.1:26379 info sentinel # Sentinel sentinel_masters:1 sentinel_tilt:0 sentinel_running_scripts:0 sentinel_scripts_queue_length:0 sentinel_simulate_failure_flags:0 master0:namemymaster,statusok,address192.168.175.10:6379,slaves2,sentinels3停止Redis Master测试故障转移 yum install psmisc -y [rootmaster ~]# killall redis-server查看各节点上哨兵信息 [rootslave1 ~]# redis-cli -p 26379 127.0.0.1:26379 INFO sentinel # Sentinel sentinel_masters:1 sentinel_tilt:0 sentinel_running_scripts:0 sentinel_scripts_queue_length:0 sentinel_simulate_failure_flags:0 master0:namemymaster,statusok,address192.168.175.30:6379,slaves2,sentinels3故障转移后的redis配置文件会被自动修改 [rootslave1 ~]# grep ^replicaof /apps/redis/etc/redis.conf replicaof 192.168.175.30 6379哨兵配置文件的sentinel monitor IP 同样也会被修改 [rootslave1 ~]# grep monitor /apps/redis/etc/sentinel.conf sentinel monitor mymaster 192.168.175.30 6379 2新的master 状态 [rootslave2 ~]# redis-cli -a centos --no-auth-warning 127.0.0.1:6379 info replication # Replication role:master connected_slaves:1 slave0:ip192.168.175.20,port6379,stateonline,offset74161,lag1 master_replid:62c8c8c818b352be6a1afa248c1c0813f57bc1f8 master_replid2:88af3671612025201653c7467ebb880e6eae0912 master_repl_offset:74161 second_repl_offset:42755 repl_backlog_active:1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:1 repl_backlog_histlen:74161恢复故障的master重新加入redis集群 [rootmaster ~]# systemctl start redis [rootmaster ~]# grep ^replicaof /apps/redis/etc/redis.conf replicaof 192.168.175.30 6379 [rootmaster ~]# redis-cli -a centos --no-auth-warning 127.0.0.1:6379 info replication # Replication role:slave master_host:192.168.175.30 master_port:6379 master_link_status:up master_last_io_seconds_ago:2 master_sync_in_progress:0 slave_repl_offset:306155 slave_priority:100 slave_read_only:1 connected_slaves:0 master_replid:de66459a2ecc3f0652fcefc6be633855ccda5c1e master_replid2:0000000000000000000000000000000000000000 master_repl_offset:306155 second_repl_offset:-1 repl_backlog_active:1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:261652 repl_backlog_histlen:44504sentinel 运维 手动让主节点下线 # 指定优先级,值越小sentinel会优先将之选为新的master,默为值为100 [rootmaster ~]# vim /apps/redis/etc/redis.conf replica-priority 10 [rootmaster ~]# systemctl restart redis [rootmaster ~]# redis-cli -p 26379 127.0.0.1:26379 sentinel failover mymaster #手动发起哨兵切换不用对redis实例进行关机模拟主节点下降防止影响业务 OK 127.0.0.1:26379 info sentinel # Sentinel sentinel_masters:1 sentinel_tilt:0 sentinel_running_scripts:0 sentinel_scripts_queue_length:0 sentinel_simulate_failure_flags:0 master0:namemymaster,statusok,address192.168.175.10:6379,slaves2,sentinels3python连接redis 客户端连接sentinel工作原理 选举出一个sentinel 由这个sentinel 通过masterName 获取master节点信息 sentinel 发送role指令确认mater的信息 客户端订阅sentinel的相关频道,获取新的master 信息变化,并自动连接新的master python连接Sentinel哨兵 [rootmaster ~]# yum -y install epel-release [rootmaster ~]# yum -y install python3 python3-redis [rootmaster ~]# vim sentinel_test.py #!/usr/bin/python3 import redis from redis.sentinel import Sentinel #连接哨兵服务器(主机名也可以用域名) sentinel Sentinel([(192.168.175.10, 26379),(192.168.175.20, 26379),(192.168.175.30, 26379)],socket_timeout0.5) redis_auth_pass centos #mymaster 是配置哨兵模式的redis集群名称此为默认值,实际名称按照个人部署案例来填写 #获取主服务器地址 master sentinel.discover_master(mymaster) print(master) #获取从服务器地址 slave sentinel.discover_slaves(mymaster) print(slave) #获取主服务器连接进行写入 master sentinel.master_for(mymaster, socket_timeout0.5, passwordredis_auth_pass, db0) w_ret master.set(name, eagle) #输出True #获取从服务器进行读取默认是round-roubin slave sentinel.slave_for(mymaster, socket_timeout0.5, passwordredis_auth_pass, db0) r_ret slave.get(name) print(r_ret) #输出eagle[rootmaster ~]# python3 sentinel_test.py (192.168.175.10, 6379) [(192.168.175.20, 6379), (192.168.175.30, 6379)] beagle
http://www.hkea.cn/news/14336674/

相关文章:

  • 发布网站需要备案吗湖南长沙景点
  • 淘宝网站制作培训wordpress地址怎么打开
  • 塑胶制品 东莞网站建设用手机可以做网站吗
  • 网站建设响应式开发一个游戏需要多少钱
  • 潍坊路通工程建设有限公司网站c语言软件开和网站开发区别
  • 政务信息公开和网站建设自评建设工程项目
  • 深圳企业推广网站手机网站开发要多久
  • discuz做淘客网站上海市建设干部学校网站
  • 个人网站涉及企业内容做网站要哪些人员
  • 成都推广系统织梦网站是不是容易做seo
  • 北京网站建设公司华网天下官网海外网站空间
  • 海外网站建设公司用dw做购票网站
  • 珠海网站建设专业设计怎样建设网站后台
  • 网站seo推广优化一家做公司点评的网站
  • 台州外贸网站网站建设与架构男友实验
  • 织梦网站源码好吗陕西建设集团韩城公司网站
  • 北京网站空间建设网站的网页设计
  • 广东手机网站开发多少常州谷歌推广
  • 领导交给你一个网站你该怎么做网络营销软件价格
  • 做机械设备销售的那个网站好家具设计理念
  • 连锁加盟网站制作快速微信网站建设
  • 城乡建设部网站ps做的网站首页
  • 自己的做网站自建网站平台有哪些功能
  • 免费源码资源站做一个微信小程序游戏需要多少钱
  • 怀安网站制作怎嘛做网站
  • 网站建设博采wordpress文章迁移
  • 个人如果做网站赚钱wordpress重写登录页面
  • 洛阳做网站的有网站建wap
  • 校园官方网站建设给公司建网站需要多少钱
  • 网页设计网站多少钱网站相对路径 .