 Hello everybody. My name is Doug Shelley. I'm the VP of product development at to Sora we're here today to do an introduction of Trove and Demonstrate a multi database deployment with it and to help me do that. I'd like to introduce Michael Baz Knight He was the former Ptl the Trove project and as a core member. So Take it away Michael. Thank you so Just to give you guys a little bit of history I've been working with Trove since we started it at rack space a few years ago I've been you know before we were incubated acting Ptl The entire time and I just recently stepped down another fella from HP slick Nick is now the Ptl so today we're gonna talk about first what Trove is give you a little intro and Then Doug's gonna go into how to install it a look at the API and the demo so We all know what traditional database management looks like it looks a little like this, right? You've got all these different things all these different data stores and There's everyone has their own scripts that they've written to to run their infrastructure and and you you have a set of users that Are going to be doing a ton of these as well And you have a lot of automation built in and what Trove is is we we want to build a system That takes all of this spaghetti and turns it into a nice API for users to use and for operators to deal with So what exactly is Trove first and foremost is an API and implementation for data database data store management in the cloud so It it also automates admin tasks. So Trove in its in its heart is Exactly what you'd think you'd want from not having to deal with a database, right? You just want to fire it off forget it. You want to make sure it runs You want to make sure it stays running you want to make sure you can upgrade it resize it You know scale it Deal with a high availability multi-tenancy And efficiency of resources you don't want to have to worry about bad neighbor effects. You don't want to have to deal with Someone else clobbering your data store in a multi-tenancy environment So We leverage open stack of course so we we use open stack is kind of a black box You don't have to you don't have to run your own infrastructure You can you can stand up trove if you want and talk to an existing open stack infrastructure You can run it all yourselves. So we use Nova to do, you know all of the actual compute If you choose to use sender for block storage, you can you can set up volumes that way and put your data there Neutron for networking and we we also use Swift for backups to dump You know dump a my sql dump or what some other backup to Swift so customers can then get it out if they want to But also for long-term storage and retention and glance for the images That you know, we have a custom image that typically already has a specific data store installed on it So you don't have to really manage that at all either. It's got a fully functional REST API It's and a dedicated guest agent so In dealing with Open stack as a black box. We can't really put Something on a compute host right to manage A set of a hundred get a hundred data stores. So we've got a small guest agent that sits within each Virtual machine and we talked to the guest and the guest does all the Communication to the database the health checks making sure you know, we're still online Does the resizes create users and all of those all of that spaghetti stuff? We talked about so it's also designed with Plugability when we started we were my sql. We built the system so that we could be Anything sql or no sql. So as we've as we've grown for the last six months to a year We went from literally my sql to my sql couch base Redis Cassandra, Mongo. Am I missing any? Pricona my sql So so we all have a generic API for your users to Spin up all kinds of different data stores and then we manage them for you So a little bit about the architecture So as you can see like I said that that everything other than the the guest agent in red is Open stack and we you know we view that as a black box So the trove API is in charge of you know sending that the user sends a message to trove API the rest API and It it then talks to the task manager, which is kind of the brains of the system right now The task manager Instruments things like backups pushes things to Swift talks to Nova to then go you know to first create the instance all of that you know standard stuff for Building installing and securing a data store And so we also have the concept of a conductor and that's in charge of heartbeat messages and making sure That that your instance stays online and then you can see inside that compute instance We've got this little guest agent and so the guest agent is It's mostly a dumb agent and the task manager is in charge of Telling it what to do, but it actually does it'll run the commands that that data store knows So when you go create a user right it will run sql for you to do that or it will you know edit configuration files to To change something about your data store that you want to Persist down in the instance and then everything else is standard open stack circles So it's really more than just a VM Right, we spin up your instance for you We'll create a replica we can resize you know all the standard things that you all have all seen a million times for every data Store that you have ever dealt with or used you know add users and databases manage grants Database backups earlier. We were talking about building scheduled backups at the design summit So scheduled backups and maintenance windows so you can you know have automatic minor version upgrades As well as you know something if we need to bounce your VM we you can determine when we do that and another another feature that was added in ice house is changing the database configuration so you can Do do more things that are customized for your instance without having to have a user actually get on the instance and do it So you pass you pass you know what you want to change in the default configuration files And then we manage that for you restart your instance if you that needs to happen as well You know we do our best to enhance the user experience. I mean One of the questions we asked ourselves in the beginning Was why be limited in how you interact with the database We want to make the experience as easy as possible because managing databases is not a easy fun task so when we sat back to design this we wanted to make it a Click-and-for-get service almost right you fire it off And you know that your data store is going to be up and running and it's going to stay running And if we need to add replicas to it or if you want to add replicas or you want to resize it or you know Grow your data set you have all the ability to do that from a nice easy rest API and you don't have to deal with How the heck do I actually you know edit these configuration files? I have to instrument you know Restarting the master and then the slaves and then I have to wait for the slaves to catch up all that stuff You don't have to deal with anymore. You just say do this trove so we The first thing we do when we install an instance as we secure it There's a few steps that you need to do typically with data stores that you just you know install from your package management and so we've decided that We are gonna do our best to remove some of the You know the funky things that are installed by default and you know we we Based on the the things that you choose such as the flavor and the disk size We create an appropriate configuration for your data store So we know that when it fires up it'll be running as best as it can based on the resources that you have allocated for it and another big thing that we Designed by default is no SSH your user shouldn't have to manage any tasks whatsoever by getting into a machine and Doing something that should be all over the API now, of course, there's gonna be things in a particular data store like I'll take the example of adding users because we've been Arguing a little bit over whether that should be core into the API or not So, you know, you have your data store can do things better than what an API can do for you in some cases So you still have full access to your data store You can do the things you need to do you can you can run You know my SQL dump across the network and get your get a copy of your data Database back in your local data center if you want right we're not doing anything special there we spin up Your data store and let you do things to it. We just don't want any users getting into the machine So we're all the things that require physical access We do for you so trove has been Integrated since ice house we've been working on it for about two years at rack space and We've had a vision of it for a while. I mean a lot of people have been working on Data stores databases as a service. There's you know a bunch of companies that are doing this so we have a lot of prior art and Knowledge about what people want with a data store. So some of these features are Short to medium term and some of them are kind of the vision of trove, right? so fully managed replication and clustering we expect to have an experimental clustering API and Replication in the Juno time frame we've got some great guys at tosora working on that right now as well as some people from eBay with the clusters Autoscaling replicas that may be a little bit further out just because we've got to finalize Building the replication and clustering API Automated failover if your node goes down at 3 a.m. You don't want to have to deal with your pager duty call or you know waking someone up from the operations team And you definitely don't want as a customer to this Your stuff to go down and then you have to do some action in the API So automated failover and automated recovery is is part of the vision of trove We want to grow it so that it is smart enough to know that if a slave goes down You know you can grab a backup you can re-sync it and you can continue moving and cross az region availability There's there's no requirement right now since we're a black box to open stack that we can't talk to more than one open stack installation in a single Like let's say at rack space or at HP or you can't have a replica at HP of a instance that you're running at rack space We want to build this so that it's it's easy for you to kind of plug pieces in where you want your data to be so you can make it closer to your to your application rather than just clicking and hoping that you don't have a terrible latency and You know the building block for every open stack service, so you know Since since we started dealing with trove we kind of joked a lot about you know, it would be really great to have the inception factor right where Trove manages Nova's database even though trove needs Nova in order to create those instances So you know we've talked a lot with the bare metal guys about Finding ways to install trove from the ground up so we can you know kind of be the the the underlying infrastructure as well as a customer-facing infrastructure, so That you know you can use the API, but it also makes installing open stack easier as well So thank you and Doug's gonna take it over from here. Thanks a lot bass So I wanted to drill into some more of the details So I want to start with just as quick What some of the concepts are so that we have those kind of grounded before we go through the install and the API? so basically Michael touched on some of this the One of the root concepts is the data store So this is basically an abstraction of kind of the underlying database and as he mentioned Originally, it was just my sequel, but now there's implementations for mongo precona couch base Xander Redis my sequel precona The other concept that goes kind of along with that is the database version so the thing that's material about this is that so obviously Databases have many versions so an operator can basically You know create my sequel and then as versions are rolled out They can basically create new data store versions in trove and it also provides This is where the linkage is provided to the guest image that that Michael mentioned in his Presentation so the guest images are in glance and they're basically linked at this level to this data store version concept There's also this configuration group So this is basically a way that you can take database specific parameters and kind of manage them So for example, and I'll get into this in more detail You can say you want to change the max connections on a my sequel instance to 500 or something That would be a parameter that's inside a configuration group and you can apply this to multiple instances and manage it Manage it the group across multiple instances There's also the concept of a flavor. I mean flavors basically the same as in Nova except this gives you the opportunity to create flavors that are specific To trove so you can optimize particular parameters for your database Great. Thanks, Mike So how does trove install and set up into into open stack? So here's the building blocks the black box that Michael talked about in terms of the trove installation of your controller node in your Compute node and then these services are running So basically the trove installation the obvious way to do it is your apt get or rpm and it basically will drop right into your Controller node so that's that blue box is the left side the red side of the architecture slide that Michael had Okay, go ahead. So configuration. There's a few things here So in general configuration is like many open stack services There's some configuration files to edit But the one of the major parts of the configuration is you need is basically the creation of these guest images So there's a guest image for each data store version. So you'd have one for say my sequel 5 5 and that lives inside of glance So after you have that you basically start Creating trove instances and this would be an actual running database. So for example, you'll see this in my demo I'm gonna make one called a my sequel So this is basically in the compute node a nova instance with the guest agent running in it and my sequel and then for example I'm also going to show how simultaneously you can have a mongo instance running. So in nova instance with mongo in the guest agent Okay Before I show you kind of the demo. I want to just run through some of the command line interface commands API So for configuration Some of the other things you need to do, you know, we need to tell Keystone about trove So there's some commands that basically you create a tenant in Keystone user service You need to create an endpoint in Keystone. So that's Keystone endpoint create and The last thing there is basically when you create this guest image, then you use trove manage command To put it into the glance and associate it with a data store version. So in this case You have a you'd have a my sequel 5 5 image and this command would associate That image in glance to the data store version my sequel 5 5 Okay, so from a usage point of view, so we're past configuration Everything's running and now we actually want to use trove. So these would be in user land. So For example command line interface, you can do trove data database data store lists, sorry and data store version list These actually list what? Databases and what database versions you can actually create instances from and then you can create an instance using trove create And you basically need to specify a name for your instance What flavor you want and there's other parameters like I wanted to be data store my sequel version 5 5 To list your instances there's trove list, which I believe is pretty similar to all the rest of open stack services And trove show gives you more details Okay, we'll go through this too. So if you want to create a new configuration group So this would be a database specific set of parameters You do trove configuration create and you can specify a name for that group And then the set of the dictionary of values that you want to actually apply to that group And then there's a way you attach it to an instance. Oh, actually sorry about that. Yeah worries Yeah, thank you You can Use trove configuration attach to attach the configuration you just created to an instance And the other thing that's very interesting about configuration groups is say you have a hundred instances And you attach the same configuration group to all a hundred instances You can then actually patch that configuration group and cause a change of a configuration value to go to all hundred Instances simultaneously And I'll show some of that Okay, we talked about backups. So here's how you create a backup. So you do trove backup create and You refer to the instance you want to backup and it'll back it up Currently the backups are basically point-in-time manual as Michael mentioned We are in the process of talking about scheduled tasks and having backups be able to be scheduled You could do an incremental backup if you specify the parent command of the parent switch on the trove backup create You can list backups you can show more details of them and then restore. So I have this in my demo basically you create a new Trove instance refer to a backup and it'll bring that up with the backup lit up in it So that when you go to the database it's got all the data that was in the backup. Okay, okay Now the fun part now the fun part. So I took some advice from Baz When I told him I was gonna do a live demo I think he said you're crazy There's all sorts of stuff happens at conferences that will screw up your demo So I actually took his advice and made a little video that I'm gonna talk through I can find it here okay, so I Guess I set the resolution incorrectly. So the So I'm gonna go into horizon for a little bit here and show you some of the things so we're gonna start So I sign into horizon Yep, and then Basically what this is is your standard horizon screen. So if you notice you may have noticed this already. I Think that's been a horizon since Havana right the database under project. There's a databases section. So if you go in there Wait, sorry, and you click on Is it running I Don't know I was asked if I could make it bigger it so there'll be portions of this that'll zoom in Okay, so basically here we are we're going to launch an instance. Okay, so I clicked on launch instance the screen pops up So basically I'm gonna fill in some of these things the database name the flavor of the volume and the data store I want So that should go here. Here we go. Watch how fast I can type Oh, you told me to do this So there I created a that's something to point out I created a flavor ahead of the running the demo called debas. m1. tiny that had some specific Sizing and memory and CPU requirements for this for this particular data store So I'm gonna pick my sequel I get the my sequel 5 5 version And I'm gonna go ahead and actually on the second tab actually create a database a database in the my sequel instance Yes Yeah That's a very good question. So he's asking are we assuming the trove is installed? Yes I didn't the demonstration started at the point that I had done all the configuration installation configuration Yep, and we we are working on better docs. We have some documentation for how to install trove And we're glad to help in any way shape or form especially Doug and actually that's a very good point for me to insert plug Right so to Sora the yes Wednesday announced the availability of our database of service platform. So what we've actually done at this point is packaged up In the installation of trove and automated the configuration and we're actually providing guest images for download available So that you can actually get from zero to 60 rapidly Okay, back to our regularly scheduled demo. So Right I'm creating a database and I'm gonna add a user to it so I can connect to it And here we go launch and then it shows up in the horizon List and now I'm gonna go ahead and actually create another instance simultaneously. I'm gonna make a mongo instance And that's not actually how fast they install. Yeah, of course. Well, that's in the to Sora version. Okay? Well, I can't speak to that So you'll see mongo pop up here. So there there they are And They're in build state. You can see that they're gonna go to active here like that Look at how fast it is. Wow So now I'm gonna go ahead and drill into the details of one of these So this is equivalent to a trove show Let me just stop there So this is a the show command gives you all this information clearly the most important thing on here is the connect info so that The connect URL you'd used to actually connect to this instance now that it's running So this is the mongo show on the mongo instance And we'll just keep going here price to cut that part out Okay, we're gonna drill into the my sequel we're gonna do a trove show on the my sequel instance So there you can see same information. You got the shows you how to connect via my sequel with that URL We're gonna look at some of the other info for my sequel. So there's my user that I created and The database should show up on here That performance scheme of showing up is actually an open book and now we're going to Flip out to the CLI Because I know how much everybody loves command line interface. So here we are Hopefully you can see that so I'm gonna connect to the my sequel instance. I created I Should be able to type faster than that and what I'm gonna do is we're gonna take a look at One of the my speed sequel specific variable called max connections So it's defaulted to a hundred when you install my sequel. So it's at a hundred right now I think I decided to do a show databases so you could see the database in there What I'm gonna do is create a configuration group that includes the adjustment of that parameter and apply to the instance and show you what happens So I do it so trove lists so I can get the instance Uuid to refer to in the configuration command So I did configuration list which shows that at this moment. There are no configuration groups created Now I'm gonna run a trove configuration create and I'm gonna create a configuration group called my conf one that includes setting the My max connections to 500 Now I'm going to attach this. I'm gonna do a list again so I get the uuid So basically the configuration attach command I take the idea of the group and the idea of the instance associate them together and then we'll go check out my sequel and see if it actually worked Wonder if it worked. I don't know. I should have actually put something not working in the demo because that's the only way you know It's a real demo So here we are so there's a configuration attach group to group to instance Now we should be able to go immediately into my sequel. I just showed that that that Trove configuration instances its command that you can use to show that the configure what configuration groups associated with an instance So we're back in my sequel. It's 500. So now what I'm gonna do is I'm going to Patch it. I'm actually gonna change it from 500 to 300 and show that it did that on the fly as well So in this particular case, there's only one instance, you know So it's interesting right but you can imagine that you could have attached this configuration group to a hundred instances And then you can go do this which changes the group it immediately would push that out to all 500 instances or whatever I said 100 instances So we're gonna go back into my sequel. It's now 300. No applause So I think what we're gonna do now is I'm gonna load some data into this database Mostly so that when I back it up and restore it you actually believe that the backup actually worked So I just have this schema we use for some testing of some stuff So I'm just gonna show you here that I loaded this Schema into my demo database and there's some data and That includes the names of all my friends here Oh man, I'm not on the list. Oh, sorry dude Okay, no to self Okay, so here we're gonna go back into horizon and we're gonna generate a backup on the my sequel instance So basically as I mentioned earlier, so for backup we name it and then we picked the instance We want to back up right there and we we give it a description and now it's doing a backup and You see it's building the backup and then it'll look at how fast so it was And then there's a show on the backup and here's the details of the backup shows where the Reference to Swift where the backup ended up living So now what I'm gonna do is I'm gonna restore it to a new instance. I think Running here, yeah, it's still running. Oh, there we go. Okay So let's do a so basically restores effectively overloaded into launch So you would do launch instance and instead of actually filling in all this stuff you can do restore from backup So I'm gonna make them be underscore my sequel database Set the flavor and size and then I'm gonna Do that go over to restore from backup pick the backup. I just made and Do a launch So it's gonna do all the normal things you'd expect in launch and then it's gonna apply that backup out of Swift right onto that in instance And watch how fast this is it's incredible We should ship Camtasia with the product or something. Okay, so now we're gonna go back into my sequel This guy clicks really slow. He does So here's the the trove show on the the the restored date data store instance or the instance I just restored from so I'm gonna connect now. You'll notice. I believe the url is Yeah, oh dot for oh dot for yeah and Magic the tables are there and the data and I'm still not in the list. Oh Okay, I think I Think that's all I was gonna show. Yeah, okay, so I think I just have one more Slide oops So this is just so so that was demo I think I went through pretty much all the all the The command line API and then the demo showed horizon and some of the commands. This is my second plug for to Sora So we're basically trying to we're positioning ourselves as a enterprise trove experts the definitely check out our website And I hope you had a chance to see our booths the show which is now gone And we have we have some other materials on there that I hope you everybody can have a chance to look at so thanks a lot Baz for your help today and any questions Not at the moment. So that's part of the clustering work that Baz referred to earlier So that my at this point Mongo is a single instance. So be basically dev test to use case at this point on the mic I guess. Yeah, can we we've got questions. Can y'all line up on the mic? What's it take to add? Other DBMS platforms to the system like if I if I wanted to add say foundation DB or something Is that a matter of just creating a new agent for the for the guests that responds to you know manage the specific configurations for that platform or is it Right so so there's nothing that prevents you from creating a a private implementation of a data store We would love to have it in the public and we would love to see it supported So that other people can use it But if it's a proprietary data store or if it's something that you know To have an instance you it you have to pay lots of money Then absolutely you just have to create the guest implementation and then do the same Things that Doug showed on the installation by you know telling it what the word data store is what the versions are have a Image with the data store pre-loaded into it and then it's as simple as that Hi, can you tell me in the context of Trove what the parameters that can be defined and tweaked are for the flavors? It's the it's the same flavor right so there's a hot spoiling directly from so there's a couple things. There's a size There's the size that the volume the volume that the The image is going to be loaded on right and there's also a size that ultimately the resulting data What's called data directory right which could end up say being on cinder for example And then cpu is a standard. Yeah, we we actually When when you list flavors we make a call out to your open stack nova installation to see what the flavors are available there and Based on those flavors when we go to install the data store We make some decisions in the configuration files to give you x number of max connections to start or you know other other memory type things So if you start with a certain size and need to expand later, what's the workflow for doing that? So, yeah, yeah, we we have a resize command that effectively depending on the implementation of what your Nova infrastructure does you could potentially resize in place and do a quick It will edit the configuration files for you and ups those those pieces that I talked about that we kind of monitor And then it'll bounce your data store instance for you And that's already built in that was that's been around for I guess I could have demoed that yeah So and optionally you can if you you know if you feel the need or you want to move The data to a different availability zone We have scheduler hints that you can pass in as well or you can also do what Doug showed the backup and restore Thank you Where does the data store actually resides is it's all the sender block storage or So that's configurator. That's configuration based The operators can decide that so you can if you select a volume then the data store will be Stored on a sender volume if you some some things like Redis don't need a backing data volume So you can that'll just be in memory on the VM itself. So it's it's Like all the other emerald right you can also right you can also use ephemeral. So like like the other open-stack products We are configuration based when you do an installation and you know, that's where Doug's company can come in and kind of help out to Plug those things plug the right things in so and if if you have a larger data size, then you can attach the Sender volume to it at the store That way Yeah, so if you're talking about if you're importing data in just using my SQL Or using whatever data store you you as a customer will need to know what the data set size is But if you go to do a backup and restore and you try to restore to a smaller instance We actually store the size of the volume and the instance so that you can't make a mistake and try to you know Restore a hundred gigs of data onto a one gig drive What are the h.A. And d.R? considerations of the design The H. I'm sorry was that h.A. Yeah h.A. H.A. And d.R. Okay, so We're we're still working on those right now, right? We as I alluded to earlier the vision of Trove involves talking about You know disaster recovery automatic failover those those kind of things where we're discussing them And the first thing we're going to do is build the replication and clustering API out so that we have the ability to Do those next d.R. Things so h.A. Will be coming as in June Oh just based on the fact that we'll have a replication API now in terms of Trove itself The like the installation of it. It's just like the rest of the open stack products you stand up multiple multiple API nodes and multiple schedulers and multiple Task managers and in that aspect. So in fact, I think we're we're talking about failover at 1050 and design summit Yeah, absolutely. So come on and join us I have a question regarding the the neutron support. So in the UI, I haven't seen that selection of a network Can you get a drop the mic? I've seen the UI where there's no network selection So what type of neutron support is planned or is it already implemented like if I want to have a private network for this particular database? yep, so neutron is is Still new in Trove. So there's not there's you know, I hate to say this, but I didn't work on it So I can't tell you exactly what it is But there's two core developers that worked on it that that are at HP that that can help you out with that But they're using neutron heavily. So they're building that support out as as they need it right now we can in terms of Security groups, which may or may not really deal with that You have the ability to set ports and security groups in your installation and that's about that's about it at present But at least I can select the the private network Why what I want to Set in for a project if there are multiple private networks in my projects Will I be able to select one of those for my database instance? today, I mean so so the operators At present that's an operator Configuration parameter, but that's something that we're we're building out if you have your own private network to be able to select that on creation time Thank you Okay. Oh, we have another one here. I think what about support for Oracle DB2 side base is that happening or is it going to come I? Mean it's I think some of this stuff is based on what what demands is out there So, you know and and there's an earlier question about how how can you build out a support for a new data store? so Clearly Oracle and DB2 are you know, obviously very mainstream databases So I would expect that as trove gets more traction there will definitely be a need for those kinds of things. Yeah, we we welcome Individuals to come and help contribute those to the project. Okay. Thank you everybody for your attention. It's all right. Yep