 All right, let's get started. This is a joint presentation with Tessora and Codership. My name is Sakari Keskitalo and I'm working for the Codership, the developers and experts of Galera cluster. So what is Galera cluster? Galera cluster provides mySQL high availability and scalability. We provide 24-7 service and application availability. There is no data loss, no transaction loss. There is no single point of failure in the Galera cluster. You can scale up easily in Galera cluster by adding more and more nodes. You can get more performance and scale for the future. Galera cluster is so-called active-active multi-master cluster. Meaning that you can read and write from any of the databases. And we guarantee that you have an identical copy of database each time. It is based on synchronous replication. We can provide elasticity that the cloud needs. You can scale in, you can scale out. You can add new Galera nodes on the fly and provisioning is automatic. Galera works in LAN, in private networks and it works in wide area networks and it works in the cloud. This has been implemented hundreds of times in the cloud already. We can say that Galera is the most popular open stack infrastructure, high availability solution. To prove this fact, we have recent survey from the open stack community, which says that Galera has been used a lot with the MySQL, with the MariaDP and with the Percona, which is another variant of Galera cluster. 35% altogether of MySQL users or MariaDP users or Percona users are using Galera cluster for the Keystone, Nova, Neutron metadata. We are very excited about the latest development in open stack. Galera cluster now has been supported by TRO, our friends at the Tesora, HP and Red Hat has been contributing a lot to this and now we can fire up Galera clusters with TRO. With that, I would like to introduce Doug Shelly from the Tesora to show you some interesting demonstration. How do you actually do fire up Galera cluster with TRO? Thank you, sorry. Hi everybody. As he said, I'm Doug Shelly, VP of Product Development at Tesora. What I want to talk about specifically is the work that's been done recently to integrate Galera cluster into TRO. I know many of you are probably, as Sakari talked about, running Galera cluster under your open stack infrastructure database, which provides you with all the benefits he talked about. What we've done recently is brought those benefits into the database as a service component of open stack, and that's what I'm going to talk about. I wanted to start out and level set with everybody on what TRO is to make sure we're on the same page. As I said, this is database service for open stack. It does provisioning, so you can launch new database instances. I think right now we support about 13 different database types, no SQL, cross no SQL, and SQL databases. As we're going to show today, it supports some complex database technologies, topologies such as clustering, which I'm going to show you, and replication. There's lots of automation within the project. It supports backup and restore. There's failover and resize cluster sizing mechanisms. As I mentioned, multiple database technologies. There's a management interface, so I'm going to demonstrate the horizon dashboard for you today with clustering. I'm also going to show you the CLI so you can get a sense for what that API for Galera clusters looks like. Just a little more details on this. The intention here isn't provisioning as a database as a service. This is provisioning and life cycle management. The entire cycle here. You can do provisioning as I talked about. Then there's security things. Part of the provisioning is that users and permissions can be managed. Root access can be restricted. There's also ways to tune the databases when they're running. There's lock file management. The configuration group feature allows you to set database-specific parameters in a way that makes sense. Then there's management. You can manage databases and schemas. Then you can set up replication, high availability, and you can back up and restore these databases. Over the last few years, really evolved the TROVE project to truly support multiple data stores. The architecture supports this. Some of the data stores we support are on the right there. The control plane, which is in the middle there, the API task manager and conductor, is generally database agnostic. The database-specific code is in a guest agent that basically represents a specific type of database and runs next to the database engine to do the provisioning and life cycle management as you'd expect. As I mentioned, we also are part of the horizon project. There's a dashboard for the database project that shows up when you have it enabled. You can do all the management provisioning via the UI. This is a little bit of a deeper dive into the architecture I just wanted to touch on a bit. Basically, TROVE is a consumer of many open-stack services. It sits on top of them. It actually hits them through the public rest endpoints. For example, when you go to provision a new database instance, you basically come in. You see the blue dot there. You come into the TROVE API and you basically hit the Create API. What it basically does is tells NOVA to boot a particular image out of the glance storage into a NOVA instance. It attaches a cinder volume to it, provisions that for where the database of the particular data store is going to end up. Neutrons involved in that you can basically put the database on a tenant-specific network if you want. Then when it's running, you see there on the left TROVE guest agent. That's the piece of code I talked about that is database-specific. Then on the instance is obviously the actual database software and the storage where the data lives. Then once all that's done, you hit the database with your application coming in through the database native API. TROVE is not in the middle of the access between your application and the database. I want to jump right into clustering because that's why Sakari invited me here today. Just a glimpse at some of the command line interface for clustering. This is designed to be data store agnostic like everything else. I'm going to do a demonstration where I bring up a Galera cluster, but we also support clustering for Cassandra, Couchbase, Mongo, Redis, PerconaX, or DB cluster, which is also Galera. The API is intended to span all these different data store types and provision them in a proper way. First thing you would do, you want to bring up a cluster. You just do TROVE cluster create and then you tell it a name, a cluster, and you say, I want to MariaDB 10.1. Then the API allows you to specify some specifics about your cluster. I want to use Flavor 100, which is a flavor that would specify the BCPUs and RAM. The volume is how big you want the data volume to be that is going to attach. You can basically, for initial provisioning, provide as many of those as you want. That'll go off and spin up a cluster, save with three nodes if I put three instance parameters on it. Once it's up, you can do TROVE list and tell it you want to see the clustered instances. It'll dump you at a list of the three instances that you just provisioned. Then some interesting commands here. Sakari talked about scaling your cluster, scaling out and scaling in. That's basically mapped into our TROVE cluster grow and TROVE cluster shrink APIs. Basically on a running cluster, you can say TROVE cluster grow, your cluster name, and give it a list of instances. In this case, I'm going to grow this cluster by one instance. Now I have, say, four instances of my cluster. Similarly, you can shrink it. You just do TROVE cluster shrink, you give it the name, target that UUID is the ID of an instance, and it'll basically knock that instance out of the cluster. That's kind of how this looks from the command line interface. I just wanted to do a quick demo here. Let me just, yeah, that come up. This is horizon with the nice to sore theme on it, as you can see. I'm just going to sign in here. Okay, so we're going to go, you should recognize this. Looks like every other horizon demo, I'm sure. So we're going to go into the panel there. You see the databases panel. I'm going to just show you some things here. So you're going to see that TROVE has this concept of data stores and data store versions. So this represents the database types that you want to control. Ultimately part of the configuration of this is that the data store version maps down to a glance image ID, so that's how it knows what image to boot on the NOVA instance. So you can see it. Oh, well that's the, let me just back that up. This is a video because it's a lot easier to do than a live demo. Okay. So one of the value adds that to SOAR provides as part of our enterprise edition Dbass platform is we basically create images for you that you get as part of the product. And we basically test them and certify them, right? You can certainly create your own images, but this is one of the value adds that we provide. So this, in this demo, this Maria image is the one we ship. So let's just go ahead here. We're going to go over to the clusters panel. So this would be a list of running clusters in your tenant. I don't have any at the moment. So we're going to just go here and see. We're going to launch, push the launch cluster button. So it's going to come up with this panel, which basically should look, it's asking for similar information that I showed you that was in the command line interface, right? So we're going to, we're going to give it a name. How fast I type. We're going to pick a data store. Now, there's not anything significant about there's two there other than I was, you know, doing some testing. But basically, I just loaded two different versions of the data store and so I was also testing this new feature we have that allows you to upgrade a running instance. So that's why there's two there. But I'm going to just pick this Maria 10.1. I'm going to pick a flavor, tiny. I'm going to say I want a one gig volume. Now this is another new feature that's kind of going into the project. The ability to specify hypervisor affinity. So you can basically tell it whether you want, whether you care about affinity. And if you do whether you want it to be the cluster to be built out on one hypervisor or you want the cluster to span hypervisors. So that's that. And then you basically pick the number of instances. Now at this point in the UI, this, we're specifically had causing it to launch a homogeneous cluster. So you noticed in the CLI you could actually, you know, say I want this flavor, this instance. In certain clusters that just doesn't make any sense. So it's basically been abstracted such that you're just saying, I want three nodes. They're all going to end up being with a one gig volume and they're all trove tiny. Affinity, anti affinity, or I don't care. Of our product? One seven. Actually, that's a very good question. So right now, the question was what version is all this stuff in. This demo is on Tesora one eight, which is actually in development right now. And that's because the Maria Galera work is in our one eight version, which is going to ship in a few weeks. The upstream work for Galera with Maria was done in Mataka. So it's in the Mataka release. It will be. We're in the process of pushing all that upstream now. The question was, is the affinity, anti affinity in the upstream? Not in Mataka, it will be in Newton. Okay, let me just go on here. So basically I filled in all the things I want, three node cluster, I'm going to push launch. And here we go, it's launching. So you can see, says it launched it. It's in the process of building. You got that nice blue bar there going. So there now you can see that it's basically done building, it's up. Okay, so this cluster at this point, you can connect to it with your application and do stuff to it, put data in it. So I'm going to show you, drill into it. If you click on the cluster, it's basically a show command. So you can see that it tells you the, an IP address you can connect to. At this moment, we're not provisioning any load balancer on top of this. That's certainly been discussed, but that's not in this version at the moment. So it's basically picking one of the instances and says, here's an instance IP, it gives you a connection example from the MySQL command line. And then we can click on the instances tab and it's going to show us a list of the instances. So there's the three instances that spun up. Those are Nova instances running MariaDB with Galera configured. You can see all the IPs and stuff like that. Okay, now we're going to, now let's scale it. So to scale it, you'll see on the right hand side, there's a drop down. We're going to hit grow. And it's going to pop up a panel here that we're basically going to add instances to. So similar to launch, you're filling in, you know, the flavor and the size you want. Give it a name. The instance type and related to fields that popped up there. There, I believe those, some clusters are heterogeneous like Mongo. So those fields are actually more relevant to Mongo and I guess we didn't pull them out of the Maria panel, but they're not relevant to Maria. Okay, so we're going to fill this in and we're going to hit add. And you basically hit add as many times as you want to grow, you know, how many instances you want to add to this cluster and then when you're done, you just hit grow and it'll go off and add whatever you put in there. So I added one node, so we're going to go off. So now it's basically doing a build out with adding that new Nova instance into the cluster and reconfiguring the cluster to now four instances. Okay, so now that's there. It's done. You can see now there's four instances. IP information is the same. So now we're going to shrink it. And again, there's a, in the dropdown, just pick shrink. It's going to pop up and ask us, who do we want to get rid of? So we're just going to click on somebody and there we're going to shrink out number three. So it'll go into a build state like shrink cluster and then when it's, you see it says shrinking cluster and then when it's done, we'll see that that instance is gone. That's a good question. I don't know the answer. When it's doing grow and shrink, is it usable? I'm not sure. Come to our booth later on to be forward. Put the non-techie guy in the spot. That's a good question, Matt. Okay, so we now, it's done the shrink and you see now there's three instances in it and I'll just go in there and show you there's three now. So I think that's, oh no, one last thing. You can delete it, the whole thing. You can just shoot the whole cluster, so I'm going to just show you that now. So on the dropdown, there's a delete cluster. In true cloud form, this little cattle pets thing, right? So we don't like this cluster anymore. We just shoot it. So it's going to do delete, go into a build state and then it'll be gone. So I can, I had a minute 20. I can take questions and then we can talk offline. So one of the things, Galera's booth is over here. Do you know the number? B for 18. And we're in A26 over there to Sora. Stop by. We're here for another two hours, I guess, right? Matt, there was a question of Max scale. Maria DP is working on a Max scale and Galera working together. So it's in a pretty good shape at the moment. You can use Max scale with Galera itself. What kind of configuration management do we use to grow and shrink clusters? It's built into Trove, right? So you're saying, are we using like Ansible or Puppet or something? No. Yeah. So that's the role of the guest agent, right? So when we spin up the instances, they have a little bit of Python code on them that knows how to talk, Maria, in this case. And that's what's being communicated with from our control plane and it's poking it and saying do this or whatever, right? Thank you everybody. Thank you everybody. Thank you.