Skip to content

gitorko/project04

Repository files navigation

Project 04

Distributed Locking - Apache Ignite

https://gitorko.github.io/distributed-locking-apache-ignite/

Version

Check version

$java --version
openjdk 21.0.3 2024-04-16 LTS

Dev

To run the code.

./gradlew clean build
./gradlew bootRun
./gradlew bootJar

To run many node instances

cd build/libs
java -jar project04-1.0.0.jar --server.port=8081 --ignite.nodeName=node1
java -jar project04-1.0.0.jar --server.port=8082 --ignite.nodeName=node2
java -jar project04-1.0.0.jar --server.port=8083 --ignite.nodeName=node3

JVM tuning parameters

java -jar -Xms1024m -Xmx2048m -XX:MaxDirectMemorySize=256m -XX:+DisableExplicitGC -XX:+UseG1GC -XX:+ScavengeBeforeFullGC -XX:+AlwaysPreTouch project04-1.0.0.jar --server.port=8080 --ignite.nodeName=node0

Create a service account

kubectl apply -f - <<EOF
apiVersion: v1
kind: Secret
metadata:
  name: default-secret
  annotations:
    kubernetes.io/service-account.name: default
type: kubernetes.io/service-account-token
EOF

Edit the service account and update the last 2 lines

kubectl edit serviceaccounts default

apiVersion: v1
kind: ServiceAccount
metadata:
  creationTimestamp: "XXXX-XX-XXTXX:XX:XXZ"
  name: default
  namespace: default
  resourceVersion: "XXXX"
  uid: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
secrets:
  - name: default-secret

Check if token is created

kubectl describe secret default

Provide admin role to the service account

kubectl apply -f - <<EOF
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: admin-user
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: default
  namespace: default
EOF

Build the docker image

docker build -f docker/Dockerfile --force-rm -t project04:1.0.0 .

Deploy to k8s

mkdir /tmp/data
kubectl apply -f docker/deployment.yaml
kubectl get pods -w

kubectl config set-context --current --namespace=default
kubectl get deployments
kubectl scale statefulset project04 --replicas=3
kubectl scale deployment project04 --replicas=1

Clean up

kubectl delete -f docker/deployment.yaml

About

Distributed Locking - Apache Ignite

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published