3.2. キャッシュサービスノードの作成
デフォルトでは、Data Grid Operator はキャッシュサービスノードを含む Data Grid クラスターを作成します。
手順
Infinispan
CR を作成します。apiVersion: infinispan.org/v1 kind: Infinispan metadata: name: example-infinispan spec: replicas: 2 service: type: Cache 1
- 1
- キャッシュサービスノードを作成します。これは
Infinispan
CR のデフォルトです。
-
Infinispan
CR を適用して、クラスターを作成します。
3.2.1. 自動スケーリングの設定
キャッシュサービスノードでクラスターを作成する場合、Data Grid Operator はデフォルトキャッシュのメモリー使用量に基づいて、ノードを自動的にスケールアップまたはスケールダウンできます。
Data Grid Operator は、キャッシュサービスノード上のデフォルトキャッシュを監視します。キャッシュにデータを追加すると、メモリー使用量が増加します。クラスターに追加の容量が必要であることを検出すると、Data Grid Operator はエントリーをエビクトするのではなく、新しいノードを作成します。同様に、メモリー使用量が特定のしきい値を下回っていることが検出された場合、Data Grid Operator はノードをシャットダウンします。
自動スケーリングは、デフォルトキャッシュでのみ動作します。他のキャッシュをクラスターに追加する予定の場合、Infinispan
CR に autoscale
フィールドを含めないでください。この場合、エビクションを使用して、各ノードのデータコンテナーのサイズを制御する必要があります。
手順
-
spec.autoscale
リソースをInfinispan
CR に追加し、自動スケーリングを有効にします。 autoscale
フィールドを使用して、クラスターのメモリー使用量のしきい値とノード数を設定します。spec: ... service: type: Cache autoscale: maxMemUsagePercent: 70 1 maxReplicas: 5 2 minMemUsagePercent: 30 3 minReplicas: 2 4
- 1
- 各ノードのメモリー使用量の最大しきい値をパーセンテージで設定します。Data Grid Operator は、クラスター内のいずれかのノードがしきい値に達したことを検出すると、可能であれば新しいノードを作成します。Data Grid Operator が新規のノードを作成できない場合、メモリー使用量が 100 パーセントに達すると、エビクションを実行します。
- 2
- クラスターのノード数の最大数を定義します。
- 3
- クラスター全体のメモリー使用量の最小しきい値をパーセンテージで設定します。Data Grid Operator は、メモリー使用量が最小値を下回ったことを検出すると、ノードをシャットダウンします
- 4
- クラスターのノード数の最小数を定義します。
- 変更を適用します。
3.2.2. 所有者数の設定
所有者の数は、Data Grid クラスター全体に複製される各キャッシュエントリーのコピーの数を制御します。キャッシュサービスノードのデフォルトは 2 で、データの損失を防ぐために各エントリーを複製します。
手順
次のように、
Infinispan
CR のspec.service.replicationFactor
リソースで所有者数を指定します。spec: ... service: type: Cache replicationFactor: 3 1
- 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"