Shopify / Shopify/toxiproxy

Multiple upstreams support

Open
#258 2 comments 8 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Go
Stars
12.4k
Forks
510
PR merge metrics
No merged PRs in 30d

Description

What (proposal)

I'd like to get support of multiple upstream hosts in single proxy + definition of balancing strategy (at least round-robin and/or least/most-connected).

As of now (v2.1.4) there is no way how to specify multiple upstreams for single proxy at least in toxiproxy-cli and python toxiproxy client.

Why (use-case)

My use-case uses toxiproxy to test the application's behaviour when introduced a toxics between the application and any of depending applications (all in kubernetes).
The way we introduce toxics w/o necessity of the application a change is to:

  • run toxiproxy and load all proxies to the dependent applications
  • force the application (app under test) to route via launched toxiproxy (via local linux /etc/hosts resolver)

Given the strategy it is clear that toxiproxy proxy binds same port as dependent app has/binds (no port translation in place).

Here comes the trouble, there is the application which communicates with HA storage consisting of multiple hosts binding the same port (redis sentinel), for such case I'd like to create toxiproxy proxy with multiple upstreams to block none / all upstreams.

The current workaround I have is to use multiple toxiproxy instances, but it comes with additional orchestration cost.

Any suggestions how to deal with the scenario are welcome.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

The issue names toxiproxy-cli and the Python toxiproxy client but no files or tests. Start by locating how each interface specifies an upstream, then clarify the balancing strategy and define completion as multiple upstream hosts supported consistently across the affected interfaces.

Written by the indexing model from the issue text.

Assessment

Tech stack
go, python
Domain
networking
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.