Quomodo aedificare nubem hybrida utens Kubernetes qui reponere DBaaS

Nomen meum est Petr Zaitsev, ego CEO, conditor percona et volo tibi dicere;

  • quomodo venimus a fonte aperto solutiones Database ut servitii;
  • quae sunt aditus ad explicandam nubem datorum;
  • quomodo Kubernetes substituere potest DBaaS, venditorem dependentiam remotis et simplicitatem DBMS in servitio conservandam.

Articulus paratus est secundum relationem @Databases Meetup per Mail.ru Cloud Solutiones & Tarantool. Si non vis legere, spectare potes;


Quomodo e fonte aperto ad Database ut servitii in nube venimus?

In fonte aperto laboravi cum nuper 90s. Viginti abhinc annis, aperto fonte usus, sicut databases, tam facilis erat. Oportebat ut fontem codicem prehenderem, repeciare, compilare et tum demum uti.

Fons apertus igitur per simplificationum seriem transivit;

  • Tar.gz, & conaugurari fontes , qui compigantur ;
  • fasciculi cum dependentiis sicut .deb et .rpm, ubi tantum opus fasciculorum instituere debes;
  • involucrum repositoria ut APT et YUM, cum quibus installation est automatic;
  • solutiones ut Docker et Snap, quae sarcinas per institutionem sine dependentiis externis recipere permittunt.

Quam ob rem facilior fit programmate aperto fonte utendi et impedimentum etiam demittit ut in huiusmodi applicationes enucleetur.

Eodem tempore, dissimilis condicionis XX annos, cum omnis conventus peritus erat, nunc plerique tincidunt instrumenta quae a fonte utuntur non possunt aedificare.

Non enim hoc malum est, quia;

  1. Pluribus uti possumus sed programmate usoris amicabili. Exempli gratia, navigatrum opportunum est ad usum, sed multa principia aperta comprehendit et incommodum est aedificare a scabere.
  2. Plures fieri possunt tincidunt aperti fontis et alia programmatis, plus luctus in negotiis, et maior necessitas.

Declinatio est quod proximus gradus simplicitatis coniungitur cum usu solutionum nubis, et hoc ducit ad quemdam cincinnum venditorem, hoc est, ligamen ad unum supplementum. Simplicibus solutionibus ac provisoribus utimur, componentibus patentibus, sed uni magnarum nubium affixi sunt. Hoc est, via facillima et velocissima ad fontem apertum (et programmata compatibilis) explicandi, est in nubibus, proprietatis API utens.

Cum fit in nube databases, duo sunt aditus;

  1. Congrega infrastructuram datorum, sicut in centrum datorum regularium. Hoc est, regulas aedificandi caudices accipe: computa, repone, et sic porro, Linux et datorum in eis institue et configurare eas.
  2. Utere Database ut servitii, ubi provisor datorum promptum datorum intra nubem offert.

DBaaS nunc mercatus celeriter crescens est quod tincidunt recta operare cum databases et opus exercitationis regit. Provisor suscipit curare High Availability ac faciles scalas, database patching, tergum, ac perficiendi tuning.

Duo genera Database ut servitii in aperto fonte fundantur et alterum in forma Kubernetes

Duo sunt genera Database ut servitii databases apertis:

  1. Vexillum apertum fons productum sarcina in administratione backend pro facili instruere et administratione.
  2. Solutio commercialis provecta cum variis additionibus, compatibilis cum fonte aperto.

Utraque optiones possibilitatem migrationis inter nubes minuunt et portabilitatem notitiarum et applicationum minuunt. Exempli gratia, non obstante quod diversa genera nubium eandem rationem MySQL essentialiter sustinent, significant differentias earum: in operatione, observantia, tergum, et sic porro. Migratio ab una nube in aliam potest provocare, praesertim applicationes complexas.

Hic oritur quaestio - an commoditatem Database ut servitii obtinere possit, sed ut solutio simplex fons aperta?

Malum nuntium est quod, proh dolor, in foro non sunt tales solutiones. Bonum nuntium est Kubernetes esse, quod permittit ad eiusmodi solutiones efficiendas.

Kubernetes systemate operante ad nubem vel centrum datae, quod permittit te disponere et administrare applicationem per plures ministros in botro potius quam in uno exercitu.

Nunc Kubernetes princeps est in tali programmatum genere. Multae solutiones talium quaestionum fuerunt diversae, sed signum facta est. Multae societates quae solutiones alternae intendunt intendunt nunc in aptandis fructibus ad Kubernetes adiuvandos.

Praeterea Kubernetes solutio universalis est quae in privatis, publicis et hybridis multorum mercatorum nubibus sustentatur, exempli gratia: AWS, Google Cloud, Microsoft Azure, Mail.ru Cloud Solutions.

Quomodo Kubernetes operatur cum databases

Kubernetes ad applicationes publicas quae processus notitiarum processuum initio dispositum est, nihil tamen reponunt, sicut microservices vel applicationes interretiales. Database in altero spectri fine, id est, applicationes statales sunt. Et Kubernetes ad huiusmodi applicationes non initio destinatus est.

Sunt tamen notae quae in Kubernetes nuper apparuerunt, quae usum databases et alias applicationes publicas admittunt;

  1. Conceptus StatefulSet est tota series primitivorum ad processum eventuum de opere siliquarum claudendo et exsequenda deliciarum Shutdown (praedictio shutdown applicationis).
  2. Volumen pertinax notitia promptuaria sunt quae cum legumine, rerum administratione Kubernetes coniunguntur.
  3. Operator Framework - hoc est, facultas componentes creandi ad databases administrandi et alias applicationes statas per multas nodos distributas.

Iam nunc in nubibus publicis magnae Databases sunt servitiae, quarum posterior Kubernetes est, exempli gratia: CockroachCloud, InfluxDB, PlanetScale. Id est, database in Kubernetes non solum est aliquid theoretice possibile, sed etiam aliquid quod in praxi operatur.

Percona duas solutiones apertas pro Kubernetes habet:

  1. Kubernetes Operator pro Percona Servo pro MongoDB.
  2. Kubernetes Operator pro XtraDB CLUSTER servitium est quod cum MySQL compatitur et altam promptitudinem et constantiam praebet. Uno nodo uti etiam potes si prompta facultas non est necessaria, exempli gratia pro database dev.

Utentes Kubernetes in duos circulos dividi possunt. Nonnulli operarii Kubernetes directe utuntur - hi sunt maxime utentes provecti, qui bonam habent intelligentiam quomodo opera technologiae operantur. Alii currunt in backend - tales usores sunt in re quasi Database ut servitii, nolunt eas in Kubernetes extenuare. Secundum coetus utentium, habemus aliam solutionem apertam fontei - Percona DBaaS CLI Tool. Haec solutio experimentalis est iis qui fontem DBaaS apertum in Kubernetes sine alta technologiarum cognitione acquirere volunt.

Quomodo currere Perconae DBaaS on Google Kubernetes Engine

Google Kubernetes Engine, ut mea fert opinio, unum e technologia Kubernetes exsecutioni maxime functionis est. Praesto est in multis mundi regionibus et simplex et opportunum instrumentum Imperii Lineae (SDK), quod permittit te scripta creare quam manually suggestum administrare.

Ut nostris DBaaS ad operandum, sequentia membra indigemus;

  1. Kubectl.
  2. Google Nubes SDK.
  3. Percona DBaaS cli.

install kubectl

Instruimus sarcinam pro operando systemate, exemplum Ubuntu videbimus. More details hic.

sudo apt-get update && sudo apt-get install -y apt-transport-https gnupg2
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee -a /etc/apt/sources.list.d/kubernetes.list
sudo apt-get update
sudo apt-get install -y kubectl

Installing Google Cloudm SDK

Involucrum programmatum eodem modo instituimus. More details hic.

# Add the Cloud SDK distribution URI as a package source
echo "deb [signed-by=/usr/share/keyrings/cloud.google.gpg] 
http://packages.cloud.google.com/apt cloud-sdk main" | sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list

# Import the Google Cloud Platform public key
curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key --keyring /usr/share/keyrings/cloud.google.gpg add -

# Update the package list and install the Cloud SDK
sudo apt-get update && sudo apt-get install google-cloud-sdk

Installing Percona DBaaS CLI

Ex Percona repositoria instrue. Percona DBaaS CLI Instrumentum adhuc productum experimentale est, quod in reposito experimentali situm est, quod separari potest, etiamsi iam repositoria Percona inaugurata sunt.

Read more hic.

Algorithmus instruitur:

  1. Percona repositoria utens instrumento dimissionis perconae constitue. Primum debes percona-religere sarcinam e Percona emittere et instituere officialem:
    wget https://repo.percona.com/apt/percona-release_latest.generic_all.deb
    sudo dpkg -i percona-release_latest.generic_all.deb
  2. Admitte experimentum instrumentum repositorii componentis hoc modo:
    sudo percona-release enable tools experimental
    
  3. Instrue sarcinam percona-dbaas-cli;
    sudo apt-get update
    sudo apt-get install percona-dbaas-cli

Operatio autem components est profecta

De occasus hic.

Primum in Google rationem tuam inire debes. Praeterea, Google Cloud unum usorem permittit habere multa incepta independentia, quare debes denotare opus projectitionis utendi signum huius incepti:

gcloud auth login
gcloud config set project hidden-brace-236921

Deinceps botrum creamus. Pro demo, botrum trium nodis Kubernetes creavi - hoc minimum requiritur ad altam facultatem;

gcloud container clusters create --zone us-central1-a your-cluster-name --cluster-version 1.15 --num-nodes=3

Praeceptum kubectl sequentia privilegia desiderata nostro usori nostro dat:

kubectl create clusterrolebinding cluster-admin-binding-$USER 
--clusterrole=cluster-admin --user=$(gcloud config get-value core/account)

Spatium spatii creamus et activam facimus. Spatium spatii, dure loquendo, etiam sicut inceptae vel ambitus, sed iam intra glomerulos Kubernetes est. Est independens a Google inceptis Nubis:

kubectl create namespace my-namespace
kubectl config set-context --current --namespace=my-namespace

Satus botri

Cum hos paucos gradus perreximus, tres nodi glomerati cum simplici hoc mandato proficisci possumus:

# percona-dbaas mysql create-db example
Starting ......................................... [done]
Database started successfully, connection details are below:
Provider:          k8s
Engine:            pxc
Resource Name:     example
Resource Endpoint: example-proxysql.my-namespace.pxc.svc.local
Port:              3306
User:              root
Pass:              Nt9YZquajW7nfVXTTrP
Status:            ready

Quomodo coniungere ad botrum?

Defalta tantum in medio Kubernetes praesto est. Id est, non adeunda est ab hoc servo unde iussisti "Cre". Ut praesto sit, exempli gratia, cum cliente probat, debes portum per Portum Mapping transmittere:

kubectl port-forward svc/example-proxysql 3306:3306 $

Deinde iungo MySQL clientem tuum:

mysql -h 127.0.0.1 -P 3306 -uroot -pNt9YZquajW7nfVXTTrP

Provectus botri procuratio imperat

Database in publico IP

Si solutionem magis permanentem pro botris disponibilitate vis, externam IP inscriptionem accipere potes. Hoc in casu, alicunde promptum erit datorum. Hoc minus securum est, sed saepe commodius. Ad externa IP hoc mandato utimur:

# percona-dbaas mysql create-db exposed 
--options="proxysql.serviceType=LoadBalancer"
Starting ......................................... [done]
Database started successfully, connection details are below:
Provider:          k8s
Engine:            pxc
Resource Name:     exposed
Resource Endpoint: 104.154.133.197
Port:              3306
User:              root
Pass:              k0QVxTr8EVfgyCLYse
Status:            ready

To access database please run the following command:
mysql -h 104.154.133.197 -P 3306 -uroot -pk0QVxTr8EVfgyCLYse

Expressis verbis posuit Tesseras

Loco systematis passim tesseram generandi, signum expresse imponere potes:

# percona-dbaas mysql create-db withpw --password=mypassword
Starting ......................................... [done]
Database started successfully, connection details are below:
Provider:          k8s
Engine:            pxc
Resource Name:     withpw
Resource Endpoint: withpw-proxysql.my-namespace.pxc.svc.local
Port:              3306
User:              root
Pass:              mypassword
Status:            ready

Librum scriptorum in forma readable humano ostendo, sed forma JSON adiuvatur.

Conversus off altus disponibilitate

Praecepto sequenti in promptu disponibilitatem unam nodi explicandi potes:

# percona-dbaas mysql create-db singlenode 
--options="proxysql.enabled=false, allowUnsafeConfigurations=true,pxc.size=1"
Starting ......................................... [done]
Database started successfully, connection details are below:
Provider:          k8s
Engine:            pxc
Resource Name:     singlenode
Resource Endpoint: singlenode-pxc.my-namespace.pxc.svc.local
Port:              3306
User:              root
Pass:              22VqFD96mvRnmPMGg
Status:            ready

Solutio haec est probationis munerum ut MySQL ascendat et quam celerrime ac facilius currendo, illam experiatur, et deinde eam claudat vel ad progressionem utatur.

Instrumentum Percona DBaaS CLI adiuvat ut solutionem in Kubernetes perficias DBaaS-similem. Eodem tempore in eius functione et usabilitate laboramus.

Haec fama primum est @Databases Meetup by Mail.ru Cloud Solutions & Tarantool. Vide Π²ΠΈΠ΄Π΅ΠΎ alias res gestas subscribunt et denuntiationes in Telegram Circum Kubernetes apud Mail.ru Group.

Quid est aliud in argumento legere;

  1. Database in modern IIOT suggestu.
  2. Quomodo eligere database consilium ut iterum eligere non debes.

Source: www.habr.com