Docker-compose搭建ELK+head+redis環境(1)-- elasticsearch安裝
我在想本機搭建一套ELK環境,本來想著應該很簡單,網上教程也很多,結果教程都或多或少有點問題,踩了不少的坑,折騰了好幾天才解決。乾脆根據自己安裝經驗,寫篇教程,讓大家少走點彎路。也歡迎大佬來拍磚。
(一)、環境的準備
宿主機是centos7.0的虛擬機器,IP地址為:192.168.3.140
需要部署以下容器:
映象 | 容器名稱 | 說明 |
---|---|---|
elasticsearch:5.6.4 | es1 | elasticsearch的master節點 |
elasticsearch:5.6.4 | es2 | elasticsearch的資料節點 |
mobz/elasticsearch-head:5 | es_head | elasticsearch的head外掛 |
kibana:5.6.4 | kibana | kibana節點 |
logstash:5.6.4 | logstash | logstash節點 |
redis:latest | redis-cache | redis節點 |
Pull相關Docker映象:
docker pull elasticsearch:5.6.4
docker pull mobz/elasticsearch-head:5
docker pull kibana:5.6.4
docker pull logstash:5.6.4
docker pull redis:latest
(二)、elasticsearch叢集的安裝
1、工作目錄準備
master節點目錄:/data/elasticsearch/data
資料節點:/data/elasticsearch/data
2、建立兩個配置檔案
/data/elasticsearch/config/es1.yml
network.bind_host : 0.0.0.0
cluster.name: elasticsearch_cluster
node.name: master
node.master: true
node.data: true
http.cors.enabled: true
http.cors.allow-origin: "*"
network.host: 0.0.0.0
discovery.zen.minimum_master_nodes: 1
/data/elasticsearch/config/es2.yml
network.bind_host: 0.0.0.0
cluster.name: elasticsearch_cluster
node.name: node2
node.master: false
node.data: true
http.cors.enabled: true
http.cors.allow-origin: "*"
network.host: 0.0.0.0
discovery.zen.minimum_master_nodes: 1
discovery.zen.ping.unicast.hosts: es1
3、啟動
可以先用命令列啟動:
docker run -d --name es1 -p 9200:9200 -p 9300:9300 -v /data/elasticsearch/config/es1.yml:/usr/share/elasticsearch/config/elasticsearch.yml: -v /data/elasticsearch/data:/usr/share/elasticsearch/data elasticsearch:5.6.4
docker run -d --name es2 --link es1:es1 -p 9201:9200 -p 9301:9300 -v /root/es_docker/es2.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /data/elasticsearch/data2:/usr/share/elasticsearch/data elasticsearch:5.6.4
docker-compose.yml檔案:
version: '2.0'
services:
elasticsearch-central:
image: elasticsearch:5.6.4
container_name: es1
volumes:
- /data/elasticsearch/data:/usr/share/elasticsearch/data
- /data/elasticsearch/config/es1.yml:/usr/share/elasticsearch/config/elasticsearch.yml
environment:
- ES_CLUSTERNAME=elasticsearch
command: elasticsearch
ports:
- "9200:9200"
- "9300:9300"
elasticsearch-data:
image: elasticsearch:5.6.4
container_name: es2
volumes:
- /data/elasticsearch/data2:/usr/share/elasticsearch/data
- /data/elasticsearch/config/es2.yml:/usr/share/elasticsearch/config/elasticsearch.yml
environment:
- ES_CLUSTERNAME=elasticsearch
command: elasticsearch
ports:
- "9200:9200"
- "9300:9300"
links:
- elasticsearch-central:elasticsearch
在docker-compose.yml目錄下執行以下命令,啟動elasticsearch:
docker-compose up
通過docker ps檢視容器是否啟動,也可以通過docker logs -f -t –tail=10 容器名,檢視容器啟動日誌。
檢視叢集健康狀態:
http://192.168.3.140:9200/_cat/health?v
4、安裝注意問題
1)啟動時報:
max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144]
修改/etc/sysctl.conf檔案就可以了,問題是,修改哪裡的sysctl.conf檔案。
開始我想修改elasticsearch容器裡面配置檔案,但是發現報錯容器根本起不來,而且即使起來了,發現容器裡面根本沒有/etc/sysctl.conf這個檔案。
其實Docker容器是繼承宿主機的虛擬記憶體大小配置,只需修改宿主機對應檔案即可。
[root@localhost ~]# cat /etc/sysctl.conf | grep -v "vm.max_map_count" > /tmp/system_sysctl.conf
[root@localhost ~]# echo "vm.max_map_count=262144" >> /tmp/system_sysctl.conf
[root@localhost ~]# mv /tmp/system_sysctl.conf /etc/sysctl.conf
mv:是否覆蓋"/etc/sysctl.conf"? y
[root@localhost ~]# cat /etc/sysctl.conf
# System default settings live in /usr/lib/sysctl.d/00-system.conf.
# To override those settings, enter new settings here, or in an /etc/sysctl.d/<name>.conf file
#
# For more information, see sysctl.conf(5) and sysctl.d(5).
vm.max_map_count=262144
[root@localhost ~]# sysctl -p
vm.max_map_count = 262144
2)配置檔案修改
從網上覆制的配置檔案,可能存在問題。可以重新start容器,docker start 容器 -a 或者docker logs -f -t –tail=10 容器名,看啟動資訊,分析具體出錯的原因。
下一篇講解安裝head外掛安裝。