vtnews 2020-02-14
拉取镜像
docker pull elasticsearch:7.5.1
创建网络
如果需要安装kibana等其他,需要创建一个网络,名字任意取,让他们在同一个网络,使得es和kibana通信
docker network create esnet(这个名字可以自定义,但是注意启动kibana是名字保持一致)
创建数据卷
此处为了docker容器删除或者其他异常情况,将ES的重要数据挂载到宿主机
# 查看当前数据局列表 docker volume ls # 创建数据卷 docker volume create es-1(名字自拟) # 查看数据卷信息 docker volume inspect es-1
对应的ES节点挂载到对应的数据卷
将数据卷在宿主机的文件授权
通过上面查看数据卷信息命令可以看到数据卷具体在宿主的位置 一般在/var/lib/docker/volumes下 授权命令:chmod 777 文件夹
这个操作主要是后面启动ES时需要进行写入操作
启动ES容器
本次搭建一个伪集群
# 启动第一个 docker run --name es-1 -d -p 9200:9200 -p 9300:9300 --network esnet --mount type=bind,src=/var/lib/docker/volumes/es-1/_data,dst=/usr/share/elasticsearch/data 2bd69c322e98 # 启动第二个 docker run --name es-2 -d -p 9201:9201 -p 9301:9301 --network esnet --mount type=bind,src=/var/lib/docker/volumes/es-2/_data,dst=/usr/share/elasticsearch/data 2bd69c322e98 #启动第三个 docker run --name es-3 -d -p 9202:9202 -p 9302:9302 --network esnet --mount type=bind,src=/var/lib/docker/volumes/es-3/_data,dst=/usr/share/elasticsearch/data 2bd69c322e98
在此处启动时一般会出现如下错误:
ERROR: [2] bootstrap checks failed [1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144] [2]: the default discovery settings are unsuitable for production use; at least one of [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] must be configured
第一个问题可以通过如下命令解决
sysctl -w vm.max_map_count=262144
第二个问题则需要通过配置ES的配置文件,当然也可以通过参数输入的方式(-e "")
但亲测时这样创建的集群clusteruuid将会是"_na",这样节点接不能互通
ES的配置文件路径:/usr/share/elasticsearch/config
#集群名称 cluster.name: my #节点名称 node.name: node-1 #是不是有资格主节点 node.master: true #是否存储数据 node.data: true #最?集群节点数 node.max_local_storage_nodes: 3 #?关地址 network.host: 0.0.0.0 # 设置其它结点和该结点交互的ip地址,如果不设置它会自动判断,值必须是个真实的ip地址 # 如果是docker安装节点的IP将会是配置的IP而不是docker网管ip network.publish_host: 192.168.172.128 #端? http.port: 9200 #内部节点之间沟通端? transport.tcp.port: 9300 #es7.x 之后新增的配置,写?候选主节点的设备地址,在开启服务后可以被选为主节点 discovery.seed_hosts: ["192.168.172.128:9300","192.168.172.128:9301","192.168.172.128:9302"] #es7.x 之后新增的配置,初始化?个新的集群时需要此配置来选举master cluster.initial_master_nodes: ["node-1", "node-2","node-3"] #数据和存储路径 path.data: /usr/share/elasticsearch/data path.logs: /usr/share/elasticsearch/logs # 解决跨域问题 http.cors.enabled: true http.cors.allow-origin: "*"
检验是否安装成功
http://192.168.172.128:9200/_cat/nodes 192.168.172.128 29 46 4 0.01 0.12 0.34 dilm - node-3 192.168.172.128 20 46 3 0.01 0.12 0.34 dilm - node-1 192.168.172.128 21 46 3 0.01 0.12 0.34 dilm * node-2 带*的节点就是master
拉取镜像
docker pull kibana:7.5.1(注意版本)
由于前面已经创建过网络,启动kibana
docker run -d --name kibana --net esnet -p 5601:5601 2d043e33afa4
安装好kibana后直接通过下列方式访问会抛出错误
curl http://localhost:5601
错误如下
Kibana server is not ready yet
修改kibana配置文件kibana.yml
配置文件路径:/usr/share/kibana/config
# # ** THIS IS AN AUTO-GENERATED FILE ** # # Default Kibana configuration for docker target server.name: kibana server.host: "0" elasticsearch.hosts: [ "http://192.168.172.128:9200","http://192.168.172.128:9201","http://192.168.172.128:9202" ] xpack.monitoring.ui.container.elasticsearch.enabled: true
http://192.168.172.128:5601/
进行查看
选择红框选项,因为上面的选项需要配置一些私密钥之类的
集体的docker容器操作可以查看本人的另一篇博文:<https://blog.51cto.com/9844951/2469349>
另外一部分,则需要先做聚类、分类处理,将聚合出的分类结果存入ES集群的聚类索引中。数据处理层的聚合结果存入ES中的指定索引,同时将每个聚合主题相关的数据存入每个document下面的某个field下。