我已经建立了一个6节点的Cassandra集群,跨越两个AWS区域/数据中心(每个3个),一切正常.在做了那么多的工作后,我尝试启用节点加密,尽管我阅读了关于这个主题的无数文件并且无休止地摆弄,但我无法正常工作.
我没有在日志中看到任何错误或任何异常.我确实在日志中看到以下行,表明它已按预期启动了加密消息传递服务:
MessagingService.java:482 - Starting Encrypted Messaging Service on SSL port 7001
Run Code Online (Sandbox Code Playgroud)
我已启用SSL的详细日志记录cassandra-env.sh,但是,这不会产生任何有关我可以看到的SSL节点间连接的错误或其他信息(更新如下):
JVM_OPTS="$JVM_OPTS -Djavax.net.debug=ssl"
Run Code Online (Sandbox Code Playgroud)
我可以使用加密消息传递端口7001从一个节点连接到所有其他节点nc,因此没有防火墙问题.
ubuntu@ip-5-6-7-8:~$ nc -v 1.2.3.4 7001
Connection to 1.2.3.4 7001 port [tcp/afs3-callback] succeeded!
Run Code Online (Sandbox Code Playgroud)
我可以使用cqlsh(我没有启用客户端 - 服务器加密)本地连接到每个节点,并可以查询系统密钥空间等.
但是,如果我运行,nodetool status我看到节点无法看到对方.列表中仅显示我正在查询群集的节点.在启用节点加密之前不是这种情况,他们都可以看到对方就好了.
ubuntu@ip-5-6-7-8:~$ nodetool status
Datacenter: us-east_A
=====================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
-- Address Load Tokens Owns Host ID Rack
UN 1.2.3.4 144.75 KB 256 ? 992ae1bc-77e4-4ab1-a18f-4db62bb0ce6f 1b
Run Code Online (Sandbox Code Playgroud)
我的过程是这样的:
我对特定文件有“en”和“en-AU”(澳大利亚英语)本地化。
虽然当前语言环境是“en_AU”,但[[NSBundle mainBundle] localizations]会生成我期望的本地化集:
( "en-AU", "en" )
Run Code Online (Sandbox Code Playgroud)
然而,[[NSBundle mainBundle] preferredLocalizations](真正重要的)只产生:
( "en" )
Run Code Online (Sandbox Code Playgroud)
为什么首选列表中完全省略了最具体的受支持本地化,而是返回了更通用的本地化?
有没有办法可以NSBundle优先考虑最精确的可用本地化而不是不太具体的选项?