Live data from Hacker News

Status.github.com: “We're failing over a data storage system”

news.ycombinator.com

141–150 of 173 posts

Re: Status.github.com: “We're failing over a data storage system”

#141
post #91

Just a few weeks ago my organization was in the position of choosing a version control platform for our repos. I'm so glad we went ahead with self hosted gitlab. We installed it on a CentOS server at our premise, SSL'd via Let's encrypt, I've even set up a dedicated gitlab runner to use Gitlab CI for continuous delivery and so far the testing is progressing pretty smoothly. All this for $0. Update: I agree, gitlab an…

What did the server cost? How many hours did you spend on it? What's your SLA? Who will be woken up at night when there's an outage? What's your backup and recovery procedure? I mean kudos to you for setting it up but it's a bit naive to believe it's better than a hosted solution right away.

I am not the OP, but in my previous job, we ran infrastructure that could absolutely NOT be cloud hosted (network management control plane for an ISP), and had to be geo-redundant (3 DCs in our country, which also hosted the core routers and other data-plane components). The ISPs applications also ran on the same infrastructure.

So, we already had a 3-DC virtualisation platform.

We also chose Gitlab, with a primary in our primary DC (where dev/QA infrastructure resided), with daily full backups rsynced (as created by Gitlab) to the standby gitlab instance (and backups from the stadnby rsynced to the primary) and repos sync hourly. Plus, all volumes on the SAN-attached storage array were snapshotted and backed up to virtual tape in both sites.

The 3rd DC was too small for the same footprint, but had a smaller SAN array and we would be able to host the gitlab instance there in ~1 hour if both the primary and standby failed.

Total cost: * 2 VMs with 8GiB ram. All other costs were negligible. * 2x50GiB SAN volumes (at ~ $1/GB for capex+5-year-opex) * Some virtual tape costs (negligible to our other backup costs) * Time: * Approx 1 hour to set gitlab up * Approx 1 hour to setup backup replication and test restores * Approx 1 hour spent on Gitlab upgrades per year * Benefits: Integration with other on-premise infrastructure we would prefer not to expose to the 'cloud' via e.g. VPC gateways etc. * Unlimited (except by ram/storage assigned to VMs) private repos * Unlimited (except by ram/storage assigned to VMs) * Ability to deploy applications regardless of any other external outage (network, cloud etc.): priceless

I am not aware of any failures in the first 3 years of operation.

> What did the server cost? Negligible, we already had 12 physical hosts with 256GiB ram each in the primary and secondary site

> How many hours did you spend on it? 3 more hours than we would have if we had used a hosted solution, if the hosted solution would have cost 0 hours to integrate with our on-premise infrastructure in non-internet-exposed DMZs.

> What's your SLA?

Our standard SLA was 98.5% availability of all internal services measured monthly with 1h MTTR.

> Who will be woken up at night when there's an outage?

Same team that gets woken up for the other ~200 VMs that are more critical than the git repo

> What's your backup and recovery procedure?

Assuming we couldn't recover the primary: * Ensure the primary gitlab instance isn't taking writes/updates (e.g. disable the virtual NIC) * Start a restore from the lastest backup on the standby * Check if there were any commits to the git repos since the last backup, of so, push them to the recovered gitlab instance from the clones * Check that the repos are accessible and working * Flip the DNS from git.company to point to git.secondary-dc.company instead of git.primary-dc.company

We built everything to be able to failed over from the primary to secondary site and had tested all failovers (application servers, multiple databases, authentication servers, monitoring, infrastructure management applications etc.).

> but it's a bit naive to believe it's better than a hosted solution right away.

Depends on your use case and existing infrastructure/skills/operational posture etc.

Re: Status.github.com: “We're failing over a data storage system”

#142
The status updates are bearing a remarkable resemblence to a Windows loading bar.

• We aim to serve fully consistent data within the next 2 hours.

45 minutes later. On track for serving fully consistent data within the next 1.5 hours

45 minutes later. On track to serve consistent data within the hour.

One and a half hours later. We estimate they will be caught up in an hour and a half.

Re: Status.github.com: “We're failing over a data storage system”

#143

My guess at what happened: They had a split brain when multiple masters were running. Then they were not able to choose a master to keep because the data in both masters was 'corrupted' so they are now restoring from a backup. So how do they get data corruption from multiple masters running: 1) Performing reads from slaves during an update operation. If you perform a read from a slave then you might get data from the…

Split brain can run for a while if the all identifiers are UUIDs and tables are used as append only. Restoration is complex, though.

Re: Status.github.com: “We're failing over a data storage system”

#144
post #91

Just a few weeks ago my organization was in the position of choosing a version control platform for our repos. I'm so glad we went ahead with self hosted gitlab. We installed it on a CentOS server at our premise, SSL'd via Let's encrypt, I've even set up a dedicated gitlab runner to use Gitlab CI for continuous delivery and so far the testing is progressing pretty smoothly. All this for $0. Update: I agree, gitlab an…

I'm so glad we went ahead with self hosted gitlab.

You say that now but if you're at the sort of scale where you might have the same issue Github is having you'll be a lot less glad someone else isn't fixing it. Especially if it's 3am. On a Saturday. In the middle of your vacation.

Gitlab is awesome but it's not invincible. Problems happen regardless of what solution you pick. I'm happy to pay Github to resolve them for me faster than I could do myself, and better, and with solutions in place up front to make sure I don't actually lose any data.

Re: Status.github.com: “We're failing over a data storage system”

#145

The status updates are bearing a remarkable resemblence to a Windows loading bar. • We aim to serve fully consistent data within the next 2 hours. • 45 minutes later . On track for serving fully consistent data within the next 1.5 hours • 45 minutes later . On track to serve consistent data within the hour. • One and a half hours later . We estimate they will be caught up in an hour and a half.

They got to the end of the restore, realised there was a problem, and had to start over.

Re: Status.github.com: “We're failing over a data storage system”

#146
post #77

Earlier quoted context omitted.

Not when you use third party integrations. Like when using Travis for CI, and Travis doing your deploy.

Travis supports both Bitbucket and Gitlab

No, Travis CI doesn't support any code hosting other than GitHub.

Re: Status.github.com: “We're failing over a data storage system”

#147
post #20

I don't know if they keep changing the text updates with a slightly different version to - prove it's a human that typed it - there is code the prevents repeating twice the same message either way it's entertaining... But it's Monday morning in Australia and we need to release! (yep we do this via pr/tagging etc.)

> But it's Monday morning in Australia and we need to release!

Ironic isn't it? The whole point of git was to be distributed, and yet we're at a place where a bunch of companies can't deploy software when a single git provider is down. I myself am in the same boat. Sure, I could reconfigure for a different repo, but is it even worth the effort?

Re: Status.github.com: “We're failing over a data storage system”

#148

The status updates are bearing a remarkable resemblence to a Windows loading bar. • We aim to serve fully consistent data within the next 2 hours. • 45 minutes later . On track for serving fully consistent data within the next 1.5 hours • 45 minutes later . On track to serve consistent data within the hour. • One and a half hours later . We estimate they will be caught up in an hour and a half.

I appreciate that they try. As a user I would never rely on those estimates, but it at least gives you a sense of what's going on and what they are doing. I take that over the more common silence or "we are working on it" any day.

Re: Status.github.com: “We're failing over a data storage system”

#150
post #148

The status updates are bearing a remarkable resemblence to a Windows loading bar. • We aim to serve fully consistent data within the next 2 hours. • 45 minutes later . On track for serving fully consistent data within the next 1.5 hours • 45 minutes later . On track to serve consistent data within the hour. • One and a half hours later . We estimate they will be caught up in an hour and a half.

I appreciate that they try. As a user I would never rely on those estimates, but it at least gives you a sense of what's going on and what they are doing. I take that over the more common silence or "we are working on it" any day.

Exactly. We all know not to trust that those estimates are exact, but they are much better than nothing. When they say nothing we don't know if it's half an hour, half a day or half a week.
Post reply on HN