1.elasticsearch 安装
下载elasticsearch
修改集群名称、节点名称等 elasticsearch.yml
cluster.name: erickingdee
node.name: node-1
node.master: true
node.data: true
discovery.zen.ping.unicast.hosts: ["front01", "front02"] //设置集群中master节点的初始列表,可以通过这些节点来自动发现新加入集群的节点
discovery.zen.minimum_master_nodes: 1 //设置这个参数来保证集群中的节点可以知道其它N个有master资格的节点。默认为1,对于大的集群来说,可以设置大一点的值(2-4)
启动
2.kibana安装(版本要与elasticsearch对应)
下载kibana :https://www.elastic.co/downloads/kibana
解压
启动
3.x-pack 安装
在elasticsearch下安装x-pack
bin/elasticsearch-plugin install x-pack
在kibana下安装x-pack
bin/kibana-plugin install x-pack
elasticsearch 默认登录用户名/密码:elastic/changeme
4.分词器插件安装(ik)
5.mongodb安装
下载地址:https://www.mongodb.com/download-center#community
下载完安装包,并解压 tgz
tar -zxvf mongodb-linux-x86_64-3.0.6.tgz
mv mongodb-linux-x86_64-3.0.6/ /usr/local/mongodb
export PATH=
创建数据库目录 mkdir -p /data/db
注意:/data/db 是 MongoDB 默认的启动的数据库路径(可通过--dbpath 参数配置),目录需手动创建
启动数据库即可
配置副本集
--server1 config_file_name:rs0_1.conf
dbpath=C:\data\db\db_rs0 --数据存储路径
logpath=C:\data\db\db_rs0\rs0_1.log --日志路径
port=27017 --数据库端口
replSet=rs0 --副本集名称,同一个副本集名称需一致
--server2 config_file_name:rs0_2.conf
dbpath=C:\data\db\db_rs0
logpath=C:\data\db\db_rs0\rs0_2.log
port=27018
replSet=rs0
使用配置文件启动mongo:
mongod -f C:\data\rs0_1.conf
在不同的Server上运行不同的MongoDB Instance,但是,每个mongod 都不知道其他mongod的存在,为了让每个mongod能够感知彼此的存在,需要配置Replica set,增加成员
1,使用配置文档为Replica Set 增加成员
在srv1的mongo shell中,创建配置文档,调用rs.initiate()函数,按照配置文档来初始化Replica Set
2,修改Replica Set
向Replica Set中增加一个成员 : rs.add("host:port")
从Replica Set中删除一个成员 : rs.remove("host")
查看Replica Set的配置 : rs.conf()
查看Replica Set的状态 : rs.status()
6.同步工具安装
mongo-connector
基于python开发的实时同步服务工具,mongo运行在replica-set模式,且需要 elastic2_doc_manager将数据写入ES
linux 系统
安装mongo-connector
pip install mongo-connector
安装elastic2-doc-manager
pip install elastic2-doc-manager
运行mongo-connector
mongo-connector -m username:passwd@localhost:27017 -t username:passwd@localhost:9200 -d elastic2_doc_manager -n testDB.testCol
(如何修改成配置文件方式启动服务???)
配置文件方式:
参考 https://github.com/yougov/mongo-connector/blob/master/mongo_connector/service/config.json
执行 nohup mongo-connector -c cloudflow.json >>mongo-connector.log 2>&1 &
参数说明:
-m : --数据源地址,mongodb数据库地址
-t : --数据目的地地址,elasticsearch/solr/mongodb集群地址。建议为集群中的协调节点的地址
-d : --数据目的地的document类型。例如:
将mongodb中的数据同步到elasticsearch,使用elastic_doc_manager或elastic2_doc_manager。
将mongodb中的数据同步到solr,使用solr_doc_manager。
将mongodb中数据同步到其他mongodb,使用mongo_doc_manager。
-n : --待同步的数据库及其collection。默认同步所有数据库
-i filed_name ... —— 待同步的字段。默认同步所有字段
-o mongodb_oplog_position.oplog —— mongo-connector的oplog。默认在mongo-connector命令执行目录下创建oplog.timestamp文件
--auto-commit-interval —— 数据同步间隔。默认在不同系统上有不同的值。设置为0表示mongodb中的任何操作立即同步到数据目的地
--continue-on-error —— 一条数据同步失败,日志记录该失败操作,继续后续同步操作。默认为中止后续同步操作。
其他参数包括设置日志输出行为(时间、间隔、路径等)、设置mongodb登录账户和密码、设置(数据目的地)Http连接的证书等、设置mongo-connector的配置文件
---------------------
遇到的坑:(运行mongo-connector报错,确认已安装了mongo-connector与elastic2_doc_manager)
Traceback (most recent call last):
File "/Users/shane/git/mongo-connector/venv-python2.6/bin/mongo-connector", line 11, in
sys.exit(main())
File "/Users/shane/git/mongo-connector/venv-python2.6/lib/python2.6/site-packages/mongo_connector/util.py", line 104, in wrapped
func(*args, **kwargs)
File "/Users/shane/git/mongo-connector/venv-python2.6/lib/python2.6/site-packages/mongo_connector/connector.py", line 1249, in main
conf.parse_args()
File "/Users/shane/git/mongo-connector/venv-python2.6/lib/python2.6/site-packages/mongo_connector/config.py", line 120, in parse_args
option, dict((k, values.get(k)) for k in option.cli_names))
File "/Users/shane/git/mongo-connector/venv-python2.6/lib/python2.6/site-packages/mongo_connector/connector.py", line 986, in apply_doc_managers
DocManager = import_dm_by_name(dm['docManager'])
File "/Users/shane/git/mongo-connector/venv-python2.6/lib/python2.6/site-packages/mongo_connector/connector.py", line 958, in import_dm_by_name
return import_dm_by_path(full_name)
File "/Users/shane/git/mongo-connector/venv-python2.6/lib/python2.6/site-packages/mongo_connector/connector.py", line 975, in import_dm_by_path
"vailable doc managers. ImportError:\n%s" % (package, exc))
mongo_connector.errors.InvalidConfiguration: Could not import mongo_connector.doc_managers.elastic2_doc_manager. It could be that this doc manager has been moved out of this project and is maintained elsewhere. Make sure that you have the doc manager installed alongside mongo-connector. Check the README for a list of available doc managers. ImportError:
Error: elasticsearch (https://pypi.python.org/pypi/elasticsearch) version 2.x or 5.x is not installed.
Install with:
pip install elastic-doc-manager[elastic2]
or:
pip install elastic-doc-manager[elastic5]
原因: 未安装elasticsearch-py
参考:
https://github.com/yougov/mongo-connector/issues/644
https://github.com/yougov/mongo-connector/pull/669
解决方案:安装elasticsearch-py(参考https://www.elastic.co/guide/en/elasticsearch/client/python-api/current/index.html)
pip install elasticsearch2
安装完能正常同步数据