【Docker】:docker安装elasticsearch和logstash并且实现mysql和es的数据同步功能(logstash:5.6.15,elasticsearch5.6.15,head)

**

【Docker】:docker安装elasticsearch和logstash并且实现mysql和es的数据同步功能(logstash:5.6.15,elasticsearch5.6.15,head)

**

采用挂载的方式启动es以及logstash 可以不污染主机,并且方便修改的优势而很受大家欢迎,避免了安装es之后还需要更改配置文件,加上跨域访问等等 可以跨过许多坑少走弯路,希望对大家有所帮助 下面的配置文件和驱动下载地址在最下面

首先你的有docker的环境这是必须的就先不说了
1.首先下载es head 以及 logstash 镜像
docker pull yeguangying/els
docker pull yeguangying/head
docker pull yeguangying/logstash
2.首先挂载启动 es,这里默认是集群的配置
network.host: 47.42.57.74
cluster.name: elasticsearch-cluster
node.name: es-node1
network.bind_host: 0.0.0.0
network.publish_host: 47.42.57.74
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: [“47.42.57.74:9300”,“47.42.57.74:9301”]
discovery.zen.minimum_master_nodes: 1

network.host:47.42.57.74
cluster.name: elasticsearch-cluster
node.name: es-node1
network.bind_host: 0.0.0.0
network.publish_host: 47.42.57.74
http.port: 9201
transport.tcp.port: 9301
http.cors.enabled: true
http.cors.allow-origin: "*"
node.master: true 
node.data: true  
discovery.zen.ping.unicast.hosts: ["47.42.57.74:9300","47.42.57.74:9301"]
discovery.zen.minimum_master_nodes: 1

由此可见 ,cluster.name 需要一样, node.name 不能一样 node.master 一个需要master为true 其他的都是false
discovery.zen.ping.unicast.hosts要写上去全部的ip地址

最为关键的来了,discovery.zen.minimum_master_nodes 的数值是集群即机器数量减1

然后挂载配置文件分别启动就可以啦

docker run -d -e"ES_JAVA_OPTS=-Xms512m -Xmx512m"  -v d:/elasticsearch22/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml --name es1 -p 9200:9200 -p 9300:9300 yeguangying/es

注意 最好加上 内存设置512不然会因为内存过大而导致启动一个,顶掉上一个尴尬事件

分别启动集群上个各个机器就可以了 如果是同一台机器 模拟集群的话, name不能一样哦 把ip端口也要变哦

docker run -d -e"ES_JAVA_OPTS=-Xms512m -Xmx512m"  -v d:/elasticsearch22/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml --name es2 -p 9201:9201 -p 9301:9301 yeguangying/es

到此刻 es的集群应该是启动成功了

下一步启动head

docker run -d --name head -p 9100:9100 yeguangying/head

启动成功就可以啦

最后一步 启动logstash

首先建一个 config的文件夹 这文件夹名字随意哈
在这里插入图片描述

以上logstash.yml 内容如下

	input {
  jdbc {
    jdbc_driver_library => "/usr/share/logstash/config/mysql-connector-java-5.1.46-bin.jar"
    jdbc_driver_class => "com.mysql.jdbc.Driver"
    jdbc_connection_string => "jdbc:mysql://47.42.34.74:3306/db_farm"
    jdbc_user => "root"
    jdbc_password => "f4ltMe0utHB"
    schedule => "* * * * *"
    statement => "SELECT * FROM t_answer"
    type => "genus"
  }
  
}
output {
   if [type] == "genus"{
        elasticsearch {
            hosts => "http://47.42.34.74:9200"
            index => "answer"
            document_id => "%{id}"
            document_type => "answer" 
      }
    }  
}

当然啦如果你是多表同步的话, 那就根据type 来就可以啦
type=“genus” 这个可以自定义,就不会出问题啦

这时候挂载启动 logstash 就可以啦

docker run -d  -v d:/docker/config:/usr/share/logstash/config --name logstash  yeguangying/logstash

这时候可以看一下日志数据库
在这里插入图片描述
数据同步成功啦
不管用户数据是修改还是新增都能实时变化哦 删除是不行的哦

快要结束了我来讲一个我遇到的最大的坑,卡了我3天才解决的大坑
我一开始在windows本地安装的docker 你们也能看到我挂载的都是D盘
一开始都很正常,启动logstash也不报错,但就是不同步数据
最后我放在liunx服务器上发现就好了,就好了,就好了
原来在windows下挂载logstash的同属mysql 数据无效啊,到现在也不知道为啥,不知道有哪位大神知道和我说一下

具体配置文件以及驱动下载地址点击我

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值