欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用docker快速部署Elasticsearch集群的方法

 更新時間:2019年03月22日 10:51:38   作者:big_cat  
這篇文章主要介紹了使用docker快速部署Elasticsearch集群的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

本文將使用Docker容器(使用docker-compose編排)快速部署Elasticsearch 集群,可用于開發(fā)環(huán)境(單機多實例)或生產(chǎn)環(huán)境部署。

注意,6.x版本已經(jīng)不能通過 -Epath.config 參數(shù)去指定配置文件的加載位置,文檔說明:

For the archive distributions, the config directory location defaults to $ES_HOME/config. The location of the >config directory can be changed via the ES_PATH_CONF environment variable as follows:
ES_PATH_CONF=/path/to/my/config ./bin/elasticsearch
Alternatively, you can export the ES_PATH_CONF environment variable via the command line or via your shell profile.

即交給環(huán)境變量 ES_PATH_CONF 來設(shè)定了(官方文檔),單機部署多個實例且不使用容器的同學(xué)多多注意。

準備工作

安裝 docker & docker-compose

這里推進使用 daocloud 做個加速安裝:

#docker
curl -sSL https://get.daocloud.io/docker | sh

#docker-compose
curl -L \
https://get.daocloud.io/docker/compose/releases/download/1.23.2/docker-compose-`uname -s`-`uname -m` \
> /usr/local/bin/docker-compose

chmod +x /usr/local/bin/docker-compose

#查看安裝結(jié)果
docker-compose -v

數(shù)據(jù)目錄

#創(chuàng)建數(shù)據(jù)/日志目錄 這里我們部署3個節(jié)點
mkdir /opt/elasticsearch/data/{node0,nod1,node2} -p
mkdir /opt/elasticsearch/logs/{node0,nod1,node2} -p
cd /opt/elasticsearch
#權(quán)限我也很懵逼啦 給了 privileged 也不行 索性0777好了
chmod 0777 data/* -R && chmod 0777 logs/* -R

#防止JVM報錯
echo vm.max_map_count=262144 >> /etc/sysctl.conf
sysctl -p

docker-compse 編排服務(wù)

創(chuàng)建編排文件

vim docker-compose.yml

參數(shù)說明

- cluster.name=elasticsearch-cluster

集群名稱

- node.name=node0
- node.master=true
- node.data=true

節(jié)點名稱、是否可作為主節(jié)點、是否存儲數(shù)據(jù)

- bootstrap.memory_lock=true

鎖定進程的物理內(nèi)存地址避免交換(swapped)來提高性能

- http.cors.enabled=true
- http.cors.allow-origin=*

開啟cors以便使用Head插件

- "ES_JAVA_OPTS=-Xms512m -Xmx512m"

JVM內(nèi)存大小配置

- "discovery.zen.ping.unicast.hosts=elasticsearch_n0,elasticsearch_n1,elasticsearch_n2"
- "discovery.zen.minimum_master_nodes=2"

由于5.2.1后的版本是不支持多播的,所以需要手動指定集群各節(jié)點的tcp數(shù)據(jù)交互地址,用于集群的節(jié)點發(fā)現(xiàn)failover,默認缺省9300端口,如設(shè)定了其它端口需另行指定,這里我們直接借助容器通信,也可以將各節(jié)點的9300映射至宿主機,通過網(wǎng)絡(luò)端口通信。

設(shè)定failover選取的quorum = nodes/2 + 1

當然,也可以掛載自己的配置文件,ES鏡像的配置文件是/usr/share/elasticsearch/config/elasticsearch.yml,掛載如下:

volumes:
 - path/to/local/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml:ro

docker-compose.yml

version: '3'
services:
 elasticsearch_n0:
  image: elasticsearch:6.6.2
  container_name: elasticsearch_n0
  privileged: true
  environment:
   - cluster.name=elasticsearch-cluster
   - node.name=node0
   - node.master=true
   - node.data=true
   - bootstrap.memory_lock=true
   - http.cors.enabled=true
   - http.cors.allow-origin=*
   - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
   - "discovery.zen.ping.unicast.hosts=elasticsearch_n0,elasticsearch_n1,elasticsearch_n2"
   - "discovery.zen.minimum_master_nodes=2"
  ulimits:
   memlock:
    soft: -1
    hard: -1
  volumes:
   - ./data/node0:/usr/share/elasticsearch/data
   - ./logs/node0:/usr/share/elasticsearch/logs
  ports:
   - 9200:9200
 elasticsearch_n1:
  image: elasticsearch:6.6.2
  container_name: elasticsearch_n1
  privileged: true
  environment:
   - cluster.name=elasticsearch-cluster
   - node.name=node1
   - node.master=true
   - node.data=true
   - bootstrap.memory_lock=true
   - http.cors.enabled=true
   - http.cors.allow-origin=*
   - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
   - "discovery.zen.ping.unicast.hosts=elasticsearch_n0,elasticsearch_n1,elasticsearch_n2"
   - "discovery.zen.minimum_master_nodes=2"
  ulimits:
   memlock:
    soft: -1
    hard: -1
  volumes:
   - ./data/node1:/usr/share/elasticsearch/data
   - ./logs/node1:/usr/share/elasticsearch/logs
  ports:
   - 9201:9200
 elasticsearch_n2:
  image: elasticsearch:6.6.2
  container_name: elasticsearch_n2
  privileged: true
  environment:
   - cluster.name=elasticsearch-cluster
   - node.name=node2
   - node.master=true
   - node.data=true
   - bootstrap.memory_lock=true
   - http.cors.enabled=true
   - http.cors.allow-origin=*
   - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
   - "discovery.zen.ping.unicast.hosts=elasticsearch_n0,elasticsearch_n1,elasticsearch_n2"
   - "discovery.zen.minimum_master_nodes=2"
  ulimits:
   memlock:
    soft: -1
    hard: -1
  volumes:
   - ./data/node2:/usr/share/elasticsearch/data
   - ./logs/node2:/usr/share/elasticsearch/logs
  ports:
   - 9202:9200

這里我們分別為node0/node1/node2開放宿主機的9200/9201/9202作為http服務(wù)端口,各實例的tcp數(shù)據(jù)傳輸用默認的9300通過容器管理通信。

如果需要多機部署,則將EStransport.tcp.port: 9300端口映射至宿主機xxxx端口,discovery.zen.ping.unicast.hosts填寫各主機代理的地址即可:

#比如其中一臺宿主機為192.168.1.100
  ...
  - "discovery.zen.ping.unicast.hosts=192.168.1.100:9300,192.168.1.101:9300,192.168.1.102:9300"
  ...
ports:
 ...
 - 9300:9300

創(chuàng)建并啟動服務(wù)

[root@localhost elasticsearch]# docker-compose up -d
[root@localhost elasticsearch]# docker-compose ps
   Name          Command        State        Ports       
--------------------------------------------------------------------------------------------
elasticsearch_n0  /usr/local/bin/docker-entr ...  Up   0.0.0.0:9200->9200/tcp, 9300/tcp
elasticsearch_n1  /usr/local/bin/docker-entr ...  Up   0.0.0.0:9201->9200/tcp, 9300/tcp
elasticsearch_n2  /usr/local/bin/docker-entr ...  Up   0.0.0.0:9202->9200/tcp, 9300/tcp

#啟動失敗查看錯誤
[root@localhost elasticsearch]# docker-compose logs
#最多是一些訪問權(quán)限/JVM vm.max_map_count 的設(shè)置問題

查看集群狀態(tài)

192.168.20.6 是我的服務(wù)器地址

訪問http://192.168.20.6:9200/_cat/nodes?v即可查看集群狀態(tài):

ip     heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name
172.25.0.3      36     98 79  3.43  0.88   0.54 mdi    *   node0
172.25.0.2      48     98 79  3.43  0.88   0.54 mdi    -   node2
172.25.0.4      42     98 51  3.43  0.88   0.54 mdi    -   node1

驗證 Failover

通過集群接口查看狀態(tài)

模擬主節(jié)點下線,集群開始選舉新的主節(jié)點,并對數(shù)據(jù)進行遷移,重新分片。

[root@localhost elasticsearch]# docker-compose stop elasticsearch_n0
Stopping elasticsearch_n0 ... done

集群狀態(tài)(注意換個http端口 原主節(jié)點下線了),down掉的節(jié)點還在集群中,等待一段時間仍未恢復(fù)后就會被剔出

ip     heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name
172.25.0.2      57     84  5  0.46  0.65   0.50 mdi    -   node2
172.25.0.4      49     84  5  0.46  0.65   0.50 mdi    *   node1
172.25.0.3                            mdi    -   node0

等待一段時間

ip     heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name
172.25.0.2      44     84  1  0.10  0.33   0.40 mdi    -   node2
172.25.0.4      34     84  1  0.10  0.33   0.40 mdi    *   node1

恢復(fù)節(jié)點 node0

[root@localhost elasticsearch]# docker-compose start elasticsearch_n0
Starting elasticsearch_n0 ... done

等待一段時間

ip     heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name
172.25.0.2      52     98 25  0.67  0.43   0.43 mdi    -   node2
172.25.0.4      43     98 25  0.67  0.43   0.43 mdi    *   node1
172.25.0.3      40     98 46  0.67  0.43   0.43 mdi    -   node0

配合 Head 插件觀察

git clone git://github.com/mobz/elasticsearch-head.git
cd elasticsearch-head
npm install
npm run start

集群狀態(tài)圖示更容易看出數(shù)據(jù)自動遷移的過程

1、集群正常 數(shù)據(jù)安全分布在3個節(jié)點上

2、下線 node1 主節(jié)點 集群開始遷移數(shù)據(jù)

遷移中

遷移完成

3、恢復(fù) node1 節(jié)點

問題小記

elasticsearch watermark

部署完后創(chuàng)建索引發(fā)現(xiàn)有些分片處于 Unsigned 狀態(tài),是由于 elasticsearch watermark:low,high,flood_stage的限定造成的,默認硬盤使用率高于85%就會告警,開發(fā)嘛,手動關(guān)掉好了,數(shù)據(jù)會分片到各節(jié)點,生產(chǎn)自行決斷。

curl -X PUT http://192.168.20.6:9201/_cluster/settings \
-H 'Content-type':'application/json' \
-d '{"transient":{"cluster.routing.allocation.disk.threshold_enabled": false}}'

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • docker 連接宿主Mysql操作

    docker 連接宿主Mysql操作

    這篇文章主要介紹了docker 連接宿主Mysql操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • docker 安裝、升級、修改數(shù)據(jù)目錄的操作方法

    docker 安裝、升級、修改數(shù)據(jù)目錄的操作方法

    這篇文章主要介紹了docker 安裝、升級、修改數(shù)據(jù)目錄的操作方法,本文給大家介紹的非常詳細,感興趣的朋友跟隨小編一起看看吧
    2024-08-08
  • SQL?Server?簡介與?Docker?Compose?部署SQL?Server?容器

    SQL?Server?簡介與?Docker?Compose?部署SQL?Server?容器

    SQL?Server?是一個功能強大的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),適用于各種規(guī)模的應(yīng)用程序和數(shù)據(jù)存儲需求,在本文中,我將簡要介紹?SQL?Server?的基本概念,并詳細闡述如何使用?Docker?Compose?部署?SQL?Server?容器,感興趣的朋友跟隨小編一起看看吧
    2023-10-10
  • Docker容器部署前端Vue服務(wù)(小白教程)

    Docker容器部署前端Vue服務(wù)(小白教程)

    本文主要介紹了Docker容器部署前端Vue服務(wù),文中根據(jù)實例編碼詳細介紹的十分詳盡,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • docker 如何添加證書

    docker 如何添加證書

    這篇文章主要介紹了docker 如何添加證書的操作方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • 在docker中執(zhí)行l(wèi)inux shell命令的操作

    在docker中執(zhí)行l(wèi)inux shell命令的操作

    這篇文章主要介紹了在docker中執(zhí)行l(wèi)inux shell命令的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • 如何在mac上用docker對Oracle進行部署使用

    如何在mac上用docker對Oracle進行部署使用

    這篇文章主要介紹了如何在mac上用docker對Oracle進行部署使用,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03
  • Docker創(chuàng)建一個mysql容器并保存為本地鏡像

    Docker創(chuàng)建一個mysql容器并保存為本地鏡像

    本篇文章主要介紹了Docker創(chuàng)建一個mysql容器并保存為本地鏡像 ,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-05-05
  • Dockerfile多鏡像構(gòu)建方式

    Dockerfile多鏡像構(gòu)建方式

    這篇文章主要介紹了Dockerfile多鏡像構(gòu)建方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • 在docker中搭建部署clickhouse過程

    在docker中搭建部署clickhouse過程

    文章介紹了在Docker中部署ClickHouse并進行網(wǎng)關(guān)日志存儲的步驟,包括創(chuàng)建ClickHouse容器、修改用戶配置、使用DBeaver連接以及在Spring?Boot中集成ClickHouse進行讀寫操作
    2024-11-11

最新評論