1、配置信息
1.1、机器信息
192.168.137.164 sdb1
192.168.137.128 sdb2
192.168.137.131 sdb3
1.2、Sequoiadb信息
V3.0版本
1.3、elasticsearch信息
V6.2.2版本
2、安装elasticsearch
#解压配置即可
tar -zxvf elasticsearch-6.2.2.tar -c/opt/elasticsearch/elasticsearch-node1
3、修改配置文件
打开/opt/elasticsearch/elasticsearch-node1/config目录下的elasticsearch.yml 文件 ,修改以下属性值并取消该行的注释:
cluster.name: elasticsearch
#这是集群名字,我们 起名为elasticsearch
#es启动后会将具有相同集群名字的节点放到一个集群下。
node.name: "es-node1"
#节点名字。
discovery.zen.minimum_master_nodes:3
#指定集群中的节点中有几个有master资格的节点。
#对于大集群可以写3个以上。
discovery.zen.ping.timeout: 40s
#默认是3s,这是设置集群中自动发现其它节点时ping连接超时时间,
#为避免因为网络差而导致启动报错,我设成了40s。
discovery.zen.ping.multicast.enabled:false
#设置是否打开多播发现节点,默认是true。
network.bind_host:192.168.137.164
#设置绑定的ip地址,这是我的master虚拟机的IP。
network.publish_host:192.168.137.164
#设置其它节点和该节点交互的ip地址。
network.host: 192.168.137.164
#同时设置bind_host和publish_host上面两个参数。
discovery.zen.ping.unicast.hosts:["192.168.137.164", "192.168.137.128","192.168.137.131"]
#discovery.zen.ping.unicast.hosts:["节点1的 ip","节点2的ip","节点3的ip"]
#指明集群中其它可能为master的节点ip,
#以防es启动后发现不了集群中的其他节点。
#第一对引号里是node1,默认端口是9300,
#第二个是 node2 ,在另外一台机器上,
#第三个引号里是node3,因为它和node1在一台机器上,所以指定了9301端口。
4、其他2台机器安装
将elasticsearch-node1 整个文件夹拷贝到其他机器中,sdb2中修改文件名为elasticsearch-node2,sdb3修改文件名为elasticsearch-node3。
对于sdb2: 对 elasticsearch.yml 修改如下
node.name: "es-node2"
network.bind_host: 192.168.137.128
network.publish_host: 192.168.137.128
network.host: 192.168.137.128
对于node3: 对 elasticsearch.yml 修改如下
node.name: "es-node3"
network.bind_host: 192.168.137.131
network.publish_host: 192.168.137.131
network.host: 192.168.137.131
5、遇到问题:
5.1、问题一
启动失败
[sdbadmin@sdb1 bin]$ ./elasticsearch
Exception in thread "main"2018-06-01 14:54:45,068 main ERROR No log4j2 configuration file found. Usingdefault configuration: logging only errors to the console. Set system property'log4j2.debug' to show Log4j2 internal initialization logging.
SettingsException[Failed to load settingsfrom [elasticsearch.yml]]; nested: ParsingException[Failed to parse object:expecting token of type [START_OBJECT] but found
分析原因:
./config/elasticsearch.yml中的配置信息格式有问题,冒号前不应该有空格,冒号后有一个空格。
解决办法:
修改./config/elasticsearch.yml中的配置
5.2、问题二
启动报错
ERROR: [2] bootstrap checks failed
[1]: max virtual memory areasvm.max_map_count [65530] is too low, increase to at least [262144]
[2]: system call filters failed toinstall; check the logs and fix your configuration or disable system callfilters at your own risk
分析原因:
这是在因为Centos6不支持SecComp,而ES5.2.0默认bootstrap.system_call_filter为true进行检测,所以导致检测失败,失败后直接导致ES不能启动。
解决办法:
在elasticsearch.yml中配置bootstrap.system_call_filter为false,注意要在Memory下面:
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
5.3、问题三
启动失败:
ERROR: [1] bootstrap checks failed
[1]: max virtual memory areasvm.max_map_count [65530] is too low, increase to at least [262144]
分析原因:
vm.max_map_count太小了 ,需要设置大一点。
解决办法:
临时设置:
sudo sysctl -w vm.max_map_count=262144
永久修改:
修改/etc/sysctl.conf 文件,添加 “vm.max_map_count”设置
并执行:sysctl -p
5.4、问题四
启动失败:
ERROR: [2] bootstrap checks failed
[1]: max file descriptors [4096] for elasticsearchprocess is too low, increase to at least [65536]
[2]: max number of threads [1024] foruser [sdbadmin] is too low, increase to at least [4096]
分析原因:
Ulimit -n 和 -u 的数量太小了。需要设置ulimit 的数量。
解决办法:
>vi /etc/security/limits.conf
#<domain> <type> <item> <value>
* soft core 0
* soft data unlimited
* soft fsize unlimited
* soft rss unlimited
* soft as unlimited
* soft nofile 65536
* hard nofile 65536
>vi/etc/security/limits.d/90-nproc.conf
* soft nproc unlimited
6、对接sdb
6.1、修改配置
在sdb1这台机器中创建seadapter对应的配置文件,且将sample中的配置文件拷贝过来
$ mkdir/opt/sequoiadb/conf/local/11820/seadapter
$ cp /opt/sequoiadb/conf/samples/sdbseadapter.conf /opt/sequoiadb/conf/local/11820/seadapter
修改sdbseadapter.conf配置
> visdbseadapter.conf
datanodehost=
datasvcname=
searchenginehost=
searchengineport=
diaglevel=3
optimeout=10000
bulkbuffsize=10
在sdb2和sdb3折两台机器中分别创建
6.2、启动
在sdb1这台机器中执行启动
#切换到执行目录中
>cd /opt/sequoiadb/bin/
#执行命令启动
>./sdbseadapter -c/opt/sequoiadb/conf/local/11820/seadapter --datanodehost sdb1 --datasvcname 11820--searchenginehost sdb1 --searchengineport 9200
分别在sdb2和sdb3机器中执行启动。
检查启动
ps -ef | grep sdbseadapter
sdbadmin 13623 12901 0 17:37 pts/0 00:00:01 sdbseadapter(11817) A
6.3、操作实例
#集合cs.cl中存在5条记录如下
>db.cs.cl.find({},{"name":1})
{
"name": "haha havi"
}
{
"name": "haha havi haha"
}
{
"name": "haha haha"
}
{
"name": "json"
}
{
"name": "maker json"
}
Return 5 row(s).
#创建全局索引,name字段类型为text
>db.cs.cl.createIndex("name_idex",{"name":"text"})
#执行查询
>db.cs.cl.find({"":{"$Text":{"query":{"match":{"name":"havi"}}}}}).hint({"":"name_index"})
{
"_id": {
"$oid": "5b1119db8c0ea5a8e7528530"
},
"name": "haha havi"
}
{
"_id": {
"$oid": "5b1119df8c0ea5a8e7528531"
},
"name": "haha havi haha"
}
Return 2 row(s).
Takes 0.030438s.