зеркало из https://github.com/github/vitess-gh.git
Switched vtgate from controller to pod template to force them to specific nodes
This commit is contained in:
Родитель
297bbda2fc
Коммит
bbeef74751
|
@ -17,7 +17,6 @@ GKE_ZONE=${GKE_ZONE:-'us-central1-b'}
|
|||
GKE_MACHINE_TYPE=${GKE_MACHINE_TYPE:-'n1-standard-1'}
|
||||
GKE_CLUSTER_NAME=${GKE_CLUSTER_NAME:-'example'}
|
||||
GKE_SSD_SIZE_GB=${GKE_SSD_SIZE_GB:-0}
|
||||
GKE_NUM_NODES=${GKE_NUM_NODES:-0}
|
||||
SHARDS=${SHARDS:-'-80,80-'}
|
||||
TABLETS_PER_SHARD=${TABLETS_PER_SHARD:-3}
|
||||
MAX_TASK_WAIT_RETRIES=${MAX_TASK_WAIT_RETRIES:-300}
|
||||
|
@ -26,10 +25,10 @@ BENCHMARK_CLUSTER=${BENCHMARK_CLUSTER:-true}
|
|||
VTGATE_COUNT=${VTGATE_COUNT:-0}
|
||||
|
||||
vttablet_template='vttablet-pod-template.yaml'
|
||||
vtgate_template='vtgate-controller-template.yaml'
|
||||
vtgate_template='vtgate-pod-template.yaml'
|
||||
if $BENCHMARK_CLUSTER; then
|
||||
vttablet_template='vttablet-pod-benchmarking-template.yaml'
|
||||
vtgate_template='vtgate-controller-benchmarking-template.yaml'
|
||||
vtgate_template='vtgate-pod-benchmarking-template.yaml'
|
||||
fi
|
||||
|
||||
# export for vttablet scripts
|
||||
|
@ -94,15 +93,11 @@ gcloud config set compute/zone $GKE_ZONE
|
|||
project_id=`gcloud config list project | sed -n 2p | cut -d " " -f 3`
|
||||
num_shards=`echo $SHARDS | tr "," " " | wc -w`
|
||||
total_tablet_count=$(($num_shards*$TABLETS_PER_SHARD))
|
||||
num_nodes=$GKE_NUM_NODES
|
||||
if [ $num_nodes -eq 0 ]; then
|
||||
num_nodes=$(($total_tablet_count>3?$total_tablet_count:3))
|
||||
fi
|
||||
vtgate_count=$VTGATE_COUNT
|
||||
if [ $vtgate_count -eq 0 ]; then
|
||||
vtgate_count=$(($total_tablet_count/4>3?$total_tablet_count/4:3))
|
||||
fi
|
||||
|
||||
num_nodes=$(($total_tablet_count+$vtgate_count))
|
||||
|
||||
echo "****************************"
|
||||
echo "*Creating cluster:"
|
||||
|
@ -149,7 +144,7 @@ wait_for_running_tasks etcd 6
|
|||
|
||||
run_script vtctld-up.sh
|
||||
run_script vttablet-up.sh FORCE_NODE=true VTTABLET_TEMPLATE=$vttablet_template
|
||||
run_script vtgate-up.sh VTGATE_REPLICAS=$vtgate_count VTGATE_TEMPLATE=$vtgate_template
|
||||
run_script vtgate-up.sh STARTING_INDEX=$total_tablet_count VTGATE_REPLICAS=$vtgate_count VTGATE_TEMPLATE=$vtgate_template
|
||||
|
||||
wait_for_running_tasks vtctld 1
|
||||
wait_for_running_tasks vttablet $total_tablet_count
|
||||
|
@ -216,7 +211,7 @@ else
|
|||
vtgate_server="$vtgate_ip:$vtgate_port"
|
||||
fi
|
||||
|
||||
if ! [ -z $NEWRELIC_LICENSE_KEY ]; then
|
||||
if [ -n "$NEWRELIC_LICENSE_KEY" -a $GKE_SSD_SIZE_GB -gt 0 ]; then
|
||||
for i in `seq 1 $num_nodes`; do
|
||||
nodename=k8s-$GKE_CLUSTER_NAME-node-${i}
|
||||
gcloud compute copy-files newrelic.sh $nodename:~/
|
||||
|
|
|
@ -1,44 +0,0 @@
|
|||
apiVersion: v1beta1
|
||||
kind: ReplicationController
|
||||
id: vtgate
|
||||
desiredState:
|
||||
replicas: {{replicas}}
|
||||
replicaSelector: {name: vtgate}
|
||||
podTemplate:
|
||||
desiredState:
|
||||
manifest:
|
||||
version: v1beta1
|
||||
id: vtgate
|
||||
containers:
|
||||
- name: vtgate
|
||||
image: vitess/root
|
||||
volumeMounts:
|
||||
- name: syslog
|
||||
mountPath: /dev/log
|
||||
- name: vtdataroot
|
||||
mountPath: /vt/vtdataroot
|
||||
command:
|
||||
- sh
|
||||
- "-c"
|
||||
- >-
|
||||
mkdir -p $VTDATAROOT/tmp &&
|
||||
chown -R vitess /vt &&
|
||||
su -p -c "/vt/bin/vtgate
|
||||
-topo_implementation etcd
|
||||
-etcd_global_addrs http://$ETCD_GLOBAL_SERVICE_HOST:$ETCD_GLOBAL_SERVICE_PORT
|
||||
-log_dir $VTDATAROOT/tmp
|
||||
-alsologtostderr
|
||||
-port 15001
|
||||
-cell test" vitess
|
||||
env:
|
||||
- name: GOMAXPROCS
|
||||
value: 16
|
||||
volumes:
|
||||
- name: syslog
|
||||
source: {hostDir: {path: /dev/log}}
|
||||
- name: vtdataroot
|
||||
source: {{vtdataroot_volume}}
|
||||
labels:
|
||||
name: vtgate
|
||||
labels:
|
||||
name: vtgate
|
|
@ -1,41 +0,0 @@
|
|||
apiVersion: v1beta1
|
||||
kind: ReplicationController
|
||||
id: vtgate
|
||||
desiredState:
|
||||
replicas: {{replicas}}
|
||||
replicaSelector: {name: vtgate}
|
||||
podTemplate:
|
||||
desiredState:
|
||||
manifest:
|
||||
version: v1beta1
|
||||
id: vtgate
|
||||
containers:
|
||||
- name: vtgate
|
||||
image: vitess/root
|
||||
volumeMounts:
|
||||
- name: syslog
|
||||
mountPath: /dev/log
|
||||
- name: vtdataroot
|
||||
mountPath: /vt/vtdataroot
|
||||
command:
|
||||
- sh
|
||||
- "-c"
|
||||
- >-
|
||||
mkdir -p $VTDATAROOT/tmp &&
|
||||
chown -R vitess /vt &&
|
||||
su -p -c "/vt/bin/vtgate
|
||||
-topo_implementation etcd
|
||||
-etcd_global_addrs http://$ETCD_GLOBAL_SERVICE_HOST:$ETCD_GLOBAL_SERVICE_PORT
|
||||
-log_dir $VTDATAROOT/tmp
|
||||
-alsologtostderr
|
||||
-port 15001
|
||||
-cell test" vitess
|
||||
volumes:
|
||||
- name: syslog
|
||||
source: {hostDir: {path: /dev/log}}
|
||||
- name: vtdataroot
|
||||
source: {emptyDir: {}}
|
||||
labels:
|
||||
name: vtgate
|
||||
labels:
|
||||
name: vtgate
|
|
@ -1,41 +0,0 @@
|
|||
apiVersion: v1beta1
|
||||
kind: ReplicationController
|
||||
id: vtgate
|
||||
desiredState:
|
||||
replicas: 3
|
||||
replicaSelector: {name: vtgate}
|
||||
podTemplate:
|
||||
desiredState:
|
||||
manifest:
|
||||
version: v1beta1
|
||||
id: vtgate
|
||||
containers:
|
||||
- name: vtgate
|
||||
image: vitess/root
|
||||
volumeMounts:
|
||||
- name: syslog
|
||||
mountPath: /dev/log
|
||||
- name: vtdataroot
|
||||
mountPath: /vt/vtdataroot
|
||||
command:
|
||||
- sh
|
||||
- "-c"
|
||||
- >-
|
||||
mkdir -p $VTDATAROOT/tmp &&
|
||||
chown -R vitess /vt &&
|
||||
su -p -c "/vt/bin/vtgate
|
||||
-topo_implementation etcd
|
||||
-etcd_global_addrs http://$ETCD_GLOBAL_SERVICE_HOST:$ETCD_GLOBAL_SERVICE_PORT
|
||||
-log_dir $VTDATAROOT/tmp
|
||||
-alsologtostderr
|
||||
-port 15001
|
||||
-cell test" vitess
|
||||
volumes:
|
||||
- name: syslog
|
||||
source: {hostDir: {path: /dev/log}}
|
||||
- name: vtdataroot
|
||||
source: {emptyDir: {}}
|
||||
labels:
|
||||
name: vtgate
|
||||
labels:
|
||||
name: vtgate
|
|
@ -7,8 +7,12 @@ set -e
|
|||
script_root=`dirname "${BASH_SOURCE}"`
|
||||
source $script_root/env.sh
|
||||
|
||||
VTGATE_REPLICAS=${VTGATE_REPLICAS:-3}
|
||||
|
||||
echo "Stopping vtgate replicationController..."
|
||||
$KUBECTL stop replicationController vtgate
|
||||
for uid in `seq 1 $VTGATE_REPLICAS`; do
|
||||
$KUBECTL stop replicationController vtgate-$uid
|
||||
done
|
||||
|
||||
echo "Deleting vtgate service..."
|
||||
$KUBECTL delete service vtgate
|
||||
|
|
|
@ -0,0 +1,38 @@
|
|||
apiVersion: v1beta1
|
||||
kind: Pod
|
||||
id: vtgate-{{uid}}
|
||||
desiredState:
|
||||
manifest:
|
||||
version: v1beta1
|
||||
id: vt
|
||||
containers:
|
||||
- name: vtgate
|
||||
image: vitess/root
|
||||
volumeMounts:
|
||||
- name: syslog
|
||||
mountPath: /dev/log
|
||||
- name: vtdataroot
|
||||
mountPath: /vt/vtdataroot
|
||||
command:
|
||||
- sh
|
||||
- "-c"
|
||||
- >-
|
||||
mkdir -p $VTDATAROOT/tmp &&
|
||||
chown -R vitess /vt &&
|
||||
su -p -c "/vt/bin/vtgate
|
||||
-topo_implementation etcd
|
||||
-etcd_global_addrs http://$ETCD_GLOBAL_SERVICE_HOST:$ETCD_GLOBAL_SERVICE_PORT
|
||||
-log_dir $VTDATAROOT/tmp
|
||||
-alsologtostderr
|
||||
-port 15001
|
||||
-cell test" vitess
|
||||
env:
|
||||
- name: GOMAXPROCS
|
||||
value: "16"
|
||||
volumes:
|
||||
- name: syslog
|
||||
source: {hostDir: {path: /dev/log}}
|
||||
- name: vtdataroot
|
||||
source: {{vtdataroot_volume}}
|
||||
labels:
|
||||
name: vtgate
|
|
@ -0,0 +1,35 @@
|
|||
apiVersion: v1beta1
|
||||
kind: Pod
|
||||
id: vtgate-{{uid}}
|
||||
desiredState:
|
||||
manifest:
|
||||
version: v1beta1
|
||||
id: vtgate
|
||||
containers:
|
||||
- name: vtgate
|
||||
image: vitess/root
|
||||
volumeMounts:
|
||||
- name: syslog
|
||||
mountPath: /dev/log
|
||||
- name: vtdataroot
|
||||
mountPath: /vt/vtdataroot
|
||||
command:
|
||||
- sh
|
||||
- "-c"
|
||||
- >-
|
||||
mkdir -p $VTDATAROOT/tmp &&
|
||||
chown -R vitess /vt &&
|
||||
su -p -c "/vt/bin/vtgate
|
||||
-topo_implementation etcd
|
||||
-etcd_global_addrs http://$ETCD_GLOBAL_SERVICE_HOST:$ETCD_GLOBAL_SERVICE_PORT
|
||||
-log_dir $VTDATAROOT/tmp
|
||||
-alsologtostderr
|
||||
-port 15001
|
||||
-cell test" vitess
|
||||
volumes:
|
||||
- name: syslog
|
||||
source: {hostDir: {path: /dev/log}}
|
||||
- name: vtdataroot
|
||||
source: {emptyDir: {}}
|
||||
labels:
|
||||
name: vtgate
|
|
@ -2,29 +2,33 @@
|
|||
|
||||
# This is an example script that starts a vtgate replicationController.
|
||||
|
||||
set -e
|
||||
#set -e
|
||||
|
||||
script_root=`dirname "${BASH_SOURCE}"`
|
||||
source $script_root/env.sh
|
||||
|
||||
VTGATE_REPLICAS=${VTGATE_REPLICAS:-3}
|
||||
VTGATE_TEMPLATE=${VTGATE_TEMPLATE:-'vtgate-controller-template.yaml'}
|
||||
VTGATE_TEMPLATE=${VTGATE_TEMPLATE:-'vtgate-pod-template.yaml'}
|
||||
VTDATAROOT_VOLUME=${VTDATAROOT_VOLUME:-''}
|
||||
STARTING_INDEX=${STARTING_INDEX:--1}
|
||||
|
||||
vtdataroot_volume='{emptyDir: {}}'
|
||||
if [ -n "$VTDATAROOT_VOLUME" ]; then
|
||||
vtdataroot_volume="{hostDir: {path: ${VTDATAROOT_VOLUME}}}"
|
||||
fi
|
||||
|
||||
replicas=$VTGATE_REPLICAS
|
||||
|
||||
echo "Creating vtgate service..."
|
||||
$KUBECTL create -f vtgate-service.yaml
|
||||
|
||||
sed_script=""
|
||||
for var in replicas vtdataroot_volume; do
|
||||
sed_script+="s,{{$var}},${!var},g;"
|
||||
echo "Creating vtgate pods..."
|
||||
for uid in `seq 1 $VTGATE_REPLICAS`; do
|
||||
sed_script=""
|
||||
for var in uid vtdataroot_volume; do
|
||||
sed_script+="s,{{$var}},${!var},g;"
|
||||
done
|
||||
if [ "$STARTING_INDEX" -gt -1 ]; then
|
||||
vtgate_index=$(($STARTING_INDEX+$uid))
|
||||
sed_script+="\$anodeSelector:\n id: \"$vtgate_index\""
|
||||
fi
|
||||
cat $VTGATE_TEMPLATE | sed -e "$sed_script" | $KUBECTL create -f -
|
||||
done
|
||||
|
||||
echo "Creating vtgate replicationController..."
|
||||
cat $VTGATE_TEMPLATE | sed -e "$sed_script" | $KUBECTL create -f -
|
||||
|
|
|
@ -65,7 +65,7 @@ desiredState:
|
|||
-rowcache-socket $VTDATAROOT/{{tablet_subdir}}/memcache.sock" vitess
|
||||
env:
|
||||
- name: GOMAXPROCS
|
||||
value: 16
|
||||
value: "16"
|
||||
- name: mysql
|
||||
image: vitess/root
|
||||
volumeMounts:
|
||||
|
|
Загрузка…
Ссылка в новой задаче