ᨠApache Cassandra áłáłá¤á áĽá á áŠá áááľáľ áá á á°áá°á¨á° áá á¨á° áááľ ááľáĽ á¨ááľáŹáľ á áľáááááľá á á¨ááá áŤááĽáááᢠá áá
á˝áá áŤáłááľáŤá áá° K8s ááá¸ááá á áľááá á¨áááľá á°á¨ááá˝áŁ áááááá˝ áĽá ááŁá áááľááá˝ (á¨áŚááŹá°áŽá˝ á á ááá áĽááłá á¨ááŽ) áŤááŤá˝áá áĽááŤááááá˘
"á´áľá ááááľ á¨áá˝á áá ááááľáľáá ááááľ áá˝áá"
áŤáłááľáŤ áá áá? áŤá á ááľ á¨ááľááľ ááĽáĽ á¨áá°á ááááąá áĽáŤá¨ááá á¨áá°á áá á áŤáá áá¨áá áááľá°áłá°á á¨á°áá°á á¨á°á¨ááá á¨áá¨ááť áľáááľ ááᢠááŽáááą á¨á á ááá˘áŤ á áŤáľáááááᣠáľááá á á ááľ á¨á°áá°á ááŁáĽá á ááľ ááľáĽ á áá á¨áááľá á¨áŤáłááľáŤ áá áá áŁá áŞáŤáľá áĽáť áĽá°áŁáááĄ-
- áŤáłááľáŤ á¨á°ááá á á፠ááá˘
- á¨áŤáłááľáŤ áśááá á ááŤáł á°á¨ááá˝á áŤá ááááá˘
- ááľááá ááááľ - á ááľ á¨á°áá¨á áŤáłááľáŤ ááłá;
- áŤá á á ááłááľ áŁá áŞáŤáľ á¨á°ááá° á¨áŤáłááľáŤ á ááŁááá˝ áĄáľá áá, á á°ááłáłá á¨ááἠááĽá¨á ááľáĽ áááá;
- áłáłá´áá°á - á á ááľ á¨áá¨á ááĽá¨á ááľáĽ á¨ááá ááá á¨áŤáłááľáŤ á ááŁááá˝ áľáĽáľáĽ;
- áááľá°á á¨ááá á¨áá¨á ááá¨áá˝ áľáĽáľáĽ ááá˘
- áŤáłááľáŤ ááľááá ááááľá áááá¨áľ á¨á áá á áľáŤáťá áá áááá˘
- á¨á˝áá áĽá á¨ááá ἠáľáŤáá˝á áááá á áŤáłááľáŤ á ááłááľ áá¨ááá˝á á RAM ááľáĽ áŤá¨ááťáá˘
á áá - áá° áŠá áááľáľ áá° áľááááá á á á áááąá˘
áááľá°ááá á¨áźá áááá
áľá áŤáłááľáŤ áá° áŠá áááľáľ ááá°áľ áľáááá á áĽáá áľáá´á áááľá°áłá°á á¨á áá á ááş áĽáá°ááá á°áľá áĽáá°ááááᢠááá áá ááááá, á áá áá áá áá¨áłá?
1. á¨ááἠáá¨ááť
áá°á á˛á áĽáá°á°áĽáŤáŤá áŤáłááł á¨áá¨ááá ááá á RAM - in ááľáĽ áŤá¨ááťá á¨áááłááľ. ááá áá á á˛áľá áá á¨á°ááá á á¨ááἠáá ááá á á - á á áš ááľáĽ SSTable. á ááľ á áŤá áá°áá ááἠáłáááᢠáááἠááľáłááť - á¨ááá ááĽááśá˝ ááááŚá˝ ᣠáĽááąá á á˛áľá ááľáĽ ááááŁáá˘
á áŤáłááľáŤ ááľáĽ á¨ááĽááľ ááľá ááá
á Kubernetes ááľáĽáŁ ááἠááá¨áá¸áľ PersistentVolumeá áá áá áĽáá˝áááᢠáá°á¨ááᥠáľááśá˝ ááľáá áááŁáá á Kubernetes ááľáĽ á¨áá¨á áá ááľáŤáľ á á¨áááą ááá áĽá¨áá ááĽáˇáá˘
ááĽáŤááłááą á¨áŤáłááľáŤ ááľ á¨áŤáłá˝áá áá áľáá˝ áĽáááľáŁááá˘
áŤáľááľáŤ áŤáą á¨ááἠááŁááľá áĽáá°ááŤááááľ áĽá ááá
á á áĽáŽ á¨á°á°áŠ áľááśá˝á áĽáá°ááŤááἠáἠááŁá áááŁáᢠáľááá
ᣠáŤáłááľáŤ áááľá°á á¨á ááŤáł á¨á áááá˝ áĽááľ áĽá¨ááᥠá¨ááᣠááá¨á áá¨ááť áĽáá° Ceph ááá GlusterFS áŤá á¨á°á¨ááá áľáááśá˝á áá áá á áŤáľááááᢠá áá
á ááŁá áá¨áá á áá áá á á áľá°ááá
á˛áľá áá áá¨áá¸áľ ááááŤáłá áááá hostPath
.
ááá áĽáŤá ááĽáŤááłááą á¨áŁá ᪠á áááŤá áááá˘áá˝ á¨á°áᨠá áŤáŁá˘ ááá á á¨ááá ááᢠá áá á ááŁá áľááááá á ááŤá¨áĽ á ááľ á¨áŤáłááľáŤ ááľááá ááááľá á¨á ááľá¨á áĽá áááĄá á á°á¨ááá áá¨ááť ááľáĽ áá¨áá¸áľ áá, áááľá. á¨á°á ááąáľ Ceph áĽá GlusterFS á¨áĽááľá á ááŤáŽá˝ ááááᢠá¨á፠ááá˘á ᨠKuberntes áááľá°á ááśá˝ ááľáĽ á ááą á˘á áá á¨áá¨áŤ ááἠáĽáá°ááŤáŁ áĽááá á áááá.
2. ááľáľá
á Kubernetes ááľáĽ ááľáľáá ááá°áá á á¨ááááłá°á áá፠ááŽáá˛á¨áľ ááᢠ(áľááá
ááłá á áááá á°ááááá
á ááŤáá ááŤáłááľáŤ á¨ááŤáá˝ áá˝áł ááłá
áááľ ááŞáá˝ áĽáť á ááĄ-
á¨ááááŞáŤáá ááŤáłá˝á á¨áá¨áĽáááĄ-
- JMX á᪠áĽáŤá°á áĽá áĽáŤá°á á˛áá áŤáłááľáŤ á᪠áá á á á¨áá á á¨á°áĽ áľáá ááááľ á ááťááᢠáŤáłááľáŤ á᪠á ááá á áĽááášá á¨áŤáłááľáŤ áľáŞáśá˝á á áá°áááá˘
- áŁáá˛áŤ á áá¨áá áĽáá° ááŤáááľ áááľ áá˝ááá˘
-javaagent:<plugin-dir-name>/cassandra-exporter.jar=--listen=:9180
. - ááĽáą á ááľ á á
á á áłá˝áŚááľ á¨áŤáłááľáŤ á᪠áá á°áłáá áŤáááá˘
3. á¨áŠá áááľáľ ááŞáá¨ááľ ááá¨áĽ
á¨áá áŁáá á¨áŤáłááľáŤ áááľá°á ááá á áá°á¨áľáŁ áĽá፠á¨á°ááááá áá áá° áŠá áááľáľ á¨áááľ á ááŁá á ááá°ááá áĽáááááĄ-
- áŤáłááľáŤ ááľ â ááľ
- áŤáłááľáŤ áŤá â StatefulSet
- áŤáłááľáŤ áłáłá´áá°á â áá᳠ᨠStatefulSets
- áŤáłááľáŤ áááľá°á â ???
áááá á¨áŤáłááľáŤ áááľá°á á á ááľ áá áááľá°áłá°á á ááłááľ á°á¨á᪠á áŤááľ á áá°ááᢠááá áá á ááľ ááá á¨áá ááááĽá¨á áĽáá˝ááá! áŠá áááľáľ ááá
ááá á¨áŤáąá ááĽáśá˝ á¨áááá˝ áá´ á áá -
ááááἠááľáłááťáá˝ áĽá ááááŤáá˝ á°á¨á᪠áááááŤáá˝á ááá
áá áĽá áŞáśááľ áŤáą ááá áááľ á áá°áá: á¨ááá á áá, áŤáľááááá áááŁá áŞáŤ. áĽááłáł áá á¨á
ááááĽá áá˝ááá˘
4. á¨ááłáá˝ ááá¨áľ
á¨áá áŁáá á ááá˝ á ááľ á¨áŤáłááľáŤ ááľááá ááááľ á áŠá áááľáľ á ááľ ááľ áĽáŠá áĽáá°ááá á°áľááá°ááᢠááá áá á¨ááłáá˝ á áá á áľáŤáťáá˝ á áĽáŤááłááą áá áááŤáŤá. áĽá á áŤáááľáŤ ááľáĽ á¨ááľááá ááááľ áááŤá á á áá á áľáŤáťá áá á¨á°áá°á¨á° áá ... áĽáŤááłááą ááľ á¨á°ááá° á áá á¨áŤáłááľáŤ áááľá°á á á˛áľ ááľááá ááááľ áá¨ááŤáá˘
á ááľ áĽáť áłááá áá፠ááááľ á ááĄ-
- ááááŚá˝á á á áľá°ááá
ááŞáá˝ (áŠá áá˛áá˝ áአá¨áŤáłááľáŤ á ááŁááá˝á á¨áááŠ) ááá á á áá á áľáŤáťáá˝ áááľááἠáĽá áááá á á ááłááľ ááá
áŽá˝/á á¨á´ááá˝ ááľáĽ áá¨áá¸áľ áĽáá˝áááᢠáá´á áááľ áá ááłáśá˝ á ááľ-
- áááľ á áááá˝ á á ááľ áá á¨áá°á á¨áá áááł á¨áá¨á°áľ á á°á. á¨á°ááł á ááᣠáŤáłááľáŤ ááśá˝ á á°ááłáłá áá á¨á áá á áľáŤáťá á¨á á¨á´áá áá áá ááá áĽá áá°ááłáłáŠ áááá፠áááłá°áŤáá˘
- á¨áŤáłááľáŤ ááľ ááᥠá¨á áᣠá¨á áá á áá ááá°á ááá á áá˝ááá˘
- ááá°áá áááľá áĽáá° áľáá˝ á áá áááľááᣠáá á˘áááᥠááĽáŤááłááą á¨áŤáłááľáŤ ááľááá ááááľ á¨ClusterIP áá á áááááľ ááá á áĽáá˝áááᢠá¨áá
áľáá ፠á˝ááŽá˝áĄ-
- á áŤáłááľáŤ áááľá°á ááľáĽ áĽá ááśá˝ áŤá áĽá á áááááśá˝á ááá á á ááĽáá˘
- á¨ClusterIP áŁá
áŞá á¨áá°áá á¨á á iptables á áŠá ááᢠá¨áŤáłááľáŤ áááľá°á áĽá (1000... ááá 100?) á áááá˝ áŤááľ áá
á˝áá ááá áá˝ááᢠá˘ááá
á á áááŞá¤áľ áá á¨á°áá á¨á° áááŁá á áá áá á˝áá áááłáľ áá˝áá.
- áśáľá°áá áááľá á
ááĽáŠá á ááááľ ááŤáłááľáŤ ááśá˝ ááľáááá áá áá áá
hostNetwork: true
. áá áá´ á¨á°áá°á áá°áŚá˝á áŤáľááľáłá-- áááá˝á ááá°áŤáľ. á á˛áą ááľááá ááááľ á¨ááłáá áá á ááľ á áááľ á¨á áá á áľáŤáť ááá¨á áááŁá (áĽáá° AWS ᣠGCP áŁá á°áááá˝ ááľáĽ áá áááľá¨á á¨áááťá áá)á˘
- á¨áááľá°á ááśá˝ ááľáááá á áá áá áááľááá ááĽááśá˝ áááłá°á áĽááááŤááᢠáľááá ᣠá¨á ááľ á áá ááľ á¨áŤáłááľáŤ áá á á ááľ áááľá°á ááľááá ááááľ áá ááľááἠá˝áá áááĽáŤáá˘
5. ááľáŹáá˝
á¨á ááľ á¨áŤáłááľáŤ ááľ ááἠáá áľáŞáľ á áá áááááĽá áá ááľááἠáĽááááááᢠKubernetes á áá áá ááš áŁá
áŞá áŤáááŁá
áŤáłááľáŤ á ááłááľ áá¨ááá˝á á áá á°á¨ áľááľáł ááľáĽ áĽáá°ááŤá¨áá˝ ááľáłááľá ᢠáá ááľáŹ áááľáŤáľáŁ á¨áá á°á¨ áľááľáł áá¨á áŤáľáááááłá (á¨ááľáłááť áááá˝áá° á˛áľá áááą (SSTables). á áá áá á¨áŤáłááľáŤ ááľááá ááááľ áááááśá˝á ááá á áŤááá, á¨áĽá á ááľáĽ áá á áá áááá.
á¨áá á áá ááľáŹá ááááłá (á á˝á á°-ááśáĽá áááááĽáŠ á°ááá§á (ááá áŚáł). áĽá á¨á፠ááľáŹ áĽáť ááá ááá á áá°á áá-á¨áŤáłááľáŤ ááľááá ááááľ á°á áŤá á¨áááá á¨ááἠáááŤáá˝á ááľááἠá ááĽá - áĽááá áአááááśá˝ áá¸áá˘
á¨áŤáłááľáŤ ááśá˝ áááááľ áŤááŁá¸áá áá¨ááá˝ áááá¨áľ á¨áśá¨áá˝ áľáááľ
á áŠá áááľáľ ááľáĽ á¨áŤáłááľáŤ ááľáŹá á¨Google áááá°áľ ááłá áľááŞááľ á áá ááááá˘
set -eu
if [[ -z "$1" ]]; then
info "Please provide a keyspace"
exit 1
fi
KEYSPACE="$1"
result=$(nodetool snapshot "${KEYSPACE}")
if [[ $? -ne 0 ]]; then
echo "Error while making snapshot"
exit 1
fi
timestamp=$(echo "$result" | awk '/Snapshot directory: / { print $3 }')
mkdir -p /tmp/backup
for path in $(find "/var/lib/cassandra/data/${KEYSPACE}" -name $timestamp); do
table=$(echo "${path}" | awk -F "[/-]" '{print $7}')
mkdir /tmp/backup/$table
mv $path /tmp/backup/$table
done
tar -zcf /tmp/backup.tar.gz -C /tmp/backup .
nodetool clearsnapshot "${KEYSPACE}"
á¨á ááľ áŤáłááľáŤ ááľ ááľáŹá áááá°áľ á¨áŁá˝ áľááŞááľ ááłá
ááŤáłááľáŤ ááá áááľááá˝ á áŠá áááľáľ
á á áá áá áŤáłááľáŤ á áŠá áááľáľ ááľáĽ ááá°ááŤáľ áá áĽá á áá áááá áĽá á¨áĽááá ááľáĽ á¨á°á°áĄáľ ááľáááśá˝ ááŤá¨á á¨áľáá á¨á°áťá áá?
1. á StatefulSet ááá Helm áá áłáá˝ áá á¨á°áá á¨áą áááľááá˝
á¨áŤáłááľáŤ áááľá°á áááᾠᨠStatefulSets áá°á¨áłá á°ááŁáŤáľá áá áá áĽáŠ á ááŤá ááᢠᨠHelm chart áĽá Go á áĽááśá˝á á áá áá áŤáłááľáŤá ááá°ááŤáľ áá°á ááá á°áááá á áááá˝ áá á¨áĽ áá˝ááá˘
áá á áĽáááá áá á áĽáŠ áááł áá°áŤá...áŤáá°á á á ááá áĽáľáŞáá á áááłá á¨ááľááá ááá á áááłáŤáľá˘ áá°á á ᨠKubernetes ááłáŞáŤáá˝ á ááá á¨áá á¨á°ááášáľá áááá áŁá áŞáŤáľ áááľ ááľáĽ ááľááŁáľ á áá˝áá. á á°á¨ááŞáᣠáá á áŤááľ áá°ááłá°áĄ á á áááá˝ áá áŤá á ááŤáá áĽáá°áá˝á á áŁá á¨á°áá°á ááᥠá¨ááľááá ááááľ áá°áŤáľáŁ ááľáŹáŁ áááś áááᣠááľáľáᣠááá°.
á°ááŤáŽá˝áĄ-
áááąá áá áłáá˝ áĽáŠá áĽáŠ áá¸á, ááá áá á¨áá áá°ááášáľ á˝ááŽá˝ á°áᢠáá¸á.
2. á áŠá áááľáľ áŚááŹá°á áá á¨á°áá°á¨áą áááľááá˝
áĽáá°ááá áŤááľ á ááŤáŽá˝ á¨á áá á áľá°áłá˝ áá¸á ááááŤáąá áááľá°áá áááľá°áłá°á á°á áĽáľáá˝á áá°áŁá ᢠá¨áŤáłááľáŤ áŚááŹá°áá áááá°áᣠáá áĽáá°ááá ááááá á¨ááἠááłáŁ áĽáŠ áľááá°-áĽááľ áĽáá° Sidecar <-> á°ááŁáŁáŞ <-> á˛á áá˛áĄ áááľááá˘
á áĽáŠ áááł á á°ááá á¨áŤáłááľáŤ áŚááŹá°á ááľáĽ á¨ááľááá ááááľ á áľá°áłá°á áĽá
áľ
ááŁá áŚááŹá°áŽá˝á áĽááá˘
1. áŤáłááľáŤ-áŚááŹá°á ᨠinstaclustr
-
á¨ááá - áááááľ: á áá
- áááľ: Apache 2.0
- á á፠ááľáĽ á°á°ááĽáŻá
áá á áĽááἠá áŁá á°áľá á°á áĽá á¨áá°áłá°á áŤáłááľáŤ áá°ááŤáľá á¨ááŤááἠáŠáŁá፠á¨á°áá ááŽáááľ ááᢠá¨áá áĽáá°á°áááá á HTTP á áŠá áľáááá˝á á¨ááá á á¨áá ááŞá ááŤáŁ áá ááá. á á፠á¨á°ááᣠá ááłááľ áá á¨á°áá á-ááľ á¤á°-áá˝áááľ á¨áá á°ááŁá áááľáááᢠáĽáá˛áá áŚááŹá°áŠ áá ááľ áłáłá´áá°á á¨á°ááŤáŠ áŤáŽá˝á á áá°áááá˘
ááá áá áŚááŹá°áŠ áááľáľá áľááᣠCRD á áá áá á¨áá°á á°á¨á á¨áááľá°á á áľá°áłá°á áĽá ááá áááś ááľáŹ áááľáŤáľ á¨ááŤáľá˝á á°ááśá˝ áŤá áĽá áá˝ á ááľá˘
2. ááŞáá°á á¨ááľáľáłá
-
á¨ááá - áááááľ: á áá
- áááľ: Apache 2.0
- ááľáĽ á°á°ááĽáŻá: Golang
DB-as-a-á áááááľá ááá°ááŤáľ á¨á°áá°á ááááŤá˘ á á áá áá áááľ á¨ááἠááłáá˝á áá°áááᥠElasticsearch áĽá áŤáłááľáŤá˘ á RBAC á áŠá áĽáá° á¨ááἠááł ááłá¨áť ááĽáĽá áŤá áĽáá°áá áŤá á áľá°áłá˝ áááľááá˝ á ááľ (ááá á á¨áŤáą á¨á°áᨠááŞáá°á-á áá°áá¨á á áá)ᢠá á áá áľ ááááá¨áľ á áá á¨áá á áľá°áłá˝ ááŽáááľ, ááá áá á¨áá¨á¨áťá ááá áááľ á¨á ááľ á ááľ á°áŠá á ááľ á°áŤááˇá, áá á áĽáá á˝ááłáá á ááá˝ ááááłá.
3. áŤáłááľáŤ-áŚááŹá°á á vgkowski
-
á¨ááá - áááááľ: á áá
- áááľ: Apache 2.0
- ááľáĽ á°á°ááĽáŻá: Golang
áá° áá¨ááťá á¨áá¨á¨áťá ááá áááľ á¨á ááľ á ááľ á ááľ áľááá ᨠ"á áá ááá" á áľááá á áá°áĄáľá. á¨áŚááŹá°á áááľ á°áľáˇáᥠá¨á áἠááá ᨠKubernetes áľáŞáľ áĽáá° áľáá áŞáááľ á¨á°á°á¨áá 1.9 ááá˘
4. áŤáłááľáŤ-áŚááŹá°á á áŽá
-
á¨ááá - áááááľ: á áá
- áááľ: Apache 2.0
- ááľáĽ á°á°ááĽáŻá: Golang
áááą á áááááá ááĽááľ á¨ááááľ áŚááŹá°áᢠááááľá°á á áľá°áłá°á á ááᣠá¨áłá°á á áľ á¨á˛á áᲠááá
á á ááᣠá áááááľá á¨ClusterIP (á°ááłáłá "á áá") á áá áá á áááá˝á á¨ááá¨áľ á˝ááá áááłá ... áá ፠áá áá áĽáť ááᢠá á áá áá á¨áłáĽá ááľáĽ ááá ááľáľá ááá ááľáŹ á¨áá (á áááŤá˝á áá áĽá áááľáľá áá
ááłá°á˘áŤáĄ- áá áá áŚááŹá°á á áľáá˝ ááťáťáŤ á á ááľ ááŽáááłá˝á ááľáĽ á°á á ááá áłáᢠá á á ááá á¨áĽáŤ áá (~ 4 ááŤáľ áĽáŤ) á áŚááŹá°áŠ áĽáŤ ááľáĽ ááá á˝ááŽá˝ á áá°áľá°ááá.
5. CassKop á¨áĽááąáŤá
-
á¨ááá - áááááľ: á áá
- áááľ: Apache 2.0
- ááľáĽ á°á°ááĽáŻá: Golang
á áááአáá áľááš áŚááŹá°áᥠá¨ááááŞáŤá ááá áááľ á¨á°á°á¨áá á áá 23ᣠ2019 ááᢠááľááá á áá á áŚá áŚáŠ ááľáĽ á¨ááááŤá˝á ááľáĽ áĽá ááĽá áŤáá¸á áŁá
áŞáŤáľ á ááľ, á°á¨á᪠ááááŽá˝ á ááŽáááą áá¨ááť ááľáĽ áááá. áŚááŹá°áŠ á¨á°áááŁá á áłááá áŚááŹá°á-sdk áá áá. á¨áłáĽá áá ááľáľáá áá°áááᢠá¨ááá˝ áŚááŹá°áŽá˝ ááá ááŠááľ á á ááá áá
áááśá˝
áŤáłááľáŤá áá° áŠá áááľáľ ááááá á¨á ááŤá¨áĽ áĽááľ áĽá ááá á¨áá˝á á ááŤáŽá˝ ááŤáą ááááŤáᥠáááą á°ááá ááá˘
á áá á°á¨á, á¨áá á¨á°á ááąáľá ááá¸ááá á áŤáľá á á°á áĽá á á°á ááá¨á áá˝áá-á¨ááá˘áá˝ ááľáĽ á ááłá¸áá 100% á¨áááľáá¸áá á¨áááľ á áŤáŁá˘ ááľáľá á áá°áĄá. áá ááľááá ᣠáĽá áááśá˝ á áĽáľááľ ááá áŽá˝ ááľáĽ ááá áá áááá¨á á°áľá á°á áááľáá á˘
áá°ááľ áá á˝ á´áľ á ááá¨áĄ áá á¨ááľáá áááľááá!
PS
á áĽááá˝á áá áŤááĽáĄáĄ-
- ÂŤ
áĽáá¨á á¨áá˝ á¨áááá˛á˘ ááá°áľ áá° áŠá áááľáľ "; - ÂŤ
áĽáá¨á á¨áá˝ RabbitMQ áá° áŠá áááľáľ ááá°áľ "; - ÂŤ
á¨ááἠááłáá˝ áĽá áŠá áááľáľ (á¨áááá áĽá á¨áŞá˛áŽ áááŁ) "; - ÂŤ
á¨K8s á áá áááŽá˝ áĽá áá´áá˝áĄ ááľáá á¨ááἠááłáá˝ áĄáľáľáľáŤáá ááá á Âť.
ááá: hab.com