Cassandra with AxonOps on Kubernetes

October 13, 2020
Cassandra with AxonOps on Kubernetes

Introduction

The following shows how to install AxonOps for monitoring Cassandra. This process specifically requires the official cassandra helm repository.

Using minikube

The deployment should work fine on latest versions of minikube as long as you provide enough memory for it.

bWluaWt1YmUgc3RhcnQgLS1tZW1vcnkgODE5MiAtLWNwdXM9NAptaW5pa3ViZSBhZGRvbnMgZW5hYmxlIHN0b3JhZ2UtcHJvdmlzaW9uZXI=

⚠️ Make sure you use a recent version of minikube. Also check available drivers and select the most appropriate for your platform

Helmfile

Overview

As this deployment contains multiple applications we recommend you use an automation system such as Ansible or Helmfile to put together the config. The example below uses helmfile.

Install requirements

You would need to install the following components:

Alternatively you can consider using a dockerized version of them both such as https://hub.docker.com/r/chatwork/helmfile

Config files

The values below are set for running on a laptop with minikube, adjust accordingly for larger deployments.

The values below are set for running on a laptop with minikube, adjust accordingly for larger deployments.

helmfile.yaml

LS0tCnJlcG9zaXRvcmllczoKICAtIG5hbWU6IHN0YWJsZQogICAgdXJsOiBodHRwczovL2t1YmVybmV0ZXMtY2hhcnRzLnN0b3JhZ2UuZ29vZ2xlYXBpcy5jb20KICAtIG5hbWU6IGluY3ViYXRvcgogICAgdXJsOiBodHRwczovL2t1YmVybmV0ZXMtY2hhcnRzLWluY3ViYXRvci5zdG9yYWdlLmdvb2dsZWFwaXMuY29tCiAgLSBuYW1lOiBheG9ub3BzLWhlbG0KICAgIHVybDogaHR0cHM6Ly9yZXBvLmF4b25vcHMuY29tL3B1YmxpYy9oZWxtL2hlbG0vY2hhcnRzLwogIC0gbmFtZTogYml0bmFtaQogICAgdXJsOiBodHRwczovL2NoYXJ0cy5iaXRuYW1pLmNvbS9iaXRuYW1pCnJlbGVhc2VzOgogIC0gbmFtZTogYXhvbi1lbGFzdGljCiAgICBuYW1lc3BhY2U6IHt7IGVudiAiTkFNRVNQQUNFIiB8IGRlZmF1bHQgIm1vbml0b3JpbmciIH19CiAgICBjaGFydDogImJpdG5hbWkvZWxhc3RpY3NlYXJjaCIKICAgIHdhaXQ6IHRydWUKICAgIGxhYmVsczoKICAgICAgZW52OiBtaW5pa3ViZQogICAgdmFsdWVzOgogICAgICAtIGZ1bGxuYW1lT3ZlcnJpZGU6IGF4b24tZWxhc3RpYwogICAgICAtIGltYWdlVGFnOiAiNy44LjAiCiAgICAgIC0gZGF0YToKICAgICAgICAgIHJlcGxpY2FzOiAxCiAgICAgICAgICBwZXJzaXN0ZW5jZToKICAgICAgICAgICAgc2l6ZTogMUdpCiAgICAgICAgICAgIGVuYWJsZWQ6IHRydWUKICAgICAgICAgICAgYWNjZXNzTW9kZXM6IFsgIlJlYWRXcml0ZU9uY2UiIF0KICAgICAgLSBjdXJhdG9yOgogICAgICAgICAgZW5hYmxlZDogdHJ1ZQogICAgICAtIGNvb3JkaW5hdGluZzoKICAgICAgICAgIHJlcGxpY2FzOiAxCiAgICAgIC0gbWFzdGVyOgogICAgICAgICAgcmVwbGljYXM6IDEKICAgICAgICAgIHBlcnNpc3RlbmNlOgogICAgICAgICAgICBzaXplOiAxR2kKICAgICAgICAgICAgZW5hYmxlZDogdHJ1ZQogICAgICAgICAgICBhY2Nlc3NNb2RlczogWyAiUmVhZFdyaXRlT25jZSIgXQoKICAtIG5hbWU6IGF4b25vcHMKICAgIG5hbWVzcGFjZToge3sgZW52ICJOQU1FU1BBQ0UiIHwgZGVmYXVsdCAibW9uaXRvcmluZyIgfX0KICAgIGNoYXJ0OiAiYXhvbm9wcy1oZWxtL2F4b25vcHMiCiAgICB3YWl0OiB0cnVlCiAgICBsYWJlbHM6CiAgICAgIGVudjogbWluaWt1YmUKICAgIHZhbHVlczoKICAgICAgLSB2YWx1ZXMueWFtbAoKICAtIG5hbWU6IGNhc3NhbmRyYQogICAgbmFtZXNwYWNlOiBjYXNzYW5kcmEKICAgIGNoYXJ0OiAiaW5jdWJhdG9yL2Nhc3NhbmRyYSIKICAgIHdhaXQ6IHRydWUKICAgIGxhYmVsczoKICAgICAgZW52OiBkZXYKICAgIHZhbHVlczoKICAgICAgLSB2YWx1ZXMueWFtbA==

values.yaml

LS0tCnBlcnNpc3RlbmNlOgogIGVuYWJsZWQ6IHRydWUKICBzaXplOiAxR2kKICBhY2Nlc3NNb2RlOiBSZWFkV3JpdGVNYW55Cgpwb2RTZXR0aW5nczoKICB0ZXJtaW5hdGlvbkdyYWNlUGVyaW9kU2Vjb25kczogMzAwCgppbWFnZToKICB0YWc6IDMuMTEuNgogIHB1bGxQb2xpY3k6IElmTm90UHJlc2VudAoKY29uZmlnOgogIGNsdXN0ZXJfbmFtZTogbWluaWt1YmUKICBjbHVzdGVyX3NpemU6IDMKICBzZWVkX3NpemU6IDIKICBudW1fdG9rZW5zOiAyNTYKICBtYXhfaGVhcF9zaXplOiA1MTJNCiAgaGVhcF9uZXdfc2l6ZTogNTEyTQoKZW52OgogIEpWTV9PUFRTOiAiLWphdmFhZ2VudDovdmFyL2xpYi9heG9ub3BzL2F4b24tY2Fzc2FuZHJhMy4xMS1hZ2VudC5qYXI9L2V0Yy9heG9ub3BzL2F4b24tYWdlbnQueW1sIgoKZXh0cmFWb2x1bWVzOgogIC0gbmFtZTogYXhvbm9wcy1hZ2VudC1jb25maWcKICAgIGNvbmZpZ01hcDoKICAgICAgbmFtZTogYXhvbm9wcy1hZ2VudAogIC0gbmFtZTogYXhvbm9wcy1zaGFyZWQKICAgIGVtcHR5RGlyOiB7fQogIC0gbmFtZTogYXhvbm9wcy1sb2dzCiAgICBlbXB0eURpcjoge30KICAtIG5hbWU6IGNhc3NhbmRyYS1sb2dzCiAgICBlbXB0eURpcjoge30KCmV4dHJhVm9sdW1lTW91bnRzOgogIC0gbmFtZTogYXhvbm9wcy1zaGFyZWQKICAgIG1vdW50UGF0aDogL3Zhci9saWIvYXhvbm9wcwogICAgcmVhZE9ubHk6IGZhbHNlCiAgLSBuYW1lOiBheG9ub3BzLWFnZW50LWNvbmZpZwogICAgbW91bnRQYXRoOiAvZXRjL2F4b25vcHMKICAgIHJlYWRPbmx5OiB0cnVlCiAgLSBuYW1lOiBheG9ub3BzLWxvZ3MKICAgIG1vdW50UGF0aDogL3Zhci9sb2cvYXhvbm9wcwogIC0gbmFtZTogY2Fzc2FuZHJhLWxvZ3MKICAgIG1vdW50UGF0aDogL3Zhci9sb2cvY2Fzc2FuZHJhCgpleHRyYUNvbnRhaW5lcnM6CiAgLSBuYW1lOiBheG9ub3BzLWFnZW50CiAgICBpbWFnZTogZGlnaXRhbGlzZG9ja2VyL2F4b24tYWdlbnQ6bGF0ZXN0CiAgICBlbnY6CiAgICAgIC0gbmFtZTogQVhPTl9BR0VOVF9WRVJCT1NJVFkKICAgICAgICB2YWx1ZTogIjEiCiAgICB2b2x1bWVNb3VudHM6CiAgICAgIC0gbmFtZTogYXhvbm9wcy1hZ2VudC1jb25maWcKICAgICAgICBtb3VudFBhdGg6IC9ldGMvYXhvbm9wcwogICAgICAgIHJlYWRPbmx5OiB0cnVlCiAgICAgIC0gbmFtZTogYXhvbm9wcy1zaGFyZWQKICAgICAgICBtb3VudFBhdGg6IC92YXIvbGliL2F4b25vcHMKICAgICAgICByZWFkT25seTogZmFsc2UKICAgICAgLSBuYW1lOiBheG9ub3BzLWxvZ3MKICAgICAgICBtb3VudFBhdGg6IC92YXIvbG9nL2F4b25vcHMKICAgICAgLSBuYW1lOiBjYXNzYW5kcmEtbG9ncwogICAgICAgIG1vdW50UGF0aDogL3Zhci9sb2cvY2Fzc2FuZHJhCgpheG9uLXNlcnZlcjoKICBlbGFzdGljX2hvc3Q6IGh0dHA6Ly9heG9uLWVsYXN0aWMtZWxhc3RpY3NlYXJjaC1tYXN0ZXIKICBpbWFnZToKICAgIHJlcG9zaXRvcnk6IGRpZ2l0YWxpc2RvY2tlci9heG9uLXNlcnZlcgogICAgdGFnOiBsYXRlc3QKICAgIHB1bGxQb2xpY3k6IElmTm90UHJlc2VudAoKCmF4b24tZGFzaDoKICBheG9uU2VydmVyVXJsOiBodHRwOi8vYXhvbm9wcy1heG9uLXNlcnZlcjo4MDgwCiAgc2VydmljZToKICAgICMgdXNlIE5vZGVQb3J0IGZvciBtaW5pa3ViZSwgY2hhbmdlIHRvIENsdXN0ZXJJUCBvciBMb2FkQmFsYW5jZXIgb24gZnVsbHkgZmVhdHVyZWQKICAgICMgazhzIGRlcGxveW1lbnRzIHN1Y2ggYXMgQVdTIG9yIEdvb2dsZQogICAgdHlwZTogTm9kZVBvcnQKICBpbWFnZToKICAgIHJlcG9zaXRvcnk6IGRpZ2l0YWxpc2RvY2tlci9heG9uLWRhc2gKICAgIHRhZzogbGF0ZXN0CiAgICBwdWxsUG9saWN5OiBJZk5vdFByZXNlbnQ=

axon-agent.yml

YXhvbi1zZXJ2ZXI6CiAgICBob3N0czogImF4b25vcHMtYXhvbi1zZXJ2ZXIubW9uaXRvcmluZyIgIyBTcGVjaWZ5IGF4b24tc2VydmVyIElQIGF4b24tc2VydmVyLm15Y29tcGFueS4KICAgIHBvcnQ6IDE4ODgKCmF4b24tYWdlbnQ6CiAgICBvcmc6ICJtaW5pa3ViZSIgIyBTcGVjaWZ5IHlvdXIgb3JnYW5pc2F0aW9uIG5hbWUKICAgIGh1bWFuX3JlYWRhYmxlX2lkZW50aWZpZXI6ICJheG9uX2FnZW50X2lwIiAjIG9uZSBvZiB0aGUgZm9sbG93aW5nOgoKTlRQOgogICAgaG9zdDogInBvb2wubnRwLm9yZyIgIyBTcGVjaWZ5IGEgTlRQIHRvIGRldGVybWluZSBhIE5UUCBvZmZzZXQKCmNhc3NhbmRyYToKICB0aWVyMDogIyBtZXRyaWNzIGNvbGxlY3RlZCBldmVyeSA1IHNlY29uZHMKICAgICAgbWV0cmljczoKICAgICAgICAgIGp2bV86CiAgICAgICAgICAgIC0gImphdmEubGFuZzoqIgogICAgICAgICAgY2FzXzoKICAgICAgICAgICAgLSAib3JnLmFwYWNoZS5jYXNzYW5kcmEubWV0cmljczoqIgogICAgICAgICAgICAtICJvcmcuYXBhY2hlLmNhc3NhbmRyYS5uZXQ6dHlwZT1GYWlsdXJlRGV0ZWN0b3IiCgogIHRpZXIxOgogICAgICBmcmVxdWVuY3k6IDMwMCAjIG1ldHJpY3MgY29sbGVjdGVkIGV2ZXJ5IDMwMCBzZWNvbmRzICg1bSkKICAgICAgbWV0cmljczoKICAgICAgICAgIGNhc186CiAgICAgICAgICAgIC0gIm9yZy5hcGFjaGUuY2Fzc2FuZHJhLm1ldHJpY3M6bmFtZT1Fc3RpbWF0ZWRQYXJ0aXRpb25Db3VudCwqIgoKICBibGFja2xpc3Q6ICMgWW91IGNhbiBibGFja2xpc3QgbWV0cmljcyBiYXNlZCBvbiBSZWdleCBwYXR0ZXJuLiBIaXQgdGhlIGFnZW50IG9uIGh0dHA6Ly9hZ2VudElQOjk5MTYvbWV0cmljc2xpc3QgdG8gbGlzdCBKTVggbWV0cmljcyBpdCBpcyBjb2xsZWN0aW5nCiAgICAtICJvcmcuYXBhY2hlLmNhc3NhbmRyYS5tZXRyaWNzOnR5cGU9Q29sdW1uRmFtaWx5LioiICMgZHVwbGljYXRpb24gb2YgdGFibGUgbWV0cmljcwogICAgLSAib3JnLmFwYWNoZS5jYXNzYW5kcmEubWV0cmljczouKnNjb3BlPVJlcGFpciMuKiIgIyBpZ25vcmUgZWFjaCByZXBhaXIgaW5zdGFuY2UgbWV0cmljcwogICAgLSAib3JnLmFwYWNoZS5jYXNzYW5kcmEubWV0cmljczouKm5hbWU9U25hcHNob3RzU2l6ZS4qIiAjIENvbGxlY3RpbmcgU25hcHNob3RzU2l6ZSBtZXRyaWNzIHNsb3dzIGRvd24gY29sbGVjdGlvbgogICAgLSAib3JnLmFwYWNoZS5jYXNzYW5kcmEubWV0cmljczouKk1heC4qIgogICAgLSAib3JnLmFwYWNoZS5jYXNzYW5kcmEubWV0cmljczouKk1pbi4qIgogICAgLSAiLio5OTl0aFBlcmNlbnRpbGV8Lio1MHRoUGVyY2VudGlsZXwuKkZpZnRlZW5NaW51dGVSYXRlfC4qRml2ZU1pbnV0ZVJhdGV8LipNZWFuUmF0ZXwuKk1lYW58LipPbmVNaW51dGVSYXRlfC4qU3RkRGV2IgoKICBKTVhPcGVyYXRpb25zQmxhY2tsaXN0OgogICAgLSAiZ2V0VGhyZWFkSW5mbyIKICAgIC0gImdldERhdGFjZW50ZXIiCiAgICAtICJnZXRSYWNrIgoKICBETUxFdmVudHNXaGl0ZWxpc3Q6ICMgWW91IGNhbiB3aGl0ZWxpc3Qga2V5c3BhY2VzIC8gdGFibGVzIChsaXN0IG9mICJrZXlzcGFjZSIgYW5kL29yICJrZXlzcGFjZS50YWJsZSIgdG8gbG9nIERNTCBxdWVyaWVzLiBEYXRhIGlzIG5vdCBhbmFseXNlZC4KICAjIC0gInN5c3RlbV9kaXN0cmlidXRlZCIKCiAgRE1MRXZlbnRzQmxhY2tsaXN0OiAjIFlvdSBjYW4gYmxhY2tsaXN0IGtleXNwYWNlcyAvIHRhYmxlcyBmcm9tIHRoZSBETUxFdmVudHNXaGl0ZWxpc3QgKGxpc3Qgb2YgImtleXNwYWNlIiBhbmQvb3IgImtleXNwYWNlLnRhYmxlIiB0byBsb2cgRE1MIHF1ZXJpZXMuIERhdGEgaXMgbm90IGFuYWx5c2VkLgogICMgLSBzeXN0ZW1fZGlzdHJpYnV0ZWQucGFyZW50X3JlcGFpcl9oaXN0b3J5CgogIGxvZ1N1Y2Nlc3NmdWxSZXBhaXJzOiBmYWxzZSAjIHNldCBpdCB0byB0cnVlIGlmIHlvdSB3YW50IHRvIGxvZyBhbGwgdGhlIHN1Y2Nlc3NmdWwgcmVwYWlyIGV2ZW50cy4KCiAgd2FybmluZ1RocmVzaG9sZE1pbGxpczogMjAwICMgVGhpcyB3aWxsIHdhcm4gaW4gbG9ncyB3aGVuIGEgTUJlYW4gdGFrZXMgbG9uZ2VyIHRoYW4gdGhlIHNwZWNpZmllZCB2YWx1ZS4KCiAgbG9nRm9ybWF0OiAiJTQkcyAlMSR0WS0lMSR0bS0lMSR0ZCAlMSR0SDolMSR0TTolMSR0UywlMSR0TCAlNSRzJTYkcyVuIg==

Start up

Create Axon Agent configuration

a3ViZWN0bCBjcmVhdGUgbnMgY2Fzc2FuZHJhCmt1YmVjdGwgY3JlYXRlIGNvbmZpZ21hcCBheG9ub3BzLWFnZW50IC0tZnJvbS1maWxlPWF4b24tYWdlbnQueW1sIC1uIGNhc3NhbmRyYQ==

Run helmfile

With locally installed helm and helmfile

Y2QgeW91ci9jb25maWcvZGlyZWN0b3J5CmhlbWxmaWxlIHN5bmM=

With docker image

ZG9ja2VyIHJ1biAtLXJtIAogICAgLXYgfi8ua3ViZTovcm9vdC8ua3ViZSAKICAgIC12ICR7UFdEfS8uaGVsbTovcm9vdC8uaGVsbSAKICAgIC12ICR7UFdEfS9oZWxtZmlsZS55YW1sOi9oZWxtZmlsZS55YW1sIAogICAgLXYgJHtQV0R9L3ZhbHVlcy55YW1sOi92YWx1ZXMueWFtbCAKICAgIC0tbmV0PWhvc3QgY2hhdHdvcmsvaGVsbWZpbGUgc3luYw==

Access

Minikube

If you used minikube, identify the name of the service with kubectl get svc -n monitoring and launch it with

bWluaWt1YmUgc2VydmljZSBheG9ub3BzLWF4b24tZGFzaCAtbiBtb25pdG9yaW5n

LoadBalancer

Find the DNS entry for it:

a3ViZWN0bCBnZXQgc3ZjIC1uIG1vbml0b3JpbmcgLW8gd2lkZQ==

Open your browser and copy and paste the URL.

Troubleshooting

Check the status of the pods:

a3ViZWN0bCBnZXQgcG9kIC1uIG1vbml0b3JpbmcKa3ViZWN0bCBnZXQgcG9kIC1uIGNhc3NhbmRyYQ==

Any pod which is not on state Running check it out with

a3ViZWN0bCBkZXNjcmliZSAtbiBOQU1FU1BBQ0UgcG9kIFBPRC1OQU1F

Storage

One common problem is regarding storage. If you have enabled persistent storage you may see an error about persistent volume claims (not found, unclaimed, etc). If you're using minikube make sure you enable storage with

bWluaWt1YmUgYWRkb25zIGVuYWJsZSBzdG9yYWdlLXByb3Zpc2lvbmVy

Memory

The second most common problem is not enough memory (OOMKilled). You will see this often if you're node does not have enough memory to run the containers or if the heap settings for Cassandra are not right. kubectl describe command will be showing Error 127 when this occurs.

In the values.yaml file adjust the heap options to match your hardware:

bWF4X2hlYXBfc2l6ZTogNTEyTQogIGhlYXBfbmV3X3NpemU6IDUxMk0=

Minikube

Review the way you have started up minikube and assign more memory if you can. Also check the available drivers and select the appropriate for your platform. On MacOS where I tested hyperkit or virtualbox are the best ones.

bWluaWt1YmUgc3RhcnQgLS1tZW1vcnkgMTAyNDAgLS1jcHVzPTQgLS1kcml2ZXI9aHlwZXJraXQ=

Putting it all together

This short video shows how quickly you can run Cassandra with AxonOps on a Kubernetes cluster. The video uses a "helmfile" to manage the packages and configurations. https://youtu.be/OvRZkS0FNCg

Related Articles

Subscribe to newsletter

Subscribe to receive the latest blog posts to your inbox every week.

By subscribing you agree to with our Privacy Policy.
Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.

Ready to Transform 

Your Business?