
- updating java to 3.7 - added pet set example - adding pet set for Cassandra e2e tests - changed service as we do not want a lb service, as we are running C* - updated docs fixing headers and adding exception for run.sh adding documentation, thank god for reflog Did not mean to commit that as the README ... fixing fixing problems in README fixing more problems in README more README tweaks munge updates updating examples_test for PetSet in Cassandra examples updating petset to no use better security context
126 lines
4.8 KiB
Bash
126 lines
4.8 KiB
Bash
#!/bin/bash
|
|
|
|
# Copyright 2016 The Kubernetes Authors.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
|
|
set -e
|
|
CONF_DIR=/etc/cassandra
|
|
CFG=$CONF_DIR/cassandra.yaml
|
|
|
|
# we are doing PetSet or just setting our seeds
|
|
if [ -z "$CASSANDRA_SEEDS" ]; then
|
|
HOSTNAME=$(hostname -f)
|
|
fi
|
|
|
|
# The following vars relate to there counter parts in $CFG
|
|
# for instance rpc_address
|
|
CASSANDRA_RPC_ADDRESS="${CASSANDRA_RPC_ADDRESS:-0.0.0.0}"
|
|
CASSANDRA_NUM_TOKENS="${CASSANDRA_NUM_TOKENS:-32}"
|
|
CASSANDRA_CLUSTER_NAME="${CASSANDRA_CLUSTER_NAME:='Test Cluster'}"
|
|
CASSANDRA_LISTEN_ADDRESS=${POD_IP:-$HOSTNAME}
|
|
CASSANDRA_BROADCAST_ADDRESS=${POD_IP:-$HOSTNAME}
|
|
CASSANDRA_BROADCAST_RPC_ADDRESS=${POD_IP:-$HOSTNAME}
|
|
CASSANDRA_DISK_OPTIMIZATION_STRATEGY="${CASSANDRA_DISK_OPTIMIZATION_STRATEGY:-ssd}"
|
|
CASSANDRA_MIGRATION_WAIT="${CASSANDRA_MIGRATION_WAIT:-1}"
|
|
CASSANDRA_ENDPOINT_SNITCH="${CASSANDRA_ENDPOINT_SNITCH:-SimpleSnitch}"
|
|
CASSANDRA_DC="${CASSANDRA_DC}"
|
|
CASSANDRA_RACK="${CASSANDRA_RACK}"
|
|
CASSANDRA_RING_DELAY="${CASSANDRA_RING_DELAY:-30000}"
|
|
CASSANDRA_AUTO_BOOTSTRAP="${CASSANDRA_AUTO_BOOTSTRAP:-true}"
|
|
CASSANDRA_SEEDS="${CASSANDRA_SEEDS:false}"
|
|
CASSANDRA_SEED_PROVIDER="${CASSANDRA_SEED_PROVIDER:-org.apache.cassandra.locator.SimpleSeedProvider}"
|
|
CASSANDRA_AUTO_BOOTSTRAP="${CASSANDRA_AUTO_BOOTSTRAP:false}"
|
|
|
|
# Turn off JMX auth
|
|
CASSANDRA_OPEN_JMX="${CASSANDRA_OPEN_JMX:-false}"
|
|
# send GC to STDOUT
|
|
CASSANDRA_GC_STDOUT="${CASSANDRA_GC_STDOUT:-false}"
|
|
|
|
# if DC and RACK are set, use GossipingPropertyFileSnitch
|
|
if [[ $CASSANDRA_DC && $CASSANDRA_RACK ]]; then
|
|
echo "dc=$CASSANDRA_DC" > $CONF_DIR/cassandra-rackdc.properties
|
|
echo "rack=$CASSANDRA_RACK" >> $CONF_DIR/cassandra-rackdc.properties
|
|
CASSANDRA_ENDPOINT_SNITCH="GossipingPropertyFileSnitch"
|
|
fi
|
|
|
|
# TODO what else needs to be modified
|
|
for yaml in \
|
|
broadcast_address \
|
|
broadcast_rpc_address \
|
|
cluster_name \
|
|
listen_address \
|
|
num_tokens \
|
|
rpc_address \
|
|
disk_optimization_strategy \
|
|
endpoint_snitch \
|
|
; do
|
|
var="CASSANDRA_${yaml^^}"
|
|
val="${!var}"
|
|
if [ "$val" ]; then
|
|
sed -ri 's/^(# )?('"$yaml"':).*/\2 '"$val"'/' "$CFG"
|
|
fi
|
|
done
|
|
|
|
echo "auto_bootstrap: ${CASSANDRA_AUTO_BOOTSTRAP}" >> $CFG
|
|
|
|
# set the seed to itself. This is only for the first pod, otherwise
|
|
# it will be able to get seeds from the seed provider
|
|
if [[ $CASSANDRA_SEEDS == 'false' ]]; then
|
|
sed -ri 's/- seeds:.*/- seeds: "'"$POD_IP"'"/' $CFG
|
|
else # if we have seeds set them. Probably PetSet
|
|
sed -ri 's/- seeds:.*/- seeds: "'"$CASSANDRA_SEEDS"'"/' $CFG
|
|
fi
|
|
|
|
sed -ri 's/- class_name: SEED_PROVIDER/- class_name: '"$CASSANDRA_SEED_PROVIDER"'/' $CFG
|
|
|
|
# send gc to stdout
|
|
if [[ $CASSANDRA_GC_STDOUT == 'true' ]]; then
|
|
sed -ri 's/ -Xloggc:\/var\/log\/cassandra\/gc\.log//' $CONF_DIR/cassandra-env.sh
|
|
fi
|
|
|
|
# enable RMI and JMX to work on one port
|
|
echo "JVM_OPTS=\"\$JVM_OPTS -Djava.rmi.server.hostname=$POD_IP\"" >> $CONF_DIR/cassandra-env.sh
|
|
|
|
# getting WARNING messages with Migration Service
|
|
echo "-Dcassandra.migration_task_wait_in_seconds=${CASSANDRA_MIGRATION_WAIT}" >> $CONF_DIR/jvm.options
|
|
echo "-Dcassandra.ring_delay_ms=${CASSANDRA_RING_DELAY}" >> $CONF_DIR/jvm.options
|
|
|
|
|
|
if [[ $CASSANDRA_OPEN_JMX == 'true' ]]; then
|
|
export LOCAL_JMX=no
|
|
sed -ri 's/ -Dcom\.sun\.management\.jmxremote\.authenticate=true/ -Dcom\.sun\.management\.jmxremote\.authenticate=false/' $CONF_DIR/cassandra-env.sh
|
|
sed -ri 's/ -Dcom\.sun\.management\.jmxremote\.password\.file=\/etc\/cassandra\/jmxremote\.password//' $CONF_DIR/cassandra-env.sh
|
|
fi
|
|
|
|
echo Starting Cassandra on ${CASSANDRA_LISTEN_ADDRESS}
|
|
echo CASSANDRA_RPC_ADDRESS ${CASSANDRA_RPC_ADDRESS}
|
|
echo CASSANDRA_NUM_TOKENS ${CASSANDRA_NUM_TOKENS}
|
|
echo CASSANDRA_CLUSTER_NAME ${CASSANDRA_CLUSTER_NAME}
|
|
echo CASSANDRA_LISTEN_ADDRESS ${CASSANDRA_LISTEN_ADDRESS}
|
|
echo CASSANDRA_BROADCAST_ADDRESS ${CASSANDRA_BROADCAST_ADDRESS}
|
|
echo CASSANDRA_BROADCAST_RPC_ADDRESS ${CASSANDRA_BROADCAST_RPC_ADDRESS}
|
|
echo CASSANDRA_DISK_OPTIMIZATION_STRATEGY ${CASSANDRA_DISK_OPTIMIZATION_STRATEGY}
|
|
echo CASSANDRA_MIGRATION_WAIT ${CASSANDRA_MIGRATION_WAIT}
|
|
echo CASSANDRA_ENDPOINT_SNITCH ${CASSANDRA_ENDPOINT_SNITCH}
|
|
echo CASSANDRA_DC ${CASSANDRA_DC}
|
|
echo CASSANDRA_RACK ${CASSANDRA_RACK}
|
|
echo CASSANDRA_RING_DELAY ${CASSANDRA_RING_DELAY}
|
|
echo CASSANDRA_AUTO_BOOTSTRAP ${CASSANDRA_AUTO_BOOTSTRAP}
|
|
echo CASSANDRA_SEEDS ${CASSANDRA_SEEDS}
|
|
echo CASSANDRA_SEED_PROVIDER ${CASSANDRA_SEED_PROVIDER}
|
|
echo CASSANDRA_AUTO_BOOTSTRAP ${CASSANDRA_AUTO_BOOTSTRAP}
|
|
|
|
export CLASSPATH=/kubernetes-cassandra.jar
|
|
cassandra -R -f
|