Distributed Search Engine for Massive System Log Dataset
- Distributed version of standalone Hayabusa(https://github.com/hirolovesbeer/hayabusa)
- Use Network Filesystem(NFS) for Large log storage
- Implement Request Broker for distributed workers
- Worker(nodes/processes) scale architecture
- WebUI
-
WebUI
-
RequestBroker
-
Worker nodes
-
NFS(Network File System)
-
LogWriter
-
Monitoring(Zabbix)
- Amazon AWS(ECS) : m5.xlarge or higher
- Storage for NFS : 1TB or more(depend on the log volume)
- VPC for private network
- Internet connectivity for ansible setting
- Anaconda install
- apt, pip conda command exec
- ssh connection and login check for all hosts
- NFS disk mount for NFS host(mount /opt/nfs directory)
- Get the Hayabusa2 sources
$ git clone git@github.com:hirolovesbeer/hayabusa2.git
$ cd hayabusa2
- Make archive files
$ mkdir tmp
$ git archive --format=tar --prefix=hayabusa/ HEAD | gzip > tmp/hayabusa.tgz
- Edit ansible hosts files
$ cd provision
$ cp hosts.sample hosts
$ vi hosts
- WebUI/Client
- RequestBroker + Worker + NFS + LogWriter
- ansible hosts file example
- 192.168.0.10 : WebUI/client
- 192.168.0.11 : RequestBroker/Worker/NFS/LogWriter
[basic]
[nfs]
# Use Public DNS or Public IP
192.168.0.11
[log-writer]
# Use Public DNS or Public IP
192.168.0.11
[request-broker]
# Use Public DNS or Public IP
192.168.0.11
[worker]
# Use Public DNS or Public IP
192.168.0.11
[webui]
# Use Public DNS or Public IP
192.168.0.10
[cli-client]
# Use Public DNS or Public IP
192.168.0.10
[monitor]
# Use Public DNS or Public IP <- comment out
# ec2-xxxx.ap-northeast-1.compute.amazonaws.com <- comment out
- WebUI/Client
- RequestBroker
- Worker hosts(1~10)
- NFS server
- LogWriter
- Monitoring(Zabbix + LogAggregator)
- ansible hosts file example
- 192.168.0.10 : WebUI/client
- 192.168.0.11 : RequestBroker
- 192.168.0.12 : NFS
- 192.168.0.13 : LogWriter
- 192.168.0.14 : Monitoring/LogAggregation
- 192.168.0.15-24 : Worker hosts
[basic]
[nfs]
# Use Public DNS or Public IP
192.168.0.12
[log-writer]
# Use Public DNS or Public IP
192.168.0.13
[request-broker]
# Use Public DNS or Public IP
192.168.0.11
[worker]
# Use Public DNS or Public IP
192.168.0.15
192.168.0.16
192.168.0.17
192.168.0.18
192.168.0.19
192.168.0.20
192.168.0.21
192.168.0.22
192.168.0.23
192.168.0.24
[webui]
# Use Public DNS or Public IP
192.168.0.10
[cli-client]
# Use Public DNS or Public IP
192.168.0.10
[monitor]
# Use Public DNS or Public IP
192.168.0.14
- exec install command in provision directory
$ cd provision
$ ansible-playbook -i hosts site.yml