centos7+docker+elasticsearch 安裝記錄+踩坑


版本:

  cenos7 :3.10.0-957.21.3.el7.x86_64  (內核需>=3.10 才可以安裝)

  docker: yum安裝版本為1.13.1

  elasticsearch: 6.8.5

安裝:

  網上的安裝步驟很多,主要參考這篇文章 https://juejin.im/post/5ca0d12c518825550b35be6d,大致說一下不同點

  1. 此文是內網環境,需外網訪問參看下文異常處理3、4
  2. 注意應用docker logs containerid  命令查看docker日志,分析錯誤原因
  3. 安裝es-head:  
  • docker pull mobz/elasticsearch-head:5
  • docker run -d -p 9100:9100 docker.io/mobz/elasticsearch-head:5
  • ps:注意提前開9100端口
  • oh shit,沒想到這個官方鏡像是有bug的,由於es6.0+修改了檢測contenttype的機制,而es-head5沒有手動設置content-type,造成所有查詢都報406.  目前es-head5已經修復了這個bug,但是官方docker鏡像沒有同步修復。建議不要安裝docker版本https://github.com/mobz/elasticsearch-head/issues/361

  4.zipkin設置存儲方式為es時,查看docker日志有報錯,啟動命令為:

  

docker run -d  -p 9411:9411 \
           -e "STORAGE_TYPE=elasticsearch" \
           -e "ES_HOSTS=http://x.x.x.x:9200" \
           -e "ES_INDEX=zipkin" \
           -e "ES_INDEX_SHARDS=1" \
           -e "ES_INDEX_REPLICAS=1" \
           openzipkin/zipkin

  發現只要加上STORAGE_TYPE=elasticsearch,就在zipkin中無數據,去掉就可以正常寫入數據

  改為zipkin-slim后正常寫入zipkin和es (上面命令最后一行改為openzipkin/zipkin-slim)

  ps:zipkin-slim只能連接es,不能連接mysql

 

啟動

  

es啟動:
docker run -e xpack.security.enabled=true -e xpack.security.transport.ssl.enabled=true -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -d -p 9200:9200 -p 9300:9300 -v /dockerdata/es/config/master.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /dockerdata/es/master:/usr/share/elasticsearch/data --name es-master elasticsearch:6.8.5

ps:master.yml
cluster.name: elasticsearch-cluster
node.name: master
network.bind_host: 0.0.0.0
network.publish_host: x.x.x.x
network.host: 0.0.0.0
http.port: 9200
transport.tcp.port: 9300
http.cors.enabled: true
http.cors.allow-origin: "*"
node.master: true
node.data: true
discovery.zen.ping.unicast.hosts: ["x.x.x.x:9300","x.x.x.x:9301"]
http.cors.allow-headers: Authorization,X-Requested-With,Content-Length,Content-Type

最后一行為添加xpack后運行head插件訪問使用,訪問時http://x.x.x.x:9100/?auth_user=elastic&auth_password=123456

head啟動:
定位到head目錄后 nohup npm run start &
            disown (不加disown的話,node進程會在shell斷開后結束)
沒有使用docker版本的原因是官方docker鏡像沒有同步git主版本,所以存在一個bug:所有接口調用都報406錯誤,原因是es新版更新了請求機制,需要指定content-type

zipkin啟動:
docker run -d -p 9411:9411 \
-e "STORAGE_TYPE=elasticsearch" \
-e "ES_HOSTS=http://x.x.x.x:9200" \
-e "ES_INDEX=zipkin" \
-e "ES_INDEX_SHARDS=1" \
-e "ES_INDEX_REPLICAS=1" \
-e "ES_USERNAME=elastic" \
-e "ES_PASSWORD=123456" \
openzipkin/zipkin-slim


kibana啟動:
//docker run --link es-master:elasticsearch -p 5601:5601 --name kibana -d kibana:6.8.5
docker run -l es-master:elasticsearch -p 5601:5601 -v /dockerdata/es/kibana/config/kibana.yml:/usr/share/kibana/config/kibana.yml -d kibana:6.8.5

ps:kibana.yml

server.name: kibana
server.host: "0"
elasticsearch.url: http://x.x.x.x:9200
xpack.monitoring.ui.container.elasticsearch.enabled: true
elasticsearch.username: "kibana"
elasticsearch.password: "123456"



修改xpack默認用戶名密碼:
docker exec -it 'containerid' bash
進入 /usr/share/elasticsearch/bin 輸入 elasticsearch-setup-passwords interactive
然后依次修改所有賬戶密碼

 

異常處理:

  1. 啟動容器時報錯:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen   解決:重啟docker后再啟動容器
  2. max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144] 解決:/etc/sysctl.conf   ,vm.max_map_count=262144  (大於等於此數字)
  3. 無法外網訪問:修改config/master.yml/slave.yml 中的network.host: 0.0.0.0 (我有兩個節點,所以修改兩個配置文件;如果非docker環境,直接修改elasticsearch.yml)
  4. 外網依然訪問不了,可能是防火牆沒有開放端口,防火牆和端口相關命令參看 https://blog.csdn.net/u011846257/article/details/54707864

 

ps: es工具https://github.com/elastic/curator

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM