我嘗試在嵌入在 tomcat webapp 中的 Ignite 集群中管理網路分段。我創建了一個 ping 資料庫服務器的自定義分段決議器。
所以我用spring背景關系配置Ignite
<beans:bean id="segmentationResolver" class="my.cluster.JdbcPingSegmentationResolver"/>
<beans:bean id="ignite.cfg" class="org.apache.ignite.configuration.IgniteConfiguration">
<beans:property name="gridLogger">
<beans:bean class="org.apache.ignite.logger.slf4j.Slf4jLogger"/>
</beans:property>
<beans:property name="workDirectory" value="#{systemProperties[igniteTmpDir]}"/>
<beans:property name="segmentationResolvers" ref="segmentationResolver" />
<beans:property name="segmentCheckFrequency" value="10000" />
<beans:property name="segmentationPolicy" value="NOOP" />
<beans:property name="waitForSegmentOnStart" value="true" />
<beans:property name="communicationSpi">....
我的 JdbcPingSegmentationResolver 的建構式由 spring 呼叫,但它的方法isValidSegment()從不呼叫。即使我啟動/停止另一個 Ignite 節點(必須在集群拓撲更改時呼叫它)。
@Override
public boolean isValidSegment() throws IgniteCheckedException {
var reachable = false;
try {
Process exec = Runtime.getRuntime().exec("ping " hostname);
//0 - normal termination
reachable = exec.waitFor(1, TimeUnit.SECONDS);
} catch (IOException | InterruptedException e) {
LOGGER.error("segmentation network : {}", e.getMessage(), e);
}
LOGGER.debug("check segmentation network status : {}", reachable);
return reachable;
}
uj5u.com熱心網友回復:
分段決議器由 a 呼叫GridSegmentationProcessor。默認處理器org.apache.ignite.internal.processors.segmentation.os.GridOsSegmentationProcessor實際上是 noop。GridGain 企業版(它是供應商支持的 Apache Ignite 交付)指定了一個能夠正確處理決議器的處理器。
我相信在拓撲更改(左節點、連接等)上呼叫的機器是拓撲驗證器。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/465832.html
