Skip to content

InfiniCache: A cost-effective memory cache that is built atop ephemeral serverless functions (FAST '20)

Notifications You must be signed in to change notification settings

neboduus/infinicache

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Infinicache - Knative Version + Multi Key Replication (MK)

This branch contains a fork of Infinicache which was modified in such a way that we are able to create 2 different containers (1 for the proxy and 1 for the cache nodes) and then deploy such components in Kubernetes and Knative. A more detailed view about what the repository contains can be found in /docs.

Install Infinicache in k8s

  • Setup a Google Cloud account (Google offers free credit) and enable Google Kubernetes Engine (GKE) and Google Build. Follow GCP guidelines carefully to correctly setup gcloud.

  • Once you have GKE enabled, you should able to create a cluster, therefore modify file /setup/config with your desired configuration and from the proxy/ folder create a GKE cluster without Istio add-on. We do this because the Istio version of the add-on usually lags behind what Knative expects:

$ ./setup/create-gke-cluster
  • Install Istio
$ ./install-istio
  • Install Knative Serving
$ ./install-serving
  • Install Knative Eventing
$ ./install-eventing
  • (Optional, but recommended) Install observability features to enable logging, metrics, and request tracing in Serving and Eventing components:
$ ./install-monitoring
  • Check if all pods are up and running:
$ kubectl get pods --all-namespaces

NB: The repository is configured to work with 20 cache nodes. If you want to modify this number you may want to change file proxy/proxy/server/config.go.

  • Modify files node/node-knService.yaml and proxy/proxy-deployment.yaml with the correct iage adress

  • Go to the node module and containerize the application.

$ cd node/
$ gcloud builds submit --tag gcr.io/{PROJECT-ID}/infinicache-node
  • Deploy 20 local cache nodes using Knative
$ cd node/
$ ./createNodes 19
  • Find the nodes addresses
$ kubectl get ksvc
  • Configure the proxy with the nodes addresses. Modify the file proxy/proxy/server/config.go by modifying the LambdaAddresses array.
  • Go to the proxy module and containerize the application.
$ cd proxy/
$ gcloud builds submit --tag gcr.io/{PROJECT-ID}/infinicache-proxy
  • Modify file proxy/proxy-deployment.yaml with the correct image address
  • Create deployment and service for proxy
$ cd proxy/
$ kubectl apply - proxy-service.yaml
$ kubectl apply -f proxy-deployment.yaml
  • Wait proxy to become READY
$ kubectl get pods --watch
  • SSH to Proxy pod
$ kubectl exec -it {POD-NAME} /bin/bash
  • Launch Proxy
$ make start
  • Run Test
$ go run client/example/main.go

About

InfiniCache: A cost-effective memory cache that is built atop ephemeral serverless functions (FAST '20)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Go 92.7%
  • Shell 4.4%
  • Dockerfile 2.8%
  • Makefile 0.1%