笔者安装的是elasticsearch7版本的,安装环境为centos7,配置的java为jdk11。
一、elasticsearch外网访问
这个问题困扰笔者许久,查阅相关资料才发现那人正在灯火阑珊处
解决方案如下:
- 相关配置文件的修改
修改安装的elasticsearch文件下的config/elasticsearch.yml
文件。添加:
network.http: 0.0.0.0 #任意的IP地址均可以访问本机es
&
network.http: 196.128.31.133 #仅输入本机的IP地址访问本机es
- centos防火墙设置
- 方案一:外网访问es需要关闭es所在机子的防火墙。
centos7 防火墙状态查看、关闭、打开命令:
firewall-cmd --state #防火墙状态查看
systemctl stop firewalld.service #防火墙关闭
systemctl start firewalld.service #打开防火墙
- 方案二:开启9200端口
# 查询9200端口是否开放
firewall-cmd --query-port=9200/tcp
# 开放9200端口
firewall-cmd --permanent --add-port=9200/tcp
# 移除9200端口
firewall-cmd --permanent --remove-port=9200/tcp
# 重启防火墙(修改配置后要重启防火墙)
firewall-cmd --reload
二、ElasticSearch频繁报503错误
我报503错误的地方有两处:
- elasticsearch head连接不上elasticsearch;
- python的elasticsearch模块连接elasticsearch会报503错误。
这些问题的源头主要体现在config/elasticsearch.yml
文件的配置问题。
解决方案如下:
- es配置文件添加
# 开启跨域访问支持,默认为false
http.cors.enabled: true
# 跨域访问允许的域名地址
http.cors.allow-origin: "*"
# 通过为 cluster.initial_master_nodes 参数设置符合主节点条件的节点的 IP 地址来引导启动集群
cluster.initial_master_nodes: ["node-1"]
备注:重点是node.name
和cluster.initial_master_nodes
- 笔者的
config/elasticsearch.yml
配置文件
笔者的认定master机子的IP地址不在下列discovery.zen.ping.unicast.hosts
配置中。
cluster.name: supermarket
node.name: node-main
http.port: 9200
node.master: true
node.data: true
path.data: /home/software/elasticsearch/data
path.logs: /home/software/elasticsearch/logs
# discovery.zen.minimum_master_nodes: 2
# discovery.zen.ping_timeout: 3000s
# discovery.zen.ping.unicast.hosts: ["192.168.31.137","192.168.31.138"]
cluster.initial_master_nodes: ["node-main"]
transport.tcp.port: 9300
network.host: 0.0.0.0
http.cors.enabled: true
http.cors.allow-origin: "*"
bootstrap.memory_lock: false
bootstrap.system_call_filter: false