環境
- windows7,64位(win10也可以),其他未做測試
- mongo4.2
- elasticsearch7.6.1
- ik分詞器(7.6.1)
- monstache
mong遠程服務器開啟replica set及配置
MongoDB 開啟復制集
MongoDB復制是將數據同步在多個服務器的過程。
復制提供了數據的冗余備份,並在多個服務器上存儲數據副本,提高了數據的可用性, 並可以保證數據的安全性。
復制還允許您從硬件故障和服務中斷中恢復數據。
關閉正在運行的MongoDB服務器,開啟復制集。
- 通過指定 –replSet 選項來啟動mongoDB。–replSet 基本語法格式如下:
./mongod --port "PORT" --dbpath "YOUR_DB_DATA_PATH" --replSet "REPLICA_SET_INSTANCE_NAME"
- 實例
- 在‘data\’下創建rs0和log文件夾(用於存放repilica set的數據)
./mongod --port 27018 --dbpath "/data/rs0" --replSet rs0
# 或者
# mongo.config內容
port=27018
bind_ip=0.0.0.0 # 這個一定要寫,不然內網無法訪問
dbpath=D:\data\rs0
logpath=D:\data\log\mongodb.log
logappend=true
repliSet=rs0
mongod -f mongo.config
- 注意:這里需要在/目錄下創建好/data/rs0這個文件。
- 以上實例會啟動一個名為rs0的MongoDB實例,其端口號為27018。
將mongo客戶端與副本集成員連接。
-
進入mongodb/bin下
-
啟動Mongo客戶端並連接上mongoDB服務
./mongo
初始化副本集
- 在Mongo客戶端輸入rs.initiate(),初始化副本集。
rs.initiate()
{
"info2" : "no configuration specified. Using a default configuration for the set",
"me" : "b48eafd69929:27017",
"ok" : 1
}
- 可以使用rs.conf()來查看副本集的配置。
rs0:SECONDARY> rs.conf()
{
"_id" : "rs0",
"version" : 1,
"protocolVersion" : NumberLong(1),
"members" : [
{
"_id" : 0,
"host" : "test:27017",
"arbiterOnly" : false,
"buildIndexes" : true,
"hidden" : false,
"priority" : 1,
"tags" : {
},
"slaveDelay" : NumberLong(0),
"votes" : 1
}
],
"settings" : {
"chainingAllowed" : true,
"heartbeatIntervalMillis" : 2000,
"heartbeatTimeoutSecs" : 10,
"electionTimeoutMillis" : 10000,
"getLastErrorModes" : {
},
"getLastErrorDefaults" : {
"w" : 1,
"wtimeout" : 0
},
"replicaSetId" : ObjectId("577b74bd0ba41a313110ad62")
}
}
- 看副本集狀態使用 rs.status() 命令。
rs0:PRIMARY> rs.status()
{
"set" : "rs0",
"date" : ISODate("2016-07-05T08:50:55.272Z"),
"myState" : 1,
"term" : NumberLong(1),
"heartbeatIntervalMillis" : NumberLong(2000),
"members" : [
{
"_id" : 0,
"name" : "test:27017",
"health" : 1,
"state" : 1,
"stateStr" : "PRIMARY",
"uptime" : 115,
"optime" : {
"ts" : Timestamp(1467708606, 1),
"t" : NumberLong(1)
},
"optimeDate" : ISODate("2016-07-05T08:50:06Z"),
"infoMessage" : "could not find member to sync from",
"electionTime" : Timestamp(1467708605, 2),
"electionDate" : ISODate("2016-07-05T08:50:05Z"),
"configVersion" : 1,
"self" : true
}
],
"ok" : 1
}
- 至此repilica set 開啟成功
- 開啟mongo repilica set參考文檔
https://docs.mongodb.com/manual/tutorial/deploy-replica-set/#procedure
http://www.htsjk.com/Elasticsearch/35093.html
ES遠程服務器安裝部署及配置
安裝
- 下載解壓即可
https://www.elastic.co/cn/downloads/elasticsearch - 分詞器
https://github.com/medcl/elasticsearch-analysis-ik/tree/v7.6.1
指定elasticsearch7.6.1使用自帶的jdk13
- 切到目錄C:\elasticsearch-7.6.1-windows-x86_64\elasticsearch-7.6.1\bin
- 修改 elasticsearch-env.bat
- 找到這個地方改成這樣即可
if defined JAVA_HOME (
set JAVA="%ES_HOME%\jdk\bin\java.exe"
set JAVA_HOME="%ES_HOME%\jdk"
set JAVA_TYPE=bundled jdk
) else (
set JAVA="%ES_HOME%\jdk\bin\java.exe"
set JAVA_HOME="%ES_HOME%\jdk"
set JAVA_TYPE=bundled jdk
)
- 切到目錄C:\elasticsearch-7.6.1-windows-x86_64\elasticsearch-7.6.1\config
- 修改jvm.options像這樣
## GC configuration
8-13:-XX:+UseG1GC
8-13:-XX:CMSInitiatingOccupancyFraction=75
8-13:-XX:+UseCMSInitiatingOccupancyOnly
配置elasticsearch.yml
network.host: 192.168.1.171
network.publish_host: 192.168.1.171
http.port: 9201
transport.tcp.port: 9301
-
接着讓運維的同學把端口映射到外網訪問的地址即可
-好了,es也配置好了 -
指定es7內置jdk設置參考
https://blog.csdn.net/u011783999/article/details/100766759 -
ELK搭建過程中出現的問題與解決方法匯總
monstache遠程服務器的安裝及配置
安裝
- 下載解壓即可
https://github.com/rwynn/monstache/releases/tag/v6.5.2
(注意不需要安裝go環境即可運行,一定要下載es和mongo都對應的版本)
配置文件的編寫
- 按照這樣配置即可
mongo-url = "mongodb://127.0.0.1:27018"
elasticsearch-urls = ["http://111.231.92.176:29043"]
elasticsearch-max-conns = 10
namespace-regex = '^app\.app_kankanxinwen*' #aaa表示mongodb的數據庫,bbb表示集合,表示要匹配的名字空間
# direct-read-namespaces = [“common.parent_info”,”common.child_info”]
dropped-collections = true
# propogate dropped databases in MongoDB as index deletes in Elasticsearch
dropped-databases = true
resume = true #從上次同步的時間開始同步
# cluster-name = 'tzg' #es集群名
# 更新es而不是覆蓋
index-as-update = true
verbose = true
- 啟動monstache
monstache -f config.toml
-
注意monstache服務要放在mongo服務器上開啟,放其他位置,無法連接遠程mongo數據庫(應該有這個功能,可能哪里需要配置,我這里沒有實現)
-
配置文件參考
https://medium.com/@nehajirafe/mongodb-to-elasticsearch-sync-using-monstache-cfe1177594b6
填坑指南
- 服務器端執行toml文件報錯
(last key parsed '')bear keys cannot contain '\ufeff'
這是由於某些系統默認文本編碼為BOM,改為utf-8即可
- mongo無法遠程連接
檢查內網是否調通
一般設置為0.0.0.0即可 - monstache無法連接遠程mongo數據庫,只能連接本地的
把monstache服務放在mongo本地服務器運行
