搭建集群
docker 拉取镜像
docker pull elasticsearch:2.3.4
创建数据文件夹和配置用于映射
[root@localhost soft]# pwd /home/soft [root@localhost soft]# mkdir -p ES/config [root@localhost soft]# cd ES [root@localhost ES]# mkdir data [root@localhost ES]# cd ES/config/ [root@localhost ES]# firewall-cmd --add-port=9300/tcp success
创建配置文件
cluster.name: elasticsearch-cluster # 节点名称 node.name: es-node-1 network.bind_host: 0.0.0.0 # 节点IP network.publish_host: 192.168.0.54 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: ["192.168.9.219:9300","192.168.9.219:9301","192.168.9.219:9302"] discovery.zen.minimum_master_nodes: 2 # 指定主节点的名称 cluster.initial_master_nodes: es-node-1
其他节点的配置文件跟这个差不多,改一下iP、节点名就可以
为了防止 bootstrap checks failed max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144] 错误需要改一个配置
vim /etc/sysctl.conf # 加入 vm.max_map_count=262144 # 启动配置 sysctl -p
启动容器
docker run -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -d -p 9200:9200 -p 9300:9300 -v /home/soft/ES/config/es.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /home/soft/ES/data:/usr/share/elasticsearch/data --restart=always --name ES elasticsearch:2.3.4
在浏览器地址栏访问http://192.168.0.54:9200/_cat/nodes?pretty 查看节点状态
搭建可视化界面
docker pull containerize/elastichd # 如果本地搭建的es数据库可以使用--link 默认连接到本地数据库 docker run -p 9800:9800 -d --link elasticsearch:demo containerize/elastichd # 如果本地没有搭建es数据库,写--link会报错。使用下面命令启动 docker run -p 9800:9800 -d containerize/elastichd http://localhost:9800
搭建mysql同步
logstash 依赖于jdk1.8以上
安装jdk
下载路径
链接: https://pan.baidu.com/s/1JmauqpR5-uDBIKcSLjmDhw 密码: ojqw
--来自百度网盘超级会员V6的分享
解压
# 将下载的tar.gz 解压到当前路径下 tar -zxvf jdk-8u201-linux-x64.tar.gz ‘‘‘ 命令介绍: tar 备份文件 -zxvf -z 通过gzip指令处理备份文件 -x 从备份文件中还原文件 -v 显示指令执行过程 -f 指定备份文件 jdk-8u201-linux-x64.tar.gz 文件名
配置环境变量
#vim 打开profile vim /etc/profile #在最后一行输入 export JAVA_HOME=/usr/local/java/jdk1.8.0_231 export CLASSPATH=.:${JAVA_HOME}/jre/lib/rt.jar:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar export PATH=$PATH:${JAVA_HOME}/bin #使配置生效 source /etc/profile #检查 java -version java version "1.8.0_231" Java(TM) SE Runtime Environment (build 1.8.0_231-b11) Java HotSpot(TM) 64-Bit Server VM (build 25.231-b11, mixed mode)
同步mysql依赖于mysql驱动
链接: https://pan.baidu.com/s/1B01jJFdFP7JlAaoreWSrUg 密码: vn7d --来自百度网盘超级会员V6的分享 # 下载好之后解压出来,记住路径配置到下面的配置文件中
下载一个跟es数据库版本相匹配的logstash
官网:https://www.elastic.co/cn/downloads/past-releases/logstash-2-3-4 # 后面三位数字就是版本号,我用的是2.3.4版本的es数据库,所以后面的数字就是2-3-4,根据自己的版本更改就行
配置文件
input { jdbc { # 设置 MySql/MariaDB 数据库url以及数据库名称 jdbc_connection_string => "jdbc:mysql://127.0.0.1:3306/database" # 用户名和密码 jdbc_user => "数据库账号" jdbc_password => "数据库密码" # 数据库驱动所在位置,可以是绝对路径或者相对路径 jdbc_driver_library => "/root/mysql-connector-java-5.1.46/mysql-connector-java-5.1.46-bin.jar" # 驱动类名 jdbc_driver_class => "com.mysql.jdbc.Driver" # 开启分页 jdbc_paging_enabled => "true" # 分页每页数量,可以自定义 jdbc_page_size => "10000" # 执行的sql文件路径 #statement_filepath => "xxx.log" # 执行的sql语句 statement => "select * from table" # 设置定时任务间隔 含义:分、时、天、月、年,全部为*默认含义为每分钟跑一次任务 schedule => "* * * * *" # 是否开启记录上次追踪的结果,也就是上次更新的时间,这个会记录到 last_run_metadata_path 的文件 # use_column_value => true # 记录上一次追踪的结果值 last_run_metadata_path => "/usr/local/logstash-6.4.3/sync/track_time" # 是否清除 last_run_metadata_path 的记录,true则每次都从头开始查询所有的数据库记录 clean_run => false # 数据库字段名称大写转小写 lowercase_column_names => false } } output { elasticsearch { # es地址 hosts => ["192.168.0.54:9200","192.168.0.55:9200","192.168.0.56:9200"] # 同步的索引名,这里只需要指定索引名称,会自动创建对应数据库表格式的内容 index => "索引名称" # 设置_docID和数据相同 document_id => "%{id}" } # 日志输出 stdout { codec => json_lines } }
启动命令
/root/logstash-2.3.4/bin/logstash -f 配置文件路径