Arquitectura definitiva del sistema de registro ELK

¡Trabajar juntos para crear y crecer juntos! Este es el día 30 de mi participación en el "Nuggets Daily New Plan·August Update Challenge", haz clic para ver los detalles del evento

Arquitectura definitiva ELK

@ TOC

1. Diagrama de la arquitectura definitiva de ELK

Lo más cercano al diagrama de la arquitectura definitiva es que los registros que leemos y recopilamos de redis finalmente se almacenan en la biblioteca es mediante logstash, pero esta arquitectura tiene una falla: si redis se bloquea, no podremos recopilar registros.

Redis problema de punto único, podemos lograrlo mediante la agrupación, pero los tres modos de clúster de redis, excepto la replicación maestro-esclavo, los otros dos clústeres, filebeat no admiten la escritura de datos en el clúster, pero la replicación maestro-esclavo tiene inconvenientes, Si el nodo maestro cuelga, debe cambiar el nodo esclavo para leer y escribir por comando.

filebeat admite la escritura de clústeres de kafka, pero kafka no está familiarizado con él, todavía usamos redis para lograr

inserte la descripción de la imagen aquí

Podemos configurar dos redis separados y hacer un clúster de alta disponibilidad a través de equilibrio de carga de cuatro capas de nginx + keepalvide. Cuando uno de los redis está roto, el otro redis se hace cargo de su trabajo. Cuando redis01 está en modo de trabajo, se usa redis02 como el modo de copia de seguridad, para que no se generen datos en redis02, lo que puede garantizar la coherencia de los datos y no provocará la duplicación

Diagrama de arquitectura definitiva de ELK

inserte la descripción de la imagen aquí

2. Implemente la arquitectura ELK definitiva

IP Atender
192.168.81.210 es+kibana+logstash
192.168.81.210 nginx+keepalived+redis
192.168.81.220 es+kibana
192.168.81.220 nginx+keepalived+redis
192.168.81.230 ritmo de archivo+nginx

2.2 Implementar dos redis

192.168.81.210 configuración

1.安装redis(epel源中有redis的rpm包)
[root@elasticsearch ~]# yum -y install redis

2.启动redis
[root@elasticsearch ~]# systemctl start redis
[root@elasticsearch ~]# systemctl enable redis

3.查看端口号
[root@elasticsearch ~]# netstat -lnpt | grep redis
tcp        0      0 127.0.0.1:6379          0.0.0.0:*               LISTEN      94345/redis-server

4.登陆redis
[root@elasticsearch ~]# redis-cli
127.0.0.1:6379> 

5.配置redis允许任何主机访问
[root@elasticsearch ~]# vim /etc/redis.conf 
bind 0.0.0.0
[root@elasticsearch ~]# systemctl restart redis

6.创建一个key方便识别(最终测试的时候看)
[root@elasticsearch ~]# redis-cli 
127.0.0.1:6379> set redis01 192.168.81.210
OK

复制代码

192.168.81.220 configuración

1.安装redis(epel源中有redis的rpm包)
[root@node-2 ~]# yum -y install redis

2.启动redis
[root@node-2 ~]# systemctl start redis
[root@node-2 ~]# systemctl enable redis

3.查看端口号
[root@node-2 ~]# netstat -lnpt | grep redis
tcp        0      0 127.0.0.1:6379          0.0.0.0:*               LISTEN      94345/redis-server

4.登陆redis
[root@node-2 ~]# redis-cli
127.0.0.1:6379> 

5.配置redis允许任何主机访问
[root@node-2 ~]# vim /etc/redis.conf 
bind 0.0.0.0
[root@node-2 ~]# systemctl restart redis

6.创建一个key方便识别(最终测试的时候看)
[root@node-2 ~]# redis-cli 
127.0.0.1:6379> set redis02 192.168.81.220
OK
复制代码

2.3 Configurar el equilibrio de carga de cuatro capas de nginx

192.168.81.210 configuración

[root@elasticsearch ~]# vim /etc/nginx/nginx.conf
stream {
  upstream redis {
    server 192.168.81.210:6379 max_fails=2 fail_timeout=10s;
    server 192.168.81.220:6379 max_fails=2 fail_timeout=10s backup;
  }

  server {
    listen 6378;
    proxy_connect_timeout 1s;
    proxy_timeout 3s;
    proxy_pass redis;
  }
}

[root@elasticsearch ~]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

[root@elasticsearch ~]# systemctl restart nginx
复制代码

192.168.81.220 configuración

[root@node-2 ~]# vim /etc/nginx/nginx.conf
stream {
  upstream redis {
    server 192.168.81.210:6379 max_fails=2 fail_timeout=10s;
    server 192.168.81.220:6379 max_fails=2 fail_timeout=10s backup;
  }

  server {
    listen 6378;
    proxy_connect_timeout 1s;
    proxy_timeout 3s;
    proxy_pass redis;
  }
}

[root@elasticsearch ~]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

[root@node-2 ~]# systemctl restart nginx
复制代码

Probar si la carga de nginx está disponible

Usando dos balanceadores de carga, cualquier IP se puede cargar en redis01, porque redis02 es un estado de respaldo, generalmente los clústeres de alta disponibilidad son dos conjuntos de clústeres de equilibrio de carga conectados a keepalive

[root@elasticsearch ~]# redis-cli -h 192.168.81.210 -p 6378
192.168.81.210:6378> keys *
1) "redis01

[root@elasticsearch ~]# redis-cli -h 192.168.81.220 -p 6378
192.168.81.220:6378> keys *
1) "redis01"
复制代码

2.4 Configurar la alta disponibilidad de keepalive

192.168.81.210 configuración

[root@elasticsearch ~]# vim /etc/keepalived/keepalived.conf 
global_defs {
  router_id lb01
}

vrrp_instance VI_1 {
    state MASTER
    interface ens33
    virtual_router_id 50
    priority 150
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.81.211
    }
}

[root@elasticsearch ~]# systemctl restart keepalived
[root@elasticsearch ~]# systemctl enable keepalived
复制代码

192.168.81.220 configuración

[root@node-2 ~]# vim /etc/keepalived/keepalived.conf 
global_defs {
  router_id lb02
}

vrrp_instance VI_1 {
    state BACKUP
    interface ens33
    virtual_router_id 50
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.81.211
    }
}

[root@node-2 ~]# systemctl restart keepalived
[root@node-2 ~]# systemctl enable keepalived
复制代码

prueba de mantenimiento

1.漂移IP已经在主节点
[root@elasticsearch ~]# ip a |grep virbr0
3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
    inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0

2.使用虚拟IP登陆redis
[root@elasticsearch ~]# redis-cli -h 192.168.81.211 -p 6378
192.168.81.211:6378> keys *
1) "redis01

3.关闭主节点,查看ip是否会漂移
[root@elasticsearch ~]# systemctl stop keepalived
在backup节点查看,漂移成功
[root@node-2 ~]# ip a | grep vir
3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
    inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0

复制代码

2.5 Cuelgue redis01 para ver si cambiará a redis02 para alta disponibilidad

[root@elasticsearch ~]# redis-cli -h 192.168.81.211 -p 6378 192.168.81.211:6378> keys *1) "redis01"192.168.81.211:6378> keys *1) "redis01"192.168.81.211:6378> keys *1) "redis01"192.168.81.211:6378> 192.168.81.211:6378> 192.168.81.211:6378> 192.168.81.211:6378> keys *1) "filebeat"2) "redis02"192.168.81.211:6378>
复制代码

Perfectamente logra una alta disponibilidad, puede ver que redis02 está funcionando después de que redis01 cuelga

inserte la descripción de la imagen aquí

2.6 Configurar filebeat para almacenar registros en un clúster redis de alta disponibilidad

Solo necesita modificar la dirección transmitida a redis a una dirección IP de deriva.

[root@nginx ~]# vim /etc/filebeat/filebeat.yml 
output.redis:
  hosts: ["192.168.81.211:6379"]
  key: "nginx-all-key"
  db: 0
  timeout: 5
  
[root@nginx ~]# systemctl restart filebeat  
复制代码

inserte la descripción de la imagen aquí

2.7 Genere registros y verifique si la clave se genera en redis

1.产生日志
ab -c 100 -n 1000 http://www.jiangxl.com/ 
ab -c 100 -n 1000 http://bbs.jiangxl.com/ 
ab -c 100 -n 1000 http://blog.jiangxl.com/

2.查看redis上是否产生了key
192.168.81.211:6378> keys *
1) "nginx-all-key"							#已经产生了key
2) "redis01"
复制代码

2.8 Configurar logstash para conectarse al clúster de alta disponibilidad de redis

[root@elasticsearch ~]# vim /etc/logstash/conf.d/redis.conf 
input {
  redis {
    host => "192.168.81.210"
    port => "6379"
    db => "0"
    key => "nginx-all-key"
    data_type => "list"
  }
}
复制代码

Simplemente cambie la línea de la dirección redis

inserte la descripción de la imagen aquí

2.9 Inicie logstash y verifique si la biblioteca de índices se genera en es

[root@elasticsearch ~]# /usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/redis.conf 

复制代码

salida de logstash inserte la descripción de la imagen aquí

Ya existe un índice de datos generado en es

inserte la descripción de la imagen aquí

3. Asociar el índice es en kibana y ver la información de registro

3.1 Biblioteca de índice asociado es

índice de acceso nginx-www

inserte la descripción de la imagen aquí

índice de acceso nginx-bbs inserte la descripción de la imagen aquí

índice de acceso al blog nginx

inserte la descripción de la imagen aquí

3.2 Ver los datos de registro recopilados

índice de acceso nginx-www

inserte la descripción de la imagen aquí

índice de acceso nginx-bbs

inserte la descripción de la imagen aquí

índice de acceso al blog nginx

inserte la descripción de la imagen aquí

Supongo que te gusta

Origin juejin.im/post/7137089092998660110
Recomendado
Clasificación