Memcache on kubernetes - spring-boot

I have a spring boot api running on google cloud kubernetes cluster, I wanna have a caching server to use for my api so I thought to use memcache.
I tried two ways of doing it:
I downloaded the memcache from the google launcher which is basically deploying an instance of memcache on a vm. And then I assigned an external IP to my vm, whitelisted my ip to try it locally and ofc opened the port 11211 (the default one). For the client side I used, this guy, specified the ip address but I still get connection cancelled : java.util.concurrent.CancellationException: Cancelled and the doc is bad so I could find anything that helps.
I decided to try another way, which is following this tutorial and now I have the memcached cluster but I don't know how to consume these pods from my other cluster or should the pods be on the same cluster i have the api running on?
I would appreciate any help, this is my first encounter with the global caching.

So I figured it out based on Jonah Benton's advice.
It was actually pretty simple, i used this tutorial to create a new pod running memcached in my cluster and then I used this client to connect on it and it worked like a charm!
Hope it helps someone.

Related

ElasticSearch and Redis Remote Servers

I deployed a Laravel application on AWS Elasticbeanstalk.
I want to incorporate caching with Redis as my cache driver as well as Elasticsearch.
I managed to run these 2 features locally (redis on port 6379 and elasticsearch on 9200),
but now I want them to run on remote servers and I simply specify their endpoints in my .env file.
Can anyone let me know how I can obtain remote URLs for Redis and Elasticsearch?
Update:
I found out that Heruko offers the ability to create a Redis instance and thereby one can obtain a URL for Redis. I presume a similar thing is for Elasticsearch.
If this is not the right way to do so, please let me know how it works

Nodes discovery on Google Cloud with Dynamic IP: Spring Boot Java application

Our app is based on Java Spring boot. And we totally based on Google cloud, where we have dynamic IP and our serve isntance will work behind Elastic load balance, where an instance may get spawned and get killed based on server resource consumptions.
None we these server instance can be assumed to have static IP.
Looking for solution to connect different server instance with dynamic IP on Google Cloud.
Since 3.6, Hazelcast offers Discovery SPI to integrate external discovery mechanisms into the system. As a result there are many discovery plugins and you can implement your own. See the list of your options here. Kubernetes might be helpful in your case.
Some additional info from what Sertug said,
There is also a Google Compute SPI that might be helpful, you can check it out here:
https://github.com/hazelcast/hazelcast-gcp
Also, here's a blog post (a little old but still valid):
https://blog.hazelcast.com/hazelcast-discovery-spi

Marklogic can't connect to EC2 after creating instance

I have created an instance of marklogic via Market place and can't connect to 8001 port. Also tried to create ti via Cloud Formation and the same problem can't connect to 8001. I used the guides https://developer.marklogic.com/products/cloud/aws
I double checked several time Security groups and make sure 22 and 8001 are available publicly, but still no luck to connect. Could you advise me what could be the problem?
Believe it or not, but it looks like the answer is in the little note in brackets (NB: MarkLogic AMIs will not run on micro instances). Therefore, I simply tried to create a small instance instead of micro and all worked.

How to restart single node hadoop cluster on ec2

I have installed a single node haodoop cluster on using Hortonworks/Ambari on Amazon's ec2 host.
Since I don't want this cluster running 24/7, I stop the instance when done. When I reboot the instance later, I get a new IP address and then ambari no longer is able to start the Hadoop related services.
Is there a way other than completely redeploying to reconfigure the cluster so the services will start?
It looks like the IP address lives in various xml files under /etc, in the postgres database table ambari, and possibly other places I haven't found yet.
I tried updating the xml files and postgres database with updated versions of the ip address, internal and external dns names as I could find them, but to no avail. I have not been able to restart the services.
The reason I am doing this is to possibly save the deployment time and data configuration on hdfs and other project specific setup each time I restart the host.
Any suggestions?
Thanks!
Elastic IP can be used. Also, since you mentioned it being a single node cluster - you can use localhost or private IP.
If you use elastic IP, your UIs will always be on the same public IP. However, if you use private IP or localhost and do not associate your instance with an elastic IP you will have to look for public IP everytime you start the instance and then connect to the web UI using the IP.
Thanks for the help, both Harman and TJ are correct. I haven't used an elastic IP because I might have more than one of these running and a time, and for now at least, I don't mind looking up the public ip address.
Harman's suggestion of using "localhost" as the fqdn when setting up ambari in the first place is a really good idea in retrospect. Unless I go through the whole setup again, that's water under the bridge for me, but I recommend this to others who might read this post.
In my case, I figured this out on my own before coming back to the page. The specific step I took was insanely simple after all, thanks to Occam's Razor.
I added the following line in /etc/hosts:
<new internal IP> <old internal dns name>
and then did
ambari-server restart. from the command line. Then I am able to restart all services after logging into ambari.

WSO2 WSAS Application Server and ELB not working

I succesfully followed the guides on http://docs.wso2.org/display/Cluster/Clustering+Application+Server and have deployed an scenario of one ELB 2.1.0 balancing and connecting the nodes as follows:
- One machine with the ELB, Manager and Worker node
- Another physical different machine with another worker node
All the managing on the ELB and manager and workers seems to be fine, for the logs and the console show every member connecting to each other, and so.
My problem is that if I configure the "proxyPort" properties on the Catalina-server.xml of the Manager and the workers node, I can't connect trhough the ports on the ELB 8280 or 8243, because I am obtaining a blank page (if i try to use the manager administration console) or a blank webserver response (if I try to consume any webservice through the ELB port).
If I don't configure the proxyPorts properties on each node, and point to each IP and port separately, I can successfully use the manager console, and consume the WebServices on each worker node as I expected but...of course, this way I am not having Load Balance and High Availability.
Sorry to bother you because I'm new at this matters, but I searched the internet all around and have found how to fix problems all the way through this point I'm in... It seems that the problem should only be at some transportation level configuration on the axis2.xml of some node, or maybe the fact our network is behind a proxy had something to be...don't know.
¿Anybody could give any advice? Versions are: WSAS 5.2.0 and ELB 2.1.0.
We have found now, that working with previous versions (with Tribes and not Hazelcast as the clustering class), WSAS 5.1.0 and ELB 2.0.3, and not changing the parameter on the Axis2.xml file in the ELB (leaving as it comes, being different than the domain established in the loadbalancer.cfg and the domain in the Axis2.xml of the Workers and Managers), it works well. But, if we don't change the on the axis2.xml working with the 5.2.0 and 2.1.0 versions, trying to replicate the status we have with the previous version, the ELB doesn't realice that a manager and worker are connecting to him (we can't see anything on the ELB logs when launching the manager and Worker), so I suppose in this case the clustering is not working, and for it to work properly, we need to set the in the Axis2.xml of the loadbalancer the same as in the loadbalancer.conf and in the axis2.xml of the rest of nodes in the cluster.
We need to deploy this for testing and valoration purposes on a customer and we would like to understand or to know if there is something wrong with the last versions, or this is just a lack of knowledge for our part, case when we will need the help of this forum :).
In this link you could find the configuration files involved in the ELB 2.1.0 and Manager WSAS 5.2.0 issue: http://www.dravencrow.com/varios/configuration_files.rar
Thank you very much in advance
Just for the sake of others with the same problem, we finally worked this out. It seems that with the newest versions of ELB (2.1.0) you need to stablish the port where to listen to other members in the "loadbalancer.conf" level, with the property "group_mgt_port", which did not comes as default in the file from the release of ELB 2.1.0. Also, the domain fixed in the Axis2.xml of the ELB level must be totally different from the domain fixed in the rest of Axis2.xml files of other nodes (and from the domain in the loadbalancer.conf itself). With this setup, the last version of ELB and AS works fine taking care of connections between each other, and the proxyports works as well connecting to manager and workers throug the elb port 8243. Thank you very much for your patience and apologies for bothering you....it's really difficult find some reliable documentation on the last versions of each product in the WSO2 suite, for the most of the info available is spreaded through different blogs and forums. Regards

Resources