redis单机、单节点、单实例
问题:
1.单点故障
2.容量有限
3.压力
解决:AKF
X: 全量、镜像
Y: 业务、功能
Z: 优先级、逻辑再拆分
x: 主备
Y: 按照业务拆分(微服务)
z: 将key拆成多份,每份装一个库里
通过AKF、一变多(主备)
问题:怎么保持数据一致性?
强一致性破坏可用性。原:为什么一变多,解决可用性。(矛盾)
1.容忍数据丢失一部分
2.异步发送、第一个redis发送kafka(可靠、集群、响应速度快)、当第一个挂掉、另外备用的顶上去,数据从kafka中拿
主备: 一台工作、其他的等待主挂了在工作
主从:三台一起工作、
redis一般使用主从、那么主又有单点故障、所以需要对主做HA(高可用)
主:并不是不允许挂掉、而是当主挂掉、来一个服务顶掉挂掉的主,对外是一种没有挂掉的感觉。
所以主需要一个程序监控。
一个程序:也有单点故障的问题。
监控:只需要一部分决策成功即可(弱一致性 1或2个) 1:统计不准确,比如网络不通、出现脑裂现象,因为一个决策,一说ok,一个说不ok,第三个已经不重要了
2:解决脑裂问题、
启动redis
1.service redis_6379 start
2.redis-server ./6379.conf
进入客户端:
1.redis-cli -9 6379
5.0以前是slaveof 127.0.0.1 6379 5.0以后是replicaof 1270.0.1 6379 daemonize no 1.阻塞启动 日志打印到控制台 条件:在utils目录下执行 ./install_server.sh Port : 6382 Config file : /etc/redis/6382.conf 配置文件 Log file : /var/log/redis_6382.log 日志文件 Data dir : /var/lib/redis/6382 Executable : /opt/bigdata/redis5/bin/redis-server Cli Executable : /opt/bigdata/redis5/bin/redis-cli  生成端口:6380第一台、6381第二台、6380第三台。 将/etc/redis/目录对应的配置文件copy出来,修改daemonize no 6380启动: redis-server ./6380.conf 6381启动: redis-server ./6381.conf --replicaof 127.0.0.1 6380 6381出现: 1. Connecting to MASTER 127.0.0.1:6380 2. MASTER <-> REPLICA sync started 3. Flushing old data 4. Loading DB in memory 6380出现:  6382启动: redis-server ./6382.conf --replicaof 127.0.0.1 6380 6381出现: 1. Connecting to MASTER 127.0.0.1:6380 2. MASTER <-> REPLICA sync started 3. Flushing old data 4. Loading DB in memory 6380出现:  replica-serve-stale-data yes replica-read-only yes 备机保存 repl-diskless-sync no 主从是通过网络还是磁盘 repl-backlog-size 1mb #增量复制 min-replicas-to-write 3 min-replicas-max-lag 10
当主6380挂掉
6381和6382一直循环出现: Connecting to MASTER 127.0.0.1:6380 MASTER <-> REPLICA sync started Error condition on socket for SYNC: Connection refused
哨兵1: 26380.conf port 26380 sentinel monitor mymaster 127.0.0.1 6380 1 哨兵2: 26381.conf port 26381 sentinel monitor mymaster 127.0.0.1 6381 2 哨兵3: 26382.conf port 26382 sentinel monitor mymaster 127.0.0.1 6382 3 开启主从集群: 1.redis-server ./6380.conf 2.redis-server ./6381.conf --replicaof 127.0.0.1 6380 3.redis-server ./6382.conf --replicaof 127.0.0.1 6380 开启监控: redis-server ./26380.conf --sentinel redis-server ./26381.conf --sentinel redis-server ./26382.conf --sentinel 结论: 1.哨兵监控到了8380、6381、6382 2.也监控到了其他哨兵 3.哨兵会动配置文件,往26380、26381、26382配置文件加入监控到的其他哨兵信息 4.通过发布订阅发现其他哨兵( PSUBSCRIBE *可以查看) "127.0.0.1,26381,e48a67a20bb64588c9bbc98826cae61dd2906b3e,6,mymaster,127.0.0.1,6381,0" 1) "pmessage" 2) "*" 3) "__sentinel__:hello" 4) "127.0.0.1,26380,ec6e1806cf9c782acec81397aa65b3870b7900f6,6,mymaster,127.0.0.1,6380,0" 1) "pmessage" 2) "*" 3) "__sentinel__:hello" 一直在相互发送信息hello
原文:https://www.cnblogs.com/bigdata-familyMeals/p/14295927.html