使用docker-compose構建elasticsearch集羣

環境說明

  • linux:centos7
  • elasticsearch:5.6.4
  • elasticsearch-head:5

目錄結構

項目代碼下載node

elasticsearch/
├── docker-compose.yml
├── head
└── node
    ├── es1
    │   ├── data
    │   └── elasticsearch.yml
    └── es2
        ├── data
        └── elasticsearch.yml

主節點elasticsearch.yml配置文件

elasticsearch/node/es1/elasticsearch.ymllinux

network.bind_host: 0.0.0.0
cluster.name: elasticsearch_cluster
cluster.routing.allocation.disk.threshold_enabled: false
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

從節點elasticsearch.yml配置文件

elasticsearch/node/es2/elasticsearch.ymlgit

network.bind_host: 0.0.0.0
cluster.name: elasticsearch_cluster
cluster.routing.allocation.disk.threshold_enabled: false
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

docker-compose.yml配置文件

version: '2.0'
services:
    elasticsearch-central:
        image: elasticsearch:5.6.4
        container_name: es1
        volumes:
           - /opt/modules/elasticsearch/node/es1/data:/usr/share/elasticsearch/data 
           - /opt/modules/elasticsearch/node/es1/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
        environment:
           - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
           - ES_CLUSTERNAME=elasticsearch
        command: elasticsearch
        ports:
           - "9200:9200"
           - "9300:9300"
    elasticsearch-data:
        image: elasticsearch:5.6.4
        container_name: es2
        volumes:
           - /opt/modules/elasticsearch/node/es2/data:/usr/share/elasticsearch/data
           - /opt/modules/elasticsearch/node/es2/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
        environment:
           - bootstrap.memory_lock=true
           - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
           - ES_CLUSTERNAME=elasticsearch
        command: elasticsearch
        ports:
           - "9201:9200"
           - "9301:9300"
        links:
           - elasticsearch-central:elasticsearch
    elasticsearch-head:
        image: mobz/elasticsearch-head:5
        container_name: head
        volumes:
           - /opt/modules/elasticsearch/head/Gruntfile.js:/usr/src/app/Gruntfile.js
           - /opt/modules/elasticsearch/head/_site/app.js:/usr/src/app/_site/app.js        
        ports:
           - "9100:9100"           
        links:
           - elasticsearch-central:elasticsearch

配置head

  • 下載elasticsearch-head
cd elasticsearch
git clone git://github.com/mobz/elasticsearch-head.git
mv elasticsearch-head head

下載下來的代碼結構以下:
elasticsearch-head目錄github

  • elasticsearch\head\Gruntfile.js修改如下片斷
connect: {
	server: {
		options: {
		    /* 默認監控:127.0.0.1,修改成:0.0.0.0 */
			hostname: '0.0.0.0',
			port: 9100,
			base: '.',
			keepalive: true
		}
	}
}
  • elasticsearch\head\_site\app.js修改如下代碼片斷
* 修改localhost爲elasticsearch集羣地址,Docker部署中,通常是elasticsearch宿主機地址 */
this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || "http://localhost:9200";

啓動

  • 運行elasticsearch須要vm.max_map_count至少須要262144內存
切換到root用戶修改配置sysctl.conf
vi /etc/sysctl.conf
在尾行添加如下內容   
vm.max_map_count=262144
並執行命令
sysctl -p

elk啓動的時候可能會提示以下錯誤:
max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]docker

  • 啓動es
docker-compose up 啓動
docker-compose down 關閉

測試

elasticsearch-head可視化頁面:http://es所在機器IP:9100 elasticsearch-head可視化頁面bootstrap

參考連接:
https://www.jianshu.com/p/a26c8c7226d7
https://blog.csdn.net/sinat_31908303/article/details/80496349
https://blog.csdn.net/ggwxk1990/article/details/78698648centos

相關文章
相關標籤/搜索