Solr 9.8.1 SSL (HTTPS)设置中有关zookeeper和urlScheme的两个点

        最近将Solr集群从8升级到了9,期间碰倒的一些问题算是正常处理,但在配置SSL时碰倒了两个问题,也可以说是一个问题,给大家分享下,也是给今后的自己提个醒。

        设置solr的ssl时,根据官方文档,首先应当在solr.in.sh中设置完如下这些选项: 

# Enables HTTPS. It is implicitly true if you set SOLR_SSL_KEY_STORE. Use this config
# to enable https module with custom jetty configuration.
SOLR_SSL_ENABLED=true
# Uncomment to set SSL-related system properties
# Be sure to update the paths to the correct keystore for your environment
SOLR_SSL_KEY_STORE=etc/solr-ssl.keystore.p12
SOLR_SSL_KEY_STORE_PASSWORD=secret
SOLR_SSL_TRUST_STORE=etc/solr-ssl.keystore.p12
SOLR_SSL_TRUST_STORE_PASSWORD=secret
# Require clients to authenticate
SOLR_SSL_NEED_CLIENT_AUTH=false
# Enable clients to authenticate (but not require)
SOLR_SSL_WANT_CLIENT_AUTH=false
# SSL Certificates contain host/ip "peer name" information that is validated by default. Setting
# this to false can be useful to disable these checks when re-using a certificate on many hosts.
# This will also be used for the default value of whether SNI Host checking should be enabled.
SOLR_SSL_CHECK_PEER_NAME=true

        多说一句,如果你采用的证书并没有包含节点所使用的host的时候,要把最后一项“SOLR_SSL_CHECK_PEER_NAME”设为“false”。

        如果单纯做好这个修改后,启动Solr Cloud,你会发现,浏览器连接Admin UI界面可以采用https方式,但是节点间通信还是采用了http方式,并没有启用https,导致I/O错误。这时候再仔细看官方文档的内容(Enabling SSL),会发现还有下面这一行:

        就是说还要在zookeeper中进行一个设定,在solr集群所使用的zookeeper目录下,为cluster设定一个名为urlSchema的属性,值为"https",这个值的作用就是告诉各个Node,节点间通信要采用HTTPS方式。

        这里也多说一句,“-z”选项中,如果你对solr所采用的目录有修改,在最后应加上具体路径名称,比如:

server1:2181,server2:2181,server3:2181/solr

        这时候,最神奇的一幕来了,如果你粘贴运行官方文档里的这个代码,会喜提一个错误:

ERROR:Not a known cluster property or starts with prefix ext., propertyName: urlSchema.

        意思是说这个“urlSchema”不是一个已知的cluster属性,而且也没有“ext.”这样的前缀。

        我这时候有些蒙圈,一开始在排查的时候还以为是我的zookeeper版本(3.8.4)和solr 9.8.1的要求不匹配。但查找了一下,这个报错应该是solr给出的。于是我又仔细翻官方文档的各个主题,终于,让我发现了问题所在。在“Cluster and Node Management Commands”这个主题下,对于cluster的属性做了如下说明:

        包含有:location, maxCoresPerNode, urlScheme, and defaultShardPreferences。等等!“urlScheme”?

        再返回头看看“Enabling SSL”中的代码:

        我知道事情的真相了……官方文档给出的代码出现了笔误……

        虽然可以理解,但真的是太坑了。把这个地方修改完毕后,一切正常了……

        以前在做solr 8的时候,当时根据文档设置了这个urlScheme选项,所以可以运行。换成solr 9的时候一开始忘记了做这个设置是我的不对,但官方文档出这个错误,确实有点坑……。我特意回solr 8的文档去看了下,果然,代码是正确的:

        至此,这个问题已经解决了。总结两点,一是官方文档还是要细致看完,不要落下重要部分;二是官方文档也可能有一些小错误,还是要多留个心眼。

        OK,继续搬砖!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值