1. 程式人生 > 其它 >docker + elasticsearch叢集搭建 + logstash mysql資料庫同步

docker + elasticsearch叢集搭建 + logstash mysql資料庫同步

搭建叢集

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 配置檔案路徑