如果您是第一次运行Apache Ignite,则可能会遇到一些困难。您刚刚下载了Apache Ignite,运行了几次,并遇到了一些问题。大多数情况下,这些问题以类似的方式解决。因此,我决定创建一个清单,提供建议以帮助您避免开发环境中的问题。
1.配置文件
当Ignite通过执行ignite.sh|bat
文件以独立模式启动时,Ignite将使用 $IGNITE_HOME/config/default-config.xml
配置文件。在这种情况下,要从Visor命令行控制台连接到指定节点,应从配置文件列表中选择default-config.xml文件。大多数情况下,default-config.xml文件是列表中的第一个文件。
您必须运行以下命令以使用您自己的Spring配置文件执行Ignite节点:
{IGNITE_HOME} / bin / ignite。{bat | sh} FILE_PATH / my-ignite-example.xml
或者将my-ignite-example.xml文件复制到 $IGNITE_HOME/example/config
目录中并执行以下 ignite.{bat|sh}
命令:
{IGNITE_HOME} / bin / ignite。{bat | sh} examples / config / my-ignite-example.xml
2. 港口
默认情况下,Ignite使用以下本地端口:
TCP / UDP |
端口号 |
描述 |
TCP | 10800 | 瘦客户端连接的默认端口 |
TCP | 11211 | 默认JDBC端口 |
TCP | 47100 | 默认本地通信端口 |
UDP | 47400 | |
TCP | 47500 | 默认本地发现端口 |
TCP | 8080 | REST API的默认端口 |
TCP | 49128 | JMX连接的默认端口 |
TCP | 31100〜31200 | 默认时间服务器端口 |
TCP | 48100〜48200 | 默认共享内存端口 |
如果您使用Docker /虚拟机启动并运行Ignite节点,则应打开上述端口以与主机进行通信。
本文的部分内容摘自“ The Apache Ignite”一书。如果它让您感兴趣,请查看本书的其余部分以获取更多有用的信息。
3.日志
日志文件跟踪运行Ignite时发生的事件。日志文件对于了解Ignite应用程序发生的情况非常有用。如果您遇到问题,并在Ignite论坛中询问问题,首先,系统会要求您提供日志文件。默认情况下启用Ignite日志记录,但存在一些缺点。在默认模式下,Ignite在控制台(stdout)上写入的记录信息并不多。在控制台中,您只能看到错误; 其他一切都将传递给文件。$IGNITE_HOME/work/log
默认情况下,Ignite日志文件位于目录中。不要删除日志文件并尽可能长时间保存日志,因为这对于调试任何严重错误都很方便。
但是,如果要在不分析日志文件的情况下快速找到问题,可以在详细模式下执行Ignite。
$ ignite .sh -v
在详细模式下,Ignite会在控制台和文件中写入所有日志记录信息。请注意,Ignite在详细模式下运行缓慢,建议不要在生产环境中使用它。
4.网络
如果您遇到奇怪的网络错误,例如,如果网络无法连接或无法发送消息,那么很多时候您很可能会遇到IPv6网络问题。不能说Ignite不支持IPv6协议,但此时有一些具体问题。最简单的解决方案是禁用IPv6协议。要禁用IPv6协议,可以将Java选项或属性传递给JVM,如下所示:
-Djava .net .preferIPv4Stack = true
上述JVM选项强制Ignite使用IPv4协议,并解决了与网络相关的大部分问题。
5. 幽灵节点
许多人在发布新的Ignite节点时多次遇到的最常见问题之一。您刚刚执行了单个节点,并且遇到拓扑中已经有两个服务器Ignite节点。大多数情况下,如果您正在使用家庭办公网络,并且您的某个学院也同时运行Ignite服务器节点,则可能会发生这种情况。事实是,默认情况下,Ignite使用多播协议来发现其他节点并与之通信。在启动期间,Ignite会搜索位于同一个多播组中并位于同一子网中的所有其他节点。此外,如果是,它会尝试连接到节点。
避免这种情况的最简单方法是配置静态IP而不是 TcpDiscoveryMulti- castIpFinder。因此,请使用 TcpDiscoveryVmIpFinder 并记下要连接的所有IP地址和端口。这些特定配置可帮助您保护开发环境中的ghost节点。
6. 基线拓扑
版本2.4.0中引入了Ignite基线拓扑,并成为通过本机持久性保护数据持久性的便捷方式。但是,Ignite基线拓扑有什么问题?要回答这个问题,让我们想象以下场景:
- 我们已经启动了一个具有本机持久性启用的Ignite节点(数据将写入磁盘)。
- 我们激活了集群,因为我们为节点启用了本机持久性。
- 我们创建了一个REPLICATED缓存并在其上加载了一些数据。
- 接下来,我们再启动两个节点并开始使用数据进行操作,插入/删除一些数据。
此时,每个节点都包含数据的完整副本并且运行良好。过了一会儿,我们决定重新启动其中一个节点。如果我们停止从中开始的第一个节点,那么一切都会中断,数据就会丢失。这种奇怪行为的原因是Ignite基线拓扑,一组存储持久性数据的服务器节点。在其余节点中,数据将不会保留。
在激活群集时第一次确定一组服务器节点。因此,稍后添加的其余服务器节点将不再包含在基线拓扑中。因此,在我们的示例中,基线拓扑的集合仅包含一个服务器节点,并且此节点将数据保留在磁盘上。每当您停止此服务器节点时,一切都会中断。因此,为了防止这种意外,首先启动所有群集节点,然后才激活群集。
因此,我们可以为初学者指出以下候选名单:
ñ | 看看这个。 |
1 | 使用正确的配置文件通过Ignite Visor进行连接。 |
2 | 打开需要使用Ignite节点的端口。 |
3 | 配置和读取日志。 |
4 | 避免使用IPv6。 |
五 | 在家庭办公网络上使用TcpDiscoveryVmIpFinder。 |
6 | 跟踪基线拓扑。 |