2 years ago
We currently have a Railway project with an Express API service hosted on US East (Virginia, USA) region. This service also has 3 replicas.
We are thinking of spinning up a duplicate setup, but on the US West (Oregon, USA) region.
What is the best way to configure this? Is it as simple as creating a new service and pointing it to the same GH repo? But instead of selecting US East as the region, select US West? We have most of this config in a railway.json file.. so I am thinking we will probably need a railway-us-east.json and railway-us-west.json config file, right? And then I would imagine we need some new domains, ie us-east-api.service.com and us-west-api.service.com … and finally a load balancer like Cloudflare to direct traffic accordingly based on geo. Am I missing anything?
13 Replies
2 years ago
cc @Brody as he mentioned that he wanted a guide here, we'd publish one on the docs if you are willing to write one
2 years ago
yes id write one, just need a paid cloudflare account
2 years ago
What is the best way to configure this? Is it as simple as creating a new service and pointing it to the same GH repo? But instead of selecting US East as the region, select US West?
Its actually even simpler, just right click a service, click duplicate, go into the duplicate services settings and change the region, then deploy.We have most of this config in a railway.json file.. so I am thinking we will probably need a railway-us-east.json and railway-us-west.json config file, right?
for ease of use, i would remove the region option from the railway.json so it can be set in the service settings.And then I would imagine we need some new domains, ie us-east-api.service.com and us-west-api.service.com
correct!and finally a load balancer like Cloudflare to direct traffic accordingly based on geo
indeed! cloudflare (only on the paid plan) lets you set up geo load balancers where you select a region on a map that will correspond to the upstream host, in your case either the us-west or us-east endpoints, make sure you overwrite the host when configuring your upstreams!Am I missing anything?
nope, thats about all i can help with initially, happy to write up a guide but i dont have access to a paid cloudflare account.
2 years ago
no problem!
question re: ENV vars. Whats the best way to keep those in SYNC between these new services
2 years ago
personally i would designate a single service (us-west imo) to be the keeper of environment variables, then just referance all the variables on the us-west service from any of the other services
so lets go through the "adding a new ENV var" scenario. I go to the us-west service, navigate to "Variables" and add "+ New Variable" … now that service is waiting deployment for the ENV var to be available.
At this point, do I Deploy the changes, navigate to the us-east service, and ….. ?
2 years ago
for this example lets add a variable called MODE that we want to set to production and that our service in the us-west region is named simply us-west -
open the us-west service, add the variable that was mentioned, open us-east and add MODE=${{us-west.MODE}}, and only then deploy the changes
2 years ago
let me know if you need any more help!
2 years ago
hey @Ramin - a little late but we wanted to perfect it, here is the tutorial!