redis-cluster集群

redis3.0引入的分布式存储方案

集群由多个node节点组成,redis数据分布在这些节点当中。

在集群之中分为主节点和从节点

集群模式当中,主从一一对应,数据的写入和读取与主从模式一样,主负责写,从只能读,

集群模式自带哨兵模式,可以自动实现故障切换,但是在故障切换完成之前,整个集群都将不可用。切换完毕之后,集群会立刻恢复。

集群模式按照数据分片:

1、数据分片:是集群的核心功能,每个主都可以对外提供读、写的功能,但是数据是一一对应写入主的对应从节点。在集群模式中,可以容忍数据的不完整。

2、高可用:集群的主要目的。

数据分片的实现:

redis的集群引入了哈希槽的概念。

在redis集群当中,一共有16384个哈希槽位。(0-16383)

根据集群当中的主从节点数,分配哈希槽位,每个主从节点只负责一部分哈希槽位。

每次读写都涉及到哈希槽位,key通过CRC16校验之后,对16384取余数,余数值决定数据放入哪个哈希槽位。通过这个值去找到对应的哈希槽位所在地节点,然后直接跳转到这个节点进行存取操作。

注:主从节点的哈希槽位的值是连续的,如果出现不连续的哈希值,或者有哈希槽位没有被分配,整个集群将会报错。

主从复制的意义:主宕机之后,主节点原来复制的哈希槽将会不可用,需要从节点代替主节点继续负责原有的哈希操作。保证集群正常工作。

故障切换的过程中,会提示集群不可用,切换完成集群恢复继续工作。

redis-cli -h 192.168.233.7 --cluster create (所有ip地址) --cluster-replicas1

replicas 1:规定一个主只有一个从。

主从的配合是随机分配的。

在集群模式当中,只能选择0库,集群模式不能切换库,只能使用默认库。

Adding replica 192.168.233.15:6379 to 192.168.233.7;6379

Adding replica 192.168.233.16:6379 to 192.168.233.8;6379

Adding replica 192.168.233.17:6379 to 192.168.233.9;6379

(error)MOVED 4768.192.168.233.7:6379

表名客户端尝试读取键值对test1,但是实际槽位在4768,集群要求客户端移动到4768所在的主机节点,获取数据。

append-only yes 初始化库之后为空,否则会报错

集群流程:

1、集群自带主从和哨兵

2、每个主从节点之间相互隔离的,可以容忍数据的不完整。目的:高可用。

3、哈希槽位决定每个节点的读写操作,在创建key时,系统已经分配好了指定槽位。

4、MOVED不是报错,只是提醒客户端去分配的槽位节点,获取数据。

proxy.responses 1;在集群之中只要有一个节点响应,然后代理服务器就会把响应传递给客户端,可以增加整个系统的稳定性。

只要有一个节点可以响应,那么客户端就可以继续发起请求

四层转发:ip+端口

四层:全局配置

string四层

upstring七层(http)--->做反向代理

nginx可以提供多端口服务(80、6379...)

ELK日志分析系统:

ELK是一套完整的日志集中处理方案,由三个开源的软件简称组成

E:ElasticSearch:ES是一个开源的,分布式的存储检索引擎(索引型的非关系型数据库。)存储日志。(分片索引的形式存储)

Java代码开发的。基于Lucene结构开发的一套全文检索引擎。拥有一个web接口。用户可以通过浏览器的形式和ES组件进行通信。

作用:存储,允许全文搜索,结构化搜索(索引点),索引点可以支持大容量的日志数据。也可以搜索所有不同类型的文档。

K:kiabana图形化界面。可以更好的分析存储在ES上的日志数据。提供了一个图形化的界面,来浏览ES上的日志数据。汇总、分析、搜索。(方便用户检索)

L:Logstash:数据收集引擎(收集),支持动态的(实时的)从各种服务应用收集日志资源,还可以对收集到的日志数据进行过滤、分析,丰富,统一格式等待操作。然后把数据同步到es存储引擎。(分析、过滤)

RUBY语言编写的,运行在Java虚拟机上的一个强大的数据处理工具。数据传输,格式化处理,格式化输出。主要用来处理日志。

数据处理工具:

filebeat:轻量级的开源的,日志数据工具。收集的速度较快,但是没有数据分析和过滤的能力,一般是结合logstash一块使用

Kafka

RabbitMQ:中间件消息队列

总结:ELK的作用,当我们管理一个大集群时,需要分析和定位的日志就会很多,每一台服务器分别去分析,将会耗时耗力。所以我们应运而生了一个集中的统一的日志管理和分析系统。极大地提高的定位问题的效率。

日志收集的特征:

1、收集,可以收集基本上市面上常用的软件日志。

2、传输,收集到的日志需要发送到ES上

3、存储:es负责存储数据

4、UI:图形化界面(Kiabana)

三台主机:

es1:20.0.0.120

es2:20.0.0.121

logstash+kiabana:20.0.0.122(4核8G)

三台组件,每台最少要2核4G

ELK的版本(6.7.2)6、7版本主流

vim elasticsearch.yml

bootstrap.memory_lock:false 禁止使用交换分区

network.host 监听地址,0.0.0.0代表所有地址

http.port:9200 对外提供访问的端口

transport.tcp.port:9300 ES内部通信的端口

discovery.zen.ping.unicast.hosts: ["node1", "node2"]

grep -v "^#" 检查一下

/var/log/ElasticSearch 如果有错,看日志

es的性能调优:(搭建时需要优化的)

修改打开的最大文件数 vim /etc/security/limits.conf

soft nofile 65536

hard nofile 65536

soft nproc 32000

hard nproc 32000

soft memlock unlimited

hard memlock unlimited

优化系统配置文件

vim /etc/systemd/

DefaultLimitNOFILE=65536

一个用户会话的默认最大文件描述符的限制量。

文件描述符:用于标识打开文件或者I/O资源限制的整数。

DefautLimitNPROC=32000

一个用户可以打开的最大进程数量的限制32000.一个用户的终端可以运行多少个进程。

DefautLimitMEMLOCK=infinty

一个用户的终端默认锁定内存的限额,不限制

内核优化:

ES是基于Linux架构,实现一款索引型数据库。lucene可以利用操作系统的内存来缓存ES的索引数据。

提供更快的查询速度。在工作中我们会把系统的一半内存留给lucene。

机器内存小于64G,50%给操作系统。

机器内存大于64G,ES分配4~32G

systemctl.conf

vm.max_map_count=262144

一个进程可以拥有的最大内存映射区参数。

内存映射,将文件或者其他设备映射进程地址空间的方法,允许进程直接读取或写入文件,无需常规的I/O方式。

映射空间越大,ES和lucene的速度越快。

2g/262144

4g/4194304

8g/8388608

http.cors.enabled: true 开启跨域访问支持,默认为 false

http.cors.allow-origin: "*" 开启跨域访问之后允许访问的域名地址为所有

logstash的命令常用选项:

-f 指定配置文件,根据配置文件识别输入和输出流。

-e 测试,从命令行当中获取输入,然后经过logstash加工之后,形成一个标准输出

-t 检测配置文件是否正确,然后退出。

logstash -e 'input { stdin{} } output { stdout{} }'

所有的键盘命令行输出,转化成标准输出(rubydebug的模式),6.0之后,logstash的默认输出格式就是rubydebug格式的标准输出。

logstash -e 'input { stdin{} } output { elasticsearch { hosts=>["192.168.233.20:9200"] } }'

--path.data /opt/test1

区分不同的数据存放目录。

6.0之后的logstash自带的输出格式rubydebug,自动的把输出格式,定义为统一的标准格式输出。

rubydebug

在以前的版本需要手动配置

Nov 27 12:05:56 test1 logstash:2023-11-27T12:05:56.354[logstash.config.config.sourceloader] No configuration found in the config

elk:

es:存储数据,索引型的数据库

logstash:收集日志。

K:可视化工具。更人性化的显示用户信息,方便用户检查

js的格式

相关推荐
gavin_gxh19 分钟前
ORACLE 删除archivelog日志
数据库·oracle
一叶飘零_sweeeet22 分钟前
MongoDB 基础与应用
数据库·mongodb
猿小喵38 分钟前
DBA之路,始于足下
数据库·dba
tyler_download1 小时前
golang 实现比特币内核:实现基于椭圆曲线的数字签名和验证
开发语言·数据库·golang
编程、小哥哥1 小时前
设计模式之抽象工厂模式(替换Redis双集群升级,代理类抽象场景)
redis·设计模式·抽象工厂模式
weixin_449310841 小时前
高效集成:聚水潭采购数据同步到MySQL
android·数据库·mysql
Cachel wood2 小时前
Github配置ssh key原理及操作步骤
运维·开发语言·数据库·windows·postgresql·ssh·github
standxy2 小时前
如何将钉钉新收款单数据高效集成到MySQL
数据库·mysql·钉钉
Narutolxy3 小时前
MySQL 权限困境:从权限丢失到权限重生的完整解决方案20241108
数据库·mysql
Venchill3 小时前
安装和卸载Mysql(压缩版)
数据库·mysql