3.2. キャッシュサービスノードの作成
デフォルトでは、Data Grid Operator はキャッシュサービスノードを含む Data Grid クラスターを作成します。
手順
InfinispanCR を作成します。apiVersion: infinispan.org/v1 kind: Infinispan metadata: name: example-infinispan spec: replicas: 2 service: type: Cache1 - 1
- キャッシュサービスノードを作成します。これは
InfinispanCR のデフォルトです。
-
InfinispanCR を適用して、クラスターを作成します。
3.2.1. 自動スケーリングの設定 リンクのコピーリンクがクリップボードにコピーされました!
キャッシュサービスノードでクラスターを作成する場合、Data Grid Operator はデフォルトキャッシュのメモリー使用量に基づいて、ノードを自動的にスケールアップまたはスケールダウンできます。
Data Grid Operator は、キャッシュサービスノード上のデフォルトキャッシュを監視します。キャッシュにデータを追加すると、メモリー使用量が増加します。クラスターに追加の容量が必要であることを検出すると、Data Grid Operator はエントリーをエビクトするのではなく、新しいノードを作成します。同様に、メモリー使用量が特定のしきい値を下回っていることが検出された場合、Data Grid Operator はノードをシャットダウンします。
自動スケーリングは、デフォルトキャッシュでのみ動作します。他のキャッシュをクラスターに追加する予定の場合、Infinispan CR に autoscale フィールドを含めないでください。この場合、エビクションを使用して、各ノードのデータコンテナーのサイズを制御する必要があります。
手順
-
spec.autoscaleリソースをInfinispanCR に追加し、自動スケーリングを有効にします。 autoscaleフィールドを使用して、クラスターのメモリー使用量のしきい値とノード数を設定します。spec: ... service: type: Cache autoscale: maxMemUsagePercent: 701 maxReplicas: 52 minMemUsagePercent: 303 minReplicas: 24 - 1
- 各ノードのメモリー使用量の最大しきい値をパーセンテージで設定します。Data Grid Operator は、クラスター内のいずれかのノードがしきい値に達したことを検出すると、可能であれば新しいノードを作成します。Data Grid Operator が新規のノードを作成できない場合、メモリー使用量が 100 パーセントに達すると、エビクションを実行します。
- 2
- クラスターのノード数の最大数を定義します。
- 3
- クラスター全体のメモリー使用量の最小しきい値をパーセンテージで設定します。Data Grid Operator は、メモリー使用量が最小値を下回ったことを検出すると、ノードをシャットダウンします
- 4
- クラスターのノード数の最小数を定義します。
- 変更を適用します。
3.2.2. 所有者数の設定 リンクのコピーリンクがクリップボードにコピーされました!
所有者の数は、Data Grid クラスター全体に複製される各キャッシュエントリーのコピーの数を制御します。キャッシュサービスノードのデフォルトは 2 で、データの損失を防ぐために各エントリーを複製します。
手順
次のように、
InfinispanCR のspec.service.replicationFactorリソースで所有者数を指定します。spec: ... service: type: Cache replicationFactor: 31 - 1
- 各キャッシュエントリーに 3 つのレプリカを設定します。
- 変更を適用します。
3.2.3. キャッシュサービスリソース リンクのコピーリンクがクリップボードにコピーされました!
apiVersion: infinispan.org/v1
kind: Infinispan
metadata:
# Names the cluster.
name: example-infinispan
spec:
# Specifies the number of nodes in the cluster.
replicas: 4
service:
# Configures the service type as Cache.
type: Cache
# Sets the number of replicas for each entry across the cluster.
replicationFactor: 2
# Enables and configures automatic scaling.
autoscale:
maxMemUsagePercent: 70
maxReplicas: 5
minMemUsagePercent: 30
minReplicas: 2
# Configures authentication and encryption.
security:
# Defines a secret with custom credentials.
endpointSecretName: endpoint-identities
# Adds a custom TLS certificate to encrypt client connections.
endpointEncryption:
type: Secret
certSecretName: tls-secret
# Sets container resources.
container:
extraJvmOpts: "-XX:NativeMemoryTracking=summary"
cpu: "2000m"
memory: 1Gi
# Configures logging levels.
logging:
categories:
org.infinispan: trace
org.jgroups: trace
# Configures how the cluster is exposed on the network.
expose:
type: LoadBalancer
affinity:
podAntiAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 100
podAffinityTerm:
labelSelector:
matchLabels:
app: infinispan-pod
clusterName: example-infinispan
infinispan_cr: example-infinispan
topologyKey: "kubernetes.io/hostname"