基于swarm的elasticsearch集群部署
基于swarm的es集群部署:
elasticsearch如果直接在物理机上安装的话,需要去考虑一些服务的编排以及配置一致性问题。后期运维的时候服务的升级和回滚都会比较麻烦。使用docker来搭建的话,就可以使用swarm这样的集群管理工具来对整个集群进行管理,会带来很多有利的特性。swarm部署方便简单,这边不赘述,主要描述一些es部署的细节内容。
1、修改/usr/share/elasticsearch/config/elasticsearch.yml 配置文件 ,添加
# head插件配置
http.cors.enabled: true
http.cors.allow-origin: "*"
network.host: 0.0.0.0
transport.tcp.port: 9300
http.port: 9200
完成后,我们可以把elasticsearch镜像打包更新,存储到私有regirsty中。
2、es.yml ,用于使用docker stack deploy 部署:
version: '3.2'
services:
es_master:
image: '10.211.121.26/library/elasticsearch:5.5.1_ik'
command: [ elasticsearch, -E, network.host=0.0.0.0, -E, discovery.zen.ping.unicast.hosts=es_master, -E, discovery.zen.minimum_master_nodes=1, -E, node.master=true ]
volumes:
- /data0/elasticsearch/data:/usr/share/elasticsearch/data
- /data0/elasticsearch/logs:/usr/share/elasticsearch/logs
#目录必须在主机节点存在,这边容器重启时,es数据才不会丢失。
networks:
esnet:
deploy:
replicas: 3
endpoint_mode: dnsrr
placement:
#限定容器运行在对应标签节点
constraints: [node.labels.app_role == elasticsearch]
#nginx做代理,实现es集群入口访问:
nginx:
image: 'nginx:1'
ports:
- '9200:9200'
command: |
/bin/bash -c "echo '
server {
listen 9200;
add_header X-Frame-Options "SAMEORIGIN";
location / {
#proxy_pass http://elasticsearch:9200;
proxy_pass http://es_master:9200;
proxy_http_version 1.1;
proxy_set_header Connection keep-alive;
proxy_set_header Upgrade $$http_upgrade;
proxy_set_header Host $$host;
proxy_set_header X-Real-IP $$remote_addr;
proxy_cache_bypass $$http_upgrade;
}
}' | tee /etc/nginx/conf.d/default.conf && nginx -g 'daemon off;'"
networks:
esnet:
#eshead 网络插件,实现es集群可视化管理。
eshead:
image: '10.211.121.26/library/elasticsearch-head:5'
ports:
- '9100:9100'
networks:
esnet:
kibana:
image: kibana:5.5.1
ports:
- '5601:5601'
environment:
- ELASTICSEARCH_URL=http://es_master:9200
networks:
esnet:
networks:
esnet:
driver: overlay
ipam:
driver: default
config:
- subnet: 12.0.0.0/24
在主机上给指定的node 添加 elasticsearch 标签,限制es节点运行在指定主机上。
# docker node update --label-add app_role=elasticsearch nodename
#在swarm master节点运行: docker stack deploy -c es.yml es001 ,docker将自动完成集群创建操作。
- 点赞
- 收藏
- 关注作者
评论(0)