地址:192.168.143.11,192.168.143.22,192.168.143.33
教程:VMwave安装多个Linux(centos)虚拟机
教程:Linux下安装jdk8步骤
教程:Linux下安装maven
wget http://mirrors.shu.edu.cn/apache/maven/maven-3/3.6.0/binaries/apache-maven-3.6.0-bin.tar.gz
本文使用的v1.7.5版本
wget https://codeload.github.com/elastic/elasticsearch/tar.gz/v1.7.5
# 我是放在/fxx/目录下
var -zxvf v1.7.5
# 进入解压的目录执行
mvn clean package -DskipTests # 耗时十分钟左右,三太虚拟机同时执行
# 构建完成后会在目录下生成target/releases目录
# 进入目录
cd target/releases/
# 可以看到有一个编译好的压缩包(类似于elasticsearch-1.7.5.zip这样的文件)
# 解压该压缩包到/fxx/目录
unzip elasticsearch-1.7.5.zip -d /fxx/ # 到这一步就安装好了
cd /fxx/elasticsearch1.7.5/
./bin/elasticsearch -d # 后台启动完成
测试时,我在阿里云服务器上使用 curl -X GET http://localhost:9200 能正常响应
但是在虚拟机上测试的时候,一直报“curl: (7) Failed connect to localhost:9200; 拒绝连接”错误
开始一直以为是端口没有开导致拒绝连接,可输入netstat -nltp 查看时端口时确是开启的
而输入 curl -X GET http://192.168.143.11:9200 也能正常响应
然后索性修改了hosts文件(vi /etc/hosts),加了一行 “192.168.143.11 localhost” 后, http://localhost:9200 能正常响应
netstat -nltp 查看时端口时,阿里云的是:
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:9200 0.0.0.0:* LISTEN 16611/java而虚拟机的是:
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp6 0 0 192.168.143.11:9200 :::* LISTEN 6956/java看Proto/Local Address/Foreign Address可以看出差别,一个是ipv4,一个是ipv6,我猜是ipv6没有正常解析这个“localhost”
hosts里添加映射之后就好了
*注:如果想在postman或者浏览器里输入路由访问的话需要开9200端口,执行下面命令:
firewall-cmd --zone=public --add-port=9200/tcp --permanent
firewall-cmd --reload
# es通过HTTP协议收发数据,可以用curl命令来给它发命令,默认监听9200端口
curl -X GET http://localhost:9200/
# 响应如下:
{
"status" : 200,
"name" : "Gaia",
"cluster_name" : "elasticsearch",
"version" : {
"number" : "1.7.5",
"build_hash" : "${buildNumber}",
"build_timestamp" : "2019-03-20T08:28:00Z",
"build_snapshot" : false,
"lucene_version" : "4.10.4"
},
"tagline" : "You Know, for Search"
}
遇到的问题:
1. 三个虚拟机上的es无法查找到对方,没能构建出集群,配置了“discovery.zen.ping.unicast.hosts”没有效果,但三个虚拟机的网络都能ping通,第一台虚拟机(192.168.143.11)也能使用“curl http://192.168.143.22:9200”访问第二台虚拟机;
2. 在用一台虚拟机上启动两个es,会自动分配端口,比如启动一个es时端口是9200,再启动一个会自动分配9201端口,这两个es可以组成集群,集群中两个节点的名称是一样的,即便在“discovery.zen.ping.unicast.hosts”这里没有配置9201这个端口也能自动发现它;
3. 把es的目录复制一份,并修改配置,改掉节点名和端口,相当于在同一台虚拟机上启动两个es,不用额外配置“discovery.zen.ping.unicast.hosts”,它们依然可以组成集群(2.3.3版本可以,1.7.5不行);
反正用虚拟机还没配成功!