{"id":13464622,"url":"https://github.com/github/glb-director","last_synced_at":"2025-05-14T03:11:18.262Z","repository":{"id":37663466,"uuid":"133760300","full_name":"github/glb-director","owner":"github","description":"GitHub Load Balancer Director and supporting tooling.","archived":false,"fork":false,"pushed_at":"2025-05-01T12:21:45.000Z","size":980,"stargazers_count":2403,"open_issues_count":28,"forks_count":230,"subscribers_count":402,"default_branch":"master","last_synced_at":"2025-05-01T13:30:35.937Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/github.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2018-05-17T04:50:10.000Z","updated_at":"2025-05-01T12:21:42.000Z","dependencies_parsed_at":"2024-01-18T00:59:16.164Z","dependency_job_id":"38f146b2-a3e4-49ef-bdd5-73667f2bd104","html_url":"https://github.com/github/glb-director","commit_stats":{"total_commits":238,"total_committers":18,"mean_commits":"13.222222222222221","dds":"0.46218487394957986","last_synced_commit":"359c03021212f0274b12d211c5e9c44ba9b98e85"},"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/github%2Fglb-director","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/github%2Fglb-director/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/github%2Fglb-director/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/github%2Fglb-director/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/github","download_url":"https://codeload.github.com/github/glb-director/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254059518,"owners_count":22007771,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-07-31T14:00:47.569Z","updated_at":"2025-05-14T03:11:13.243Z","avatar_url":"https://github.com/github.png","language":"C","readme":"# GitHub Load Balancer Director\n\nThe GitHub Load Balancer (GLB) Director is a set of components that provide a scalable set of stateless [Layer 4](https://en.wikipedia.org/wiki/Transport_layer) load balancer servers capable of line rate packet processing in bare metal datacenter environments, and is used in production to serve all traffic from GitHub's datacenters.\n\n![GLB Logo](./docs/images/glb-logo-dark.png)\n\n## Design\n\nGLB Director is designed to be used in datacenter environments where multiple servers can announce the same IP address via BGP and have network routers shard traffic amongst those servers using [ECMP routing](https://en.wikipedia.org/wiki/Equal-cost_multi-path_routing). While ECMP shards connections per-flow using consistent hashing, addition or removal of nodes will generally cause some disruption to traffic as state isn't stored for each flow. A split L4/L7 design is typically used to allow the L4 servers to redistribute these flows back to a consistent server in a flow-aware manner. GLB Director implements the L4 (director) tier of a split L4/L7 load balancer design.\n\n![L4/L7 load balancer design](./docs/images/glb-component-overview.png)\n\nTraditional solutions such as [LVS](https://en.wikipedia.org/wiki/Linux_Virtual_Server) have stored flow state on each director node and then shared flow state between nodes. GLB Director instead receives these flows and uses a [derivative of rendezvous hashing](./docs/development/glb-hashing.md) to hash flows to a pair of servers with a pre-determined order, and [leverages the state already stored](./docs/development/second-chance-design.md) on those servers to allow flows to complete after a server begins draining.\n\n![GLB \"second chance\" packet flow](./docs/images/second-chance-nolegend.png)\n\nGLB Director only processes packets on ingress, and encapsulates them inside an [extended Generic UDP Encapsulation](./docs/development/gue-header.md) packet. Egress packets from proxy layer servers are sent directly to clients using Direct Server Return.\n\n## Getting started\n\nGLB Director has a number of components that work together with other infrastructure components to create a complete load balancer. We've created an [example Vagrant setup/guide](./docs/setup/example-setup-vagrant.md) which will create a local instance of GLB with all required components. The [docs](./docs/) directory also contains additional documentation on the design and constraints. For details about the packages provided and how to install them, see the [packages and quick start guide](./docs/setup/packages-quick-start.md).\n\n## Contributing\n\nPlease check out our [contributing guidelines](CONTRIBUTING.md).\n\n## License\n\nComponents in this repository are licensed under BSD 3-Clause except where required to be GPL v2 depending on their dependencies and usage, see the [license documentation](./LICENSE.md) for detailed information.\n\n## Authors\n\nGLB Director has been an ongoing project designed, authored, reviewed and supported by various members of GitHub's Production Engineering organisation, including:\n\n- [@joewilliams](https://github.com/joewilliams)\n- [@nautalice](https://github.com/nautalice)\n- [@ross](https://github.com/ross)\n- [@theojulienne](https://github.com/theojulienne)\n","funding_links":[],"categories":["C","Projects","Network","\u003ca id=\"1d9dec1320a5d774dc8e0e7604edfcd3\"\u003e\u003c/a\u003e工具-新添加的"],"sub_categories":["LoadBalancers","\u003ca id=\"8f1b9c5c2737493524809684b934d49a\"\u003e\u003c/a\u003e文章\u0026\u0026视频"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgithub%2Fglb-director","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgithub%2Fglb-director","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgithub%2Fglb-director/lists"}