Skip to content

Instantly share code, notes, and snippets.

@dioptre
Forked from diegopacheco/netflix-priam-aws.md
Created November 22, 2017 13:03
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dioptre/658b51b9c1280b3fcf7e638567b2e80b to your computer and use it in GitHub Desktop.
Save dioptre/658b51b9c1280b3fcf7e638567b2e80b to your computer and use it in GitHub Desktop.
How to Run Netflix Priam?

Install java 8

# Remove java 7
sudo yum remove -y java

# Install basic packages
sudo yum install -y git

# Download and install java 8
wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u45-b14/jdk-8u45-linux-x64.tar.gz"
tar -xzvf jdk-8u45-linux-x64.tar.gz
rm -rf jdk-8u45-linux-x64.tar.gz

# Configure JAVA_HOME
sudo vim ~/.bashrc
alias cls='clear'

export JAVA_HOME=~/jdk1.8.0_45
export JRE_HOME=~/jdk1.8.0_45/jre
export PATH=$PATH:~/jdk1.8.0_45/bin:/~/jdk1.8.0_45/jre/bin
source ~/.bashrc 
java -version

Cassandra 2.x

wget https://archive.apache.org/dist/cassandra/2.2.8/apache-cassandra-2.2.8-bin.tar.gz
tar -xzvf apache-cassandra-2.2.8-bin.tar.gz
rm -rf apache-cassandra-2.2.8-bin.tar.gz

Priam

git clone https://github.com/Netflix/Priam.git
cd Priam
./gradlew clean build

### Add your own credentials
sudo cp priam/src/main/resources/conf/awscredential.properties /etc/awscredential.properties
sudo mkdir /var/log/tomcat7/
sudo touch /var/log/tomcat7/priam.log
sudo chmod 777 /var/log/tomcat7/priam.log 

### Copy CASS Extension
cp priam-cass-extensions/build/libs/priam-cass-extensions-1.3.0-SNAPSHOT.jar ~/apache-cassandra-2.2.8/lib/

## Set up the CASS agent
vim /home/ec2-user/apache-cassandra-2.2.8/conf/cassandra-env.sh 
JVM_OPTS="$JVM_OPTS -javaagent:/home/ec2-user/apache-cassandra-2.2.8/lib/priam-cass-extensions-1.3.0-SNAPSHOT.jar"

## Setup Priam Configs
vim priam/src/main/resources/Priam.properties 
priam.authenticator=org.apache.cassandra.auth.AllowAllAuthenticator
priam.authorizer=org.apache.cassandra.auth.AllowAllAuthorizer
priam.backup.chunksizemb=10
priam.backup.commitlog.enable=
priam.backup.commitlog.location=
priam.backup.hour=12
priam.backup.incremental.enable=
priam.backup.racs=
priam.backup.retention=
priam.backup.threads=2
priam.bootcluster=
priam.cache.location=/var/lib/cassandra/saved_caches
priam.cass.home=/home/ec2-user/apache-cassandra-2.2.8/
priam.cass.manual.start.enable=
priam.cass.process=
priam.cass.startscript=/etc/init.d/cassandra-start
priam.cass.stopscript=/etc/init.d/cassandra-stop
priam.clustername=Test_Cluster
priam.commitlog.location=/var/lib/cassandra/commitlog
priam.compaction.throughput=
priam.data.location=/home/ec2-user/apache-cassandra-2.2.8/data
priam.direct.memory.size.m1.large=1G
priam.endpoint_snitch=org.apache.cassandra.locator.Ec2Snitch
priam.heap.newgen.size.m1.large=2G
priam.heap.size.m1.large=4G
priam.hint.delay=
priam.hint.window=
priam.jmx.port=7199
priam.keyCache.count=
priam.keyCache.size=
priam.localbootstrap.enable=
priam.memory.compaction.limit=
priam.memtabletotalspace=
priam.multiregion.enable=false
priam.multithreaded.compaction=
priam.partitioner=org.apache.cassandra.dht.RandomPartitioner
priam.restore.closesttoken=
priam.restore.keyspaces=
priam.restore.prefix=
priam.restore.snapshot=
priam.restore.threads=8
priam.rowCache.count=
priam.rowCache.size=
priam.s3.base_dir=mdo-backup
priam.s3.bucket=cassandraarchive
priam.seed.provider=com.netflix.priam.cassandra.extensions.NFSeedProvider
priam.ssl.storage.port=7001
priam.storage.port=7000
priam.streaming.throughput.mb=
priam.target.columnfamily=
priam.target.keyspace=
priam.thrift.port=9160
priam.upload.throttle=
priam.yamlLocation=
priam.zones.available=


## Set Cass startup scripts
sudo touch /etc/init.d/cassandra
sudo chmod +x /etc/init.d/cassandra
sudo vim /etc/init.d/cassandra
#!/bin/bash
# chkconfig: 2345 95 20
# description: This script does some stuff
# processname: java

start() {
   echo "Starting cassandra..."
   export JAVA_HOME=/home/ec2-user/jdk1.8.0_45
   export JRE_HOME=/home/ec2-user/jdk1.8.0_45/jre
   export PATH=$PATH:/home/ec2-user/jdk1.8.0_45/bin:/home/ec2-user/jdk1.8.0_45/jre/bin

   cd /home/ec2-user/apache-cassandra-2.2.8
   bin/cassandra start & 
}

stop() {
   echo "stop"
   PID=`ps aux | grep cassandra | grep -v grep | awk '{print $2}'`
   if [[ "" !=  "$PID" ]]; then
      echo "killing $PID"
      sudo kill -9 $PID
   fi
}

case "$1" in start)
  start
;;
  stop)
  stop
;;
*)

echo $"Usage: $0 {start|stop}"
RETVAL=1
esac
exit 0
# ASG
# Create An ASG named: Test_Cluster. Make sure you ahve public IPS enabled.

# S3
# Create a S3 Bucket named: cassandraarchive

# SimpleDB Setup
# Run this script
touch aws-simpledb-createdomain.py 
vim aws-simpledb-createdomain.py 
import boto3

AWS_ACCESS_KEY_ID = "YOUR_KEY"
AWS_SECRET_ACCESS_KEY = "YOUR_SECRET"

session = boto3.Session(
    aws_access_key_id=AWS_ACCESS_KEY_ID,
    aws_secret_access_key=AWS_SECRET_ACCESS_KEY
)

sdb = session.client('sdb', region_name='us-east-1')
result =  sdb.create_domain(DomainName='InstanceIdentity')
print "DONE " + str(result)

result =  sdb.create_domain(DomainName='PriamProperties')
print "DONE " + str(result)

That's it. Done.

How to Test Priam(After ASG)

cd ~/Priam/
./gradlew jettyRun
curl http://localhost:8080/priam-web/REST/v1/cassconfig/get_token
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment