Pre
docker elk Setup Blog to record what I done these days:
- ELK stack Introduction,es single node setup by docker
- ES multiNodes record
- ELK Certificate record
- Docker Swarm + ELK Setting
Agenda
- Docker Swarm ELK Multi-node
Docker Swarm
這邊一定要特別講到swarm,他是一個cluster,可以分散資料到各個node,可以橫向擴展,可以提高效能,不會單點fail。
實作步驟
- 透過docker-machine 建立三台vm
- 在建立之前要先修改網卡,由於是Winodws Container底層是用Hyper-v來做的
- 一開始先改Hyper-v的”虛擬交換器管理員”設定IP4網址的轉換,官網也有講到如何更改
- 建立vm
- docker-machine create -d hyperv –hyperv-virtual-switch “Primary Virtual Switch” vm1
- 查看語法: docker-machine ls
- 進入vm1 啟動swarm,取得master Token
- docker-machine ssh vm1
- docker swarm init –advertise-addr 172.16.49.203
- 進入vm2跟vm3 加入vm01
- 接著去vm2跟vm3然後輸入在vm1拿到的Token
- docker swarm join –token SWMTKN-1-3d81wqmfk0dp1drzk3fv1ozs5bm4049yu8k20dofqlin73pyhh-2dk12n91pyodwgu02fof5ktd1 172.16.49.203:2377
- 檢查目前cluster node
- docker node ls
- 每台vm都記得開啟max_map_count上限給262144
- sudo sysctl -w vm.max_map_count=262144
- 注意以下操作都是在master node執行
- 複製docker-compose.yml到vm01上
- 可以透過ssh工具,也可以透過docker語法
- 使用ssh進入vm1的話,由於hyper-v 使用的VM是boot2docker,SSH的default是帳密是docker/tcuser,boot2docker也有註明
- 使用docker語法的話,Docker-machine scp,scp官方連結
- docker-machine scp docker-compose.yml myvm1:~
- 透過stack執行部屬 docker-compose-xxxx.yml
- docker stack deploy -c docker-stack.yml elk 或是
- docker stack deploy –compose-file docker-compose-cluster.yml elk
- 查看node的腳色,先透過docker node ls抓出node的Id
- docker node inspect NodeId
- 查看是否有錯誤
- Docker service ls
- 查看每個service的佈署狀態
- Docker service ps elk_kibana
- 發現我沒把kibana的folder丟上去vm1內,重新deploy後發現docker ps 就會出現服務了
- 透過Deploy語法指定ELK Service的部屬
- 放在這Github
- 最終部屬架構
- 2台elasticsearch,2台logstash,3台logspout,1台kibana,1台visualizer
- 移除語法
- docker stack rm elk
- Rolling update
- docker service update –replicas=3 elk_elasticsearch
- 離開swarm
- docker swarm leave –force
GUI 套建 Docker Swarm Visualizer
- 主要用來查看部屬而已
安裝步驟
1. docker run -it --restart always -d -p 5000:8080 -v /var/run/docker.sock:/var/run/docker.sock dockersamples/visualizer
2. 必須要在vm1裡面執行安裝語法
3. docker service create --name=viz --publish=5000:8080/tcp --constraint=node.role==manager --mount=type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock dockersamples/visualizer
4. 在vm1內透過docker service ls 去抓出IP addr如果你忘了的話
5. http://172.16.49.203:5000/
6. 如果是docker service建立的container,會需要用docker service rm來移除,如果只是透過docker rm xxx,它會自動重建
7. 刪除語法 always restart
1. sudo docker update --restart=no
2. Docker rm XXX
Consulsion
最後終於結束這四篇的安裝,歡迎大家可以嘗試嘗試。有些東西不試就不會知道當中的眉眉角角。這目前應該是可以直接使用的,如果要Production還要依據參數做一點修改,另外可以安裝Nginx跟Curator。一個是反向代理,一個是定時刪除es indies。差不多就這樣,最近系統好像出狀況了,該回歸正途了,感謝觀看。
來源
- Elastic
- Docker-Swarm-Beginners-Guide
- Learning ELK Stack
- elk architecture
- elastic/stack-docker
- configuring-tls-docker
- scp
- boot2docker