docker + elasticsearch叢集搭建 + logstash mysql資料庫同步
阿新 • • 發佈:2021-07-09
搭建叢集
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 docker run -p 9800:9800 -d --link elasticsearch:demo 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 配置檔案路徑