deploying distributed databases and in-memory …...© 2018 gridgain systems, inc. gridgain company...
TRANSCRIPT
©2018GridGainSystems,Inc. GridGainCompanyConfidential
Deploying Distributed Databases andIn-Memory Computing Platforms with Kubernetes
Denis MagdaGridGain Product ManagementApache Ignite PMC Chair
©2018GridGainSystems,Inc. GridGainCompanyConfidential
Agenda
• DeploymentSpecificitieswithKubernetes• Memory-OnlyDeployments• StatefulDeployments• ManagementandMonitoring• Demo• Q&A
©2018GridGainSystems,Inc. GridGainCompanyConfidential
DeploymentSpecificitieswithKubernetes
©2018GridGainSystems,Inc. GridGainCompanyConfidential
DistributedDatabaseSpecificities
• Databaseisasetofpods– IPsareassigneddynamically– Auto-discoveryisneeded
• ApplicationsDeployment– WithinKubernetes?– NotmanagedbyKubernetes
• StatelessorStateful?
©2018GridGainSystems,Inc. GridGainCompanyConfidential
DatabasePodsAuto-Discovery
• KubernetesLookupService– TracksalistofallIgnitepods– Gatewayforremoteapps
• KubernetesIPFinder– ConsumesIPsfromtheservice– Let’snodetojointhecluster
©2018GridGainSystems,Inc. GridGainCompanyConfidential
ServiceStartupapiVersion: v1kind: Servicemetadata:
name: ignitenamespace: ignite
spec:type: LoadBalancerports:
- name: restport: 8080targetPort: 8080
- name: sqlport: 10800targetPort: 10800
- name: thinclientsport: 10900targetPort: 10900
selector:app: ignite
kubectl create -f ignite-service.yaml
©2018GridGainSystems,Inc. GridGainCompanyConfidential
IPFinderConfiguration
<bean class="org.apache.ignite.configuration.IgniteConfiguration"><property name="discoverySpi">
<bean class="org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi">
<property name="ipFinder"><bean class=”
org.apache.ignite.spi.discovery.tcp.ipfinder.kubernetes.TcpDiscoveryKubernetesIpFinder"><!-- Assumed that RBAC is configured for `ignite` namespace. --> <property name="namespace" value="ignite"/>
</bean></property>
</bean></property>
</bean>
©2018GridGainSystems,Inc. GridGainCompanyConfidential
Memory-OnlyDeployments
©2018GridGainSystems,Inc. GridGainCompanyConfidential
Memory-Centric StorageScale to 1000s of Nodes & Store TBs of Data
Ignite Native Persistence(Flash, SSD, Intel 3D XPoint)
Third-Party PersistenceKeep Your Own DB
(RDBMS, HDFS, NoSQL)
SQL Transactions Compute Services MLStreamingKey/Value
IoTFinancialServices
Pharma &Healthcare
E-CommerceTravel & LogisticsTelco
ApacheIgniteOverview
©2018GridGainSystems,Inc. GridGainCompanyConfidential
IgniteMemoryUsageModes
Mode Description Major Advantage
In-Memory Pure In-Memory Storage Maximum perfomance possible(data is never written to disk)
In-Memory + 3rd Party DB Caching layer (aka. in-memory data grid) for existing databases – RDBMS, NoSQL, etc
Horizontal scalabilityFaster reads and writes
In-Memory + Full Copy on Disk The whole data set is stored both in memory and on disk Survives cluster failures
100% on Disk + In-Memory Cache 100% of data is in Ignite native persistence anda subset is in memory
Unlimited data scale beyond RAM capacity
©2018GridGainSystems,Inc. GridGainCompanyConfidential
IgniteasKubernetesDeploymentEntityapiVersion: extensions/v1beta1kind: Deploymentmetadata:
name: ignite-clusterspec:
replicas: 2template:
metadata:labels:
app: ignitespec:
containers:- name: ignite-node
image: apacheignite/ignite:2.5.0env:- name: OPTION_LIBS
value: ignite-kubernetes- name: CONFIG_URI
value: URL_TO_CONFIGports:...
kubectl create -f ignite-deployment.yaml
©2018GridGainSystems,Inc. GridGainCompanyConfidential
StatefulDeployments
©2018GridGainSystems,Inc. GridGainCompanyConfidential
StatefulDeployments
• DurabilityWithStatefulSet– Datapersistencetodisk– Orderedrestarts
• SeparateVolumesfor– Dataandindexes– WAL(akaTransactionLog)– Snapshotsandbackups
apiVersion: apps/v1beta2kind: StatefulSetmetadata:
name: ignitenamespace: ignite
spec:selector:
matchLabels:app: ignite
serviceName: ignite...
volumeMounts:- mountPath: "/data/ignite"
name: ignite-storagevolumeClaimTemplates:- metadata:
name: ignite-storagespec:
accessModes: [ "ReadWriteOnce" ]resources:
requests:storage: 1Gi
©2018GridGainSystems,Inc. GridGainCompanyConfidential
ClusterActivation
• ManualActivationonFirstStart
kubectl exec -it ignite-0 --namespace=ignite -- /bin/bashcd /opt/ignite/apache-ignite-fabric/bin/./control.sh --activate
• AutomaticActivationonRestarts– Baselinetopologyusage
©2018GridGainSystems,Inc. GridGainCompanyConfidential
ManagementandMonitoring
©2018GridGainSystems,Inc. GridGainCompanyConfidential
K8DashboardandIgniteWebConsole
• KubernetesDashboard– ForKubernetesenvironment
• IgniteWebConsole– ForIgnitecluster– DeployWebAgentinK8
©2018GridGainSystems,Inc. GridGainCompanyConfidential
Demo
©2018GridGainSystems,Inc. GridGainCompanyConfidential
ApacheIgnite– We’reHiring;)
• VeryActiveCommunity• GreatWaytoLearnDistributedComputing• HowToContribute:
– https://ignite.apache.org/
©2018GridGainSystems,Inc. GridGainCompanyConfidential
AmongTop5ApacheProjects
Top5byCommits
1. Hadoop2. Ambari3. Camel4. Ignite5. Beam
Top5DeveloperMailingLists
1. Ignite2. Kafka3. Tomcat4. Beam5. James
Over1Mdownloadsperyear
Top5UserMailingLists
1. Lucene/Solr2. Ignite3. Flink4. Kafka5. Cassandra
©2018GridGainSystems,Inc. GridGainCompanyConfidential
Thank you for joining us. Follow the conversation.https://ignite.apache.org
https://gridgain.com/
Q&A
@denismagda#apacheignite#gridgain