Docker实战(十二):Docker安装ElasticSearch集群环境
2016-01-15 02:14
721 查看
Docker安装ElasticSearch集群环境
ES集群需要配置几个地方,最简单的是配置集群名称和Node名称,其他的基本使用默认值就可以了,下面是elasticsearch.yml配置文件部分属性的用法,可以参考使用# 集群名称,默认为elasticsearch cluster.name: birdESCluster # 节点Node名称,ES启动时会自动创建节点名称,默认的是从ES的,但你也可进行配置 node.name: "birdESNode01" # 是否作为主节点,每个节点都可以被配置成为主节点,默认值为true node.master: true # 是否存储数据,即存储索引片段,默认值为true node.data: true # master和data同时配置会产生一些奇异的效果: 1) 当master为false,而data为true时,会对该节点产生严重负荷; 2) 当master为true,而data为false时,该节点作为一个协调者; 3) 当master为false,data也为false时,该节点就变成了一个负载均衡器。 你可以通过连接来查看集群状态 http://localhost:9200/_cluster/health http://localhost:9200/_cluster/nodes 或者使用插件来查看集群状态 http://github.com/lukas-vlcek/bigdesk http://mobz.github.com/elasticsearch-head # 设置一个索引的碎片数量,默认值为5 index.number_of_shards: 5 # 设置一个索引可被复制的数量,默认值为1 index.number_of_replicas: 1 # 当你想要禁用公布式时,你可以进行如下设置: index.number_of_shards: 1 index.number_of_replicas: 0 这两个属性的设置直接影响集群中索引和搜索操作的执行。假设你有足够的机器来持有碎片和复制品,那么可以按如下规则设置这两个值: 1) 拥有更多的碎片可以提升索引执行能力,并允许通过机器分发一个大型的索引; 2) 拥有更多的复制器能够提升搜索执行能力以及集群能力。 对于一个索引来说,number_of_shards只能设置一次,而number_of_replicas可以使用索引更新设置API在任何时候被增加或者减少。 ElasticSearch关注加载均衡、迁移、从节点聚集结果等等。可以尝试多种设计来完成这些功能。 可以连接http://localhost:9200/A/_status来检测索引的状态。 # 配置文件所在的位置,即elasticsearch.yml和logging.yml所在的位置 path.conf: /path/to/conf # 分配给当前节点的索引数据所在的位置 path.data: /path/to/data # 可以可选择的包含一个以上的位置,使得数据在文件级别跨越位置,这样在创建时就有更多的自由路径 path.data: /path/to/data1,/path/to/data2 # 日志文件所在位置 path.logs: /path/to/logs # 临时文件位置 path.work: /path/to/work # 插件安装位置 path.plugins: /path/to/plugins # 默认情况下,ElasticSearch使用0.0.0.0地址(也就是说如果这个机子有几个网卡,则ElasticSearch都可以通过这些IP来使用其服务。所以如果我们的服务器有网卡绑定在外网时一定要注意设置ElasticSearch的属性),并为http传输开启9200-9300端口,为节点到节点的通信开启9300-9400端口,也可以自行设置IP地址: network.bind_host: 192.168.0.1 # publish_host设置其他节点连接此节点的地址,如果不设置的话,则自动获取,publish_host的地址必须为真实地址: network.publish_host: 192.168.0.1 # bind_host和publish_host可以一起设置:(如果不想外网访问ES,可以设置这个) network.host: 192.168.0.1 # 可以定制该节点与其他节点交互的端口: transport.tcp.port: 9300 # 节点间交互时,可以设置是否压缩,转为为不压缩: transport.tcp.compress: true # 可以为Http传输监听定制端口: http.port: 9200 # 设置内容的最大长度: http.max_content_length: 100mb # 禁止HTTP http.enabled: false # 允许在N个节点启动后恢复过程: gateway.recover_after_nodes: 1 # 设置初始化恢复过程的超时时间: gateway.recover_after_time: 5m # 设置ping其他节点时的超时时间,网络比较慢时可将该值设大: discovery.zen.ping.timeout: 3s # 禁止当前节点发现多个集群节点,默认值为true: discovery.zen.ping.multicast.enabled: false # 设置新节点被启动时能够发现的主节点列表: discovery.zen.ping.unicast.hosts: ["10.0.0.28:9300", "10.0.0.28:9500"] # 设置是否可以通过正则或者_all删除或者关闭索引 action.destructive_requires_name 默认false 允许 可设置true不允许 # 下面是一些查询时的慢日志参数设置 index.search.slowlog.level: TRACE index.search.slowlog.threshold.query.warn: 10s index.search.slowlog.threshold.query.info: 5s index.search.slowlog.threshold.query.debug: 2s index.search.slowlog.threshold.query.trace: 500ms index.search.slowlog.threshold.fetch.warn: 1s index.search.slowlog.threshold.fetch.info: 800ms index.search.slowlog.threshold.fetch.debug:500ms index.search.slowlog.threshold.fetch.trace: 200ms
elasticsearch.yml源文件链接:
https://github.com/birdben/birdDocker/blob/master/escluster/elasticsearch_01.yml
Dockerfile文件
############################################ # version : birdben/escluster:v1 # desc : 当前版本安装的escluster ############################################ # 设置继承自我们创建的 jdk7 镜像 FROM birdben/jdk7:v1 # 下面是一些创建者的基本信息 MAINTAINER birdben (191654006@163.com) # 设置环境变量,所有操作都是非交互式的 ENV DEBIAN_FRONTEND noninteractive # 添加 supervisord 的配置文件,并复制配置文件到对应目录下面。(supervisord.conf文件和Dockerfile文件在同一路径) COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf RUN echo "export LC_ALL=C" # 设置 ES 的环境变量,若读者有其他的环境变量需要设置,也可以在这里添加。 ENV ES_HOME /software/elasticsearch-1.7.2 # 复制 elasticsearch-1.7.2 文件到镜像中(elasticsearch-1.7.2文件夹要和Dockerfile文件在同一路径) ADD elasticsearch-1.7.2 /software/elasticsearch-1.7.2 # 挂载/software/elasticsearch-1.7.2/config和/escluster目录 VOLUME ["/software/elasticsearch-1.7.2/config"] VOLUME ["/escluster"] # 容器需要开放ES的9200和9300端口 EXPOSE 9200 EXPOSE 9300 # 执行supervisord来同时执行多个命令,使用 supervisord 的可执行路径启动服务。 CMD ["/usr/bin/supervisord"]
Dockerfile源文件链接:
https://github.com/birdben/birdDocker/blob/master/escluster/Dockerfile
supervisor配置文件内容
# 配置文件包含目录和进程 # 第一段 supervsord 配置软件本身,使用 nodaemon 参数来运行。 # 第二段包含要控制的 2 个服务。每一段包含一个服务的目录和启动这个服务的命令。 [supervisord] nodaemon=true [program:sshd] command=/usr/sbin/sshd -D # 修改supervisor配置方式如下,修改为不自动重启ES,并且改成非daemon,DFOREGROUND的方式运行,supervisor就可以监控到了 [program:elasticsearch] command=/bin/bash -c "exec ${ES_HOME}/bin/elasticsearch -DFOREGROUND"
控制台终端
# 构建镜像 $ docker build -t="birdben/escluster:v1" . # 执行已经构件好的镜像,这里启动了两个ES的镜像,只是ES的端口号不同,挂载在宿主机器的存储路径也不同 $ docker run -p 9999:22 -p 9200:9200 -p 9300:9300 -v /docker/escluster01:/escluster -v /docker/escluster01/config:/software/elasticsearch-1.7.2/config -t -i 'birdben/escluster:v1' $ docker run -p 9998:22 -p 9201:9200 -p 9301:9300 -v /docker/escluster02:/escluster -v /docker/escluster02/config:/software/elasticsearch-1.7.2/config -t -i 'birdben/escluster:v1'
访问ElasticSearch集群的插件测试
# 访问9201和9201端口都能分别访问 http://10.211.55.4:9200/_plugin/head/ http://10.211.55.4:9201/_plugin/head/ # 在Node1上创建索引会自动同步到Node2上,而且对应的data和logs目录也存储在挂载的目录中
参考文章:
http://my.oschina.net/xiaohui249/blog/228748
/article/7792398.html
相关文章推荐
- 一台服务器上部署docker,开启多web时代
- Docker Registry HTTP API V2
- Docker网络详解及pipework源码解读与实践
- docker的启动和停止以及挂载目录的更换操作
- 怎样使用docker不加sudo
- 论docker中 CMD 与 ENTRYPOINT 的区别(转)
- Docker学习总结之跨主机进行link
- linux下给docker容器配置网络(桥接模式)
- 用Git子模块和Docker Compose实现高效开发工作流
- docker-composede 的使用
- Docker集群部署管理(一)初谈
- 通过systemd配置Docker
- docker ubuntu 14.04 安装docker
- 使用docker搭建部署hadoop分布式集群
- 使用docker搭建hadoop分布式集群
- Pipework在docker 上的使用
- Docker容器内外互相拷贝文件
- 动手制作自己的Docker镜像
- 拉开大变革序幕(中):Docker 场景化尝试
- Swarm创建docker集群:服务发现-配置文件法