ElasticSearch7.9与MongoDB集群使用mongo-connector进行通信。

1.问题

在上面已经搭建好了MongoDB的集群。
https://blog.csdn.net/EEEEEEcho/article/details/109196275
剩下的任务是使用ElasticSearch与MongoDB进行通信,也即实现实时同步。
因为我是搭建的集群,所以我不用和mongod数据库进程通信,而是要和路由route进程进行通信,所以,要搞明白问题所在。
通信所用的工具mongo-connector(一个年久失修的工具)

2.ElasticSearch环境的搭建

首先,去官网下载就行了,具体我就不多说了,根据自己操作系统进行下载,我的是linux的Centos系统。所以下载好对应的压缩包,传到服务器上。
我将压缩包解压到了/usr/local/es中。接下来就是对配置文件进行修改。
修改/usr/local/es/config/elasticsearch.yml.
在这里插入图片描述
在这里插入图片描述
接下来,到/usr/local/es/bin 中 启动es
记住:千万不能用root用户启动,千万不能用root用户启动,千万不能用root用户启动
虽然没有什么大影响,但是,你会报错。如果没有其他用户的话,你就自己创建一个用户(你都有root了),然后切换成你的非root用户启动。
这里,你可能会报以下错误。

错误一:max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
每个进程最大同时打开文件数太小,可通过下面2个命令查看当前数量

ulimit -Hn
ulimit -Sn

 

修改/etc/security/limits.conf文件,增加配置,用户退出后重新登录生效。

*               soft    nofile          65536
*               hard    nofile          65536

 

在这里插入图片描述
重新登录后,使用上面的ulimit命令查看以下,进行确认。

错误二:max number of threads [3818] for user [es] is too low, increase to at least [4096]
问题同上,最大线程个数太低。修改配置文件/etc/security/limits.conf(和问题1是一个文件),增加配置。

*               soft    nproc           4096
*               hard    nproc           4096

 

可通过命令查看

ulimit -Hu
ulimit -Su

 

在这里插入图片描述

错误三:max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
修改/etc/sysctl.conf文件,增加配置vm.max_map_count=262144
通过以下方式修改。

vi /etc/sysctl.conf
sysctl -p

 

在这里插入图片描述

错误四:Exception in thread “main” java.nio.file.AccessDeniedException: /usr/local/elasticsearch/elasticsearch-6.2.2-1/config/jvm.options
elasticsearch用户没有该文件夹的权限,执行命令

chown -R hhh /usr/local/elasticsearch/

 

反正我是莫名其妙都遇到了。
接下来,正常启动就行了.
在这里插入图片描述

3.安装mongo-connector

这个东西是跟ES版本有关的!这个东西是跟ES版本有关的!这个东西是跟ES版本有关的!所以,因为我这个版本是ES7.9,所以我需要下载mongo-connector[elastic5]。这个是有个版本对应表的,如下。
在这里插入图片描述
注意啊。注意啊。这个Elasticsearch 5.x 它并不单单指5.几的版本啊。。应该是5.x+ 。意思就是5.x版本以上的。
安装方式:pip install ‘mongo-connector[elastic5]’
这时候,你会发现你没有pip.所以你去网上找到了如何安装pip,你也装上了,然后你执行这条命令。他就报错了。
在这里插入图片描述
没错,说直白点,你装的pip是和你Centos中自带的python2.7是一家子的。但是这个mongo-connector[elastic5]是用python3的。。。

这里插播一个错误,如果你直接执行了,pip install mongo-connector,即用的python2的mongoconnector那么你在连接的时候
mongo-connector -m 192.168.98.42:10050 -t 192.168.98.42:9200 -d elastic2_doc_manager
它是可以运行的,但是,你就是没有办法进行同步,集群中存了东西,你会读不到,而且你去查看mongo-connector的日志,你会发现 TransportError(406, u’Content-Type header is not supported’) 这个错误。这就是因为旧版本的mongo-connector与新版es不兼容的问题。 所以就是用这个mongo-connector[elastic5]

然后你就去网上找如何安装python3.我还是在这里说了怎么装吧,我也是参考的博客,写的很好,对本机的python无影响。
安装python依赖

yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel

 

下载安装包
这时候你可能发现没有wget,那就先安装wget

yum -y install wget

 

这里下载的python3.6。
在这里插入图片描述
解压

tar -zxvf Python-3.6.5.tgz

 

进入文件夹

cd Python-3.6.5

 

创建安装目录

mkdir /usr/local/python3

 

指明安装路径

./configure -prefix=/usr/local/python3

 

这时候你可能又会发现没有编译器!

yum -y install gcc

 

编译安装

sudo make && make install

 

出现如图,即可成功
在这里插入图片描述
建立链接

ln -s /usr/local/python3/bin/python3 /usr/bin/python3 #为python3创建软连接
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3  #为pip3创建软连接

 

验证

python3  # 输入
pip3 -V  #V大写

 

在这里插入图片描述
接下来就使用pip3 来安装mongo-connector[elastic5]。直接pip3 install mongo-connector[elastic5]。
安装完成后,还是不能直接用mongo-connector -m 10.8.5.99:27017 -t 10.8.5.101:9200 -d elastic2_doc_manager 这条命令来进行连接。
需要安装elastic2_doc_manager,这个东西可以直接用pip(不是pip3)来安装,我记得我是直接pip的,应该没错。

pip install elastic2_doc_manager

 

4.执行连接

做完上述工作后,还是不能直接连接。如果是未初始化的mongodb单机或者集群。建议参照另一个大佬的博客,初始化之后,再安装,安装可以参考我的。
https://blog.csdn.net/laoyang360/article/details/51842822
但是我的集群是初始化好的,所以我不用初始化了。但是我也不能直接执行命令。
因为mongo-connector并不是在环境变量中,即并没有用原生的pip安装,只能找到其路径,我直接上命令吧。

python3 /usr/local/python3/lib/python3.6/site-packages/mongo_connector/connector.py -m 192.168.98.42:10050 -t 192.168.98.42:9200 -d elastic2_doc_manager

 

我用pip3下载的connector在那个一大长串的路径中,而且需要python3进行执行。只有这样才能成功启动。这样启动不是后台执行的,如果后台执行的话。命令要这样。

nohup python3 /usr/local/python3/lib/python3.6/site-packages/mongo_connector/connector.py -m 192.168.98.42:10050 -t 192.168.98.42:9200 -d elastic2_doc_manager&

 

好了,结束了。

5.进行测试。

进入一个mongod
mongo --port 10011
在这里插入图片描述
然后退出 查看es中的同步情况。
在这里插入图片描述
同步成功!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值