因此,我在 Linux 服务器上安装了 Solr,并且我想从另一台 Web 服务器和/或我的计算机访问它。
从 Solar Server 上,我可以看到它正在运行
[root@solr ~]# wget -qO- http://localhost:8983/solr
<html>
<head>
<link rel="stylesheet" type="text/css" href="solr-admin.css">
<link rel="icon" href="favicon.ico" type="image/ico"></link>
<link rel="shortcut icon" href="favicon.ico" type="image/ico"></link>
<title>Welcome to Solr</title>
</head>
<body>
<h1>Welcome to Solr!</h1>
<a href="."><img border="0" align="right" height="78" width="142" src="admin/solr_small.png" alt="Solr"/></a>
<a href="admin/">Solr Admin</a>
</body>
</html>
但是,插入http://192.168.1.19:8983/solr/
浏览器或从 Web 服务器 ping 时,无法连接。如何让网络上的其他设备可以访问 Solr?
# netstat -anp | grep :8983
tcp 0 0 :::8983 :::* LISTEN 15138/java
$ telnet 192.168.1.19 8983
Trying 192.168.1.19...
telnet: connect to address 192.168.1.19: Connection refused
telnet: Unable to connect to remote host
答案1
您如何运行 Solr?在 Tomcat 下?我假设是这样,因为我知道如何限制在localhost
Tomcat 下,并且如果您只是撤消我限制它的操作,那么您就可以联网安装 Solr。
就我而言,我不允许 Tomcat 与外界打交道 - 我更喜欢 Apache 反向代理 - 因此我执行以下操作。
server.xml
我在这里编辑 Tomcat :
/etc/tomcat6/server.xml
我查找Connector
设置并添加address="127.0.0.1"
将 Tomcat 安装锁定到 127.0.0.1(又名:localhost)
<Connector port="8080" protocol="HTTP/1.1"
address="127.0.0.1"
connectionTimeout="20000"
URIEncoding="UTF-8"
redirectPort="8443" />
因此,对于您而言,我只需删除address
如下设置:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
URIEncoding="UTF-8"
redirectPort="8443" />
但话又说回来,不知道您的 Solr 实例是如何服务的。如果它不是通过 Tomcat 提供服务的,那么其他人就需要参与进来。
答案2
您能否检查 Solr 服务器是否正在监听正确的接口?
输出是什么:
netstat -anp | grep :8983
如果您看到127.0.0.1:8983
或::1:8983
那是因为您的服务器没有监听外界。您可以通过编辑您正在使用的 Web 服务器的配置来纠正此问题。
否则,您发现0.0.0.0:8983
问题可能出在其他地方。
答案3
如果您正在使用datastax
,请将 和 更新cassandra.yaml
为listen_address:
机器rpc_address:
的 IP 地址,这样它就可以正常工作。
默认情况下,它被提及为localhost
。