1. 程式人生 > >Docker-compose搭建ELK+head+redis環境(1)-- elasticsearch安裝

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外掛安裝。