ES多实例配置
配置变更
http.port
这个配置是elasticsearch对外提供服务的http端口配置,默认情况下ES会取用9200~9299之间的端口,如果9200被占用就会自动使用9201,在单机多实例的配置中这个配置实际是不需要修改的。
但是为了更好地进行配置管理,以及和老的配置兼容,我们还是手动将第一个实例的http端口配置为9200,第二个实例配置为9201。
transport.tcp.port
这个配置指定了elasticsearch集群内数据通讯使用的端口,默认情况下为9300,与上面的http.port配置类似,ES也会自动为已占用的端口选择下一个端口号。我们可以将第一个实例的tcp传输端口配置为9300,第二实例配置为9301。
discovery.zen.ping.unicast.hosts
由于到了2.x版本之后,ES取消了默认的广播模式来发现master节点,需要使用该配置来指定发现master节点。这个配置在单机双实例的配置中需要特别注意下,因为习惯上我们配置时并未指定master节点的tcp端口,如果实例的transport.tcp.port配置为9301,那么实例启动后会认为discovery.zen.ping.unicast.hosts中指定的主机tcp端口也是9301,可能导致这些节点无法找到master节点。因此在该配置中需要指定master节点提供服务的tcp端口。
其他配置
node.name
同一主机上的两个实例需要使用不同的node.name
node.name: “idc02-argo-es-04-2”
path.data
同一主机上两个实例需要对应不同的数据目录
path.data: “/data/server/elasticsearch-2”
path.logs
由于默认情况下日志用集群名称来命名,因此同一主机两个实例对应的日志目录需要分开
/data/logs/elasticsearch-2
创建目录
mkdir /data/server/elasticsearch-2
mkdir /data/logs/elasticsearch-2
chown -R hdfs:hadoop /data/server/elasticsearch-2
chown -R hdfs:hadoop /data/logs/elasticsearch-2
启动:
nohup ./bin/elasticsearch -Des.path.conf=config/instance2 -d -p elasticsearch-2.pid > /dev/null 2>&1 &
创建test1&test2索引,两个索引都有分片分配到同一机器的两个不同实例上:
image.png