¡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
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
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
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
复制代码
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
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
Ya existe un índice de datos generado en es
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
índice de acceso nginx-bbs
índice de acceso al blog nginx
3.2 Ver los datos de registro recopilados
índice de acceso nginx-www
índice de acceso nginx-bbs
índice de acceso al blog nginx