<!--
 ! Licensed to the Apache Software Foundation (ASF) under one
 ! or more contributor license agreements.  See the NOTICE file
 ! distributed with this work for additional information
 ! regarding copyright ownership.  The ASF licenses this file
 ! to you under the Apache License, Version 2.0 (the
 ! "License"); you may not use this file except in compliance
 ! with the License.  You may obtain a copy of the License at
 !
 !   http://www.apache.org/licenses/LICENSE-2.0
 !
 ! Unless required by applicable law or agreed to in writing,
 ! software distributed under the License is distributed on an
 ! "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 ! KIND, either express or implied.  See the License for the
 ! specific language governing permissions and limitations
 ! under the License.
 !-->
<cluster xmlns="cluster">
  <instance_name>asterix</instance_name>
  <store>storage</store>

  <data_replication>
    <enabled>false</enabled>
    <replication_port>2016</replication_port>
    <replication_factor>2</replication_factor>
    <auto_failover>false</auto_failover>
    <replication_time_out>30</replication_time_out>
  </data_replication>

  <master_node>
    <id>master</id>
    <client_ip>127.0.0.1</client_ip>
    <cluster_ip>127.0.0.1</cluster_ip>
    <client_port>1098</client_port>
    <cluster_port>1099</cluster_port>
    <http_port>8888</http_port>
  </master_node>
  <node>
    <id>nc1</id>
    <cluster_ip>127.0.0.1</cluster_ip>
    <replication_port>2016</replication_port>
  </node>
  <node>
    <id>nc2</id>
    <cluster_ip>127.0.0.1</cluster_ip>
    <replication_port>2017</replication_port>
  </node>
</cluster>