From 305a05819502360eb874be0b0d4010ae11239497 Mon Sep 17 00:00:00 2001 From: Tom Hughes Date: Thu, 1 Aug 2013 13:36:19 +0100 Subject: [PATCH] Generate A records for each cluster based on which servers are up --- bin/mkgeo | 54 ++++++++++++++++++++++++------------------ src/openstreetmap | 20 ---------------- src/tile.openstreetmap | 25 +++++++++++++++---- 3 files changed, 51 insertions(+), 48 deletions(-) diff --git a/bin/mkgeo b/bin/mkgeo index 8d36c06..9ec063e 100755 --- a/bin/mkgeo +++ b/bin/mkgeo @@ -13,7 +13,7 @@ use YAML; my $source = shift @ARGV; my $zone = shift @ARGV; my $clusters = YAML::LoadFile("src/${source}"); -my $servers = {}; +my @servers; # Initialise cluster details while (my($name,$cluster) = each %$clusters) @@ -22,25 +22,27 @@ while (my($name,$cluster) = each %$clusters) { $cluster->{bandwidth} = 0; - while (my($name,$server) = each %{$cluster->{servers}}) + foreach my $server (@{$cluster->{servers}}) { $server->{cluster} = $cluster; $cluster->{bandwidth} = $cluster->{bandwidth} + $server->{bandwidth}; - $servers->{$name} = $server; + push @servers, $server; } } else { - $servers->{$name} = { + my $server = { cluster => $cluster, pingdom => $cluster->{pingdom}, - bandwidth => $cluster->{bandwidth} + bandwidth => $cluster->{bandwidth}, + ipv4 => $cluster->{ipv4}, + ipv6 => $cluster->{ipv6} }; - $cluster->{servers} = { - $name => $servers->{$name} - }; + $cluster->{servers} = [ $server ]; + + push @servers, $server; } $cluster->{name} = $name; @@ -56,10 +58,8 @@ while (my($name,$cluster) = each %$clusters) } # Initialise server details -while (my($name,$server) = each %$servers) +foreach my $server (@servers) { - $server->{name} = $name; - if ($ENV{PINGDOM_USERNAME} && $ENV{PINGDOM_PASSWORD}) { $server->{status} = "down"; @@ -78,7 +78,7 @@ if ($ENV{PINGDOM_USERNAME} && $ENV{PINGDOM_PASSWORD}) $ua->default_header("App-Key", "2cohi62u5haxvqmypk3ljqqrze1jufrh"); $ua->credentials("api.pingdom.com:443", "Pingdom API", $ENV{PINGDOM_USERNAME}, $ENV{PINGDOM_PASSWORD}); - foreach my $server (values %$servers) + foreach my $server (@servers) { if (my $checkid = $server->{pingdom}) { @@ -213,14 +213,7 @@ foreach my $country (values %countries) } $zonefile->print("# $country->{name}\n"); - - while (my($name,$server) = each %{$cluster->{servers}}) - { - if ($server->{status} eq "up") - { - $zonefile->print("C\L$country->{code}\E.${zone}:$server->{name}.${zone}:600\n"); - } - } + $zonefile->print("C\L$country->{code}\E.${zone}:$cluster->{name}.${zone}:600\n"); push @json, { type => "Feature", @@ -237,13 +230,28 @@ foreach my $country (values %countries) } # Output default records for IPs that can't be mapped to a country -foreach my $cluster (grep { $_->{default} } values %$clusters) +foreach my $cluster (grep { $clusters->{$_}->{default} } keys %$clusters) { $zonefile->print("# Unknown countries\n"); + $zonefile->print("Cxx.${zone}:${cluster}.${zone}:600\n"); +} - while (my($name,$server) = each %{$cluster->{servers}}) +$zonefile->print("# Servers\n"); + +# Output A records for each cluster +while (my($name,$cluster) = each %$clusters) +{ + foreach my $server (@{$cluster->{servers}}) { - $zonefile->print("Cxx.${zone}:${name}.${zone}:600\n"); + if ($server->{status} eq "up") + { + $zonefile->print("+${name}.${zone}:$server->{ipv4}:600\n"); + + if ($server->{ipv6}) + { +# $zonefile->print("3${name}.${zone}:$server->{ipv6}:600\n"); + } + } } } diff --git a/src/openstreetmap b/src/openstreetmap index 99e6ee3..ca2fd6c 100644 --- a/src/openstreetmap +++ b/src/openstreetmap @@ -125,26 +125,6 @@ Cc.tile.openstreetmap:tile.geo.openstreetmap.org:600 +yevaud.ucl.openstreetmap:10.0.0.15 +yevaud.oob.openstreetmap:10.0.1.15 -# Map geographic zones to tile servers - -+sjobo.tile.openstreetmap:85.30.190.241:3600 -# 3sjobo.tile.openstreetmap:2a02008000003ff8022264fffe2a2714:3600 -+moscow.tile.openstreetmap:130.193.62.73:3600 -+brisbane.tile.openstreetmap:203.26.72.12:3600 -# 3brisbane.tile.openstreetmap:2402640000010006021708fffe5640c3:3600 -+pau.tile.openstreetmap:193.55.222.229:3600 -+amsterdam.tile.openstreetmap:134.90.146.26:3600 -+oslo.tile.openstreetmap:31.169.50.10:3600 -+sanfrancisco.tile.openstreetmap:64.62.205.202:3600 -+lyon.tile.openstreetmap:77.95.70.166:3600 -# 3lyon.openstreetmap:200107f80047002100000000000000a6:3600 -+beauharnois.tile.openstreetmap:142.4.213.166:3600 -# 3beauharnois.tile.openstreetmap:26075300006012a60000000000000001:3600 -+falkenstein.tile.openstreetmap:5.9.150.236:3600 -# 3falkenstein.openstreetmap:2a0104f8019033eb0000000000000002:3600 -+provo-01.tile.openstreetmap:192.163.219.36 -+provo-02.tile.openstreetmap:192.163.219.40 - # Services machine +horntail.openstreetmap:193.63.75.101 diff --git a/src/tile.openstreetmap b/src/tile.openstreetmap index 0e62853..db89eda 100644 --- a/src/tile.openstreetmap +++ b/src/tile.openstreetmap @@ -6,6 +6,8 @@ sjobo: pingdom: 546505 colour: "#bfa730" bandwidth: 90 + ipv4: 85.30.190.241 + ipv6: 2a02008000003ff8022264fffe2a2714 # Moscow, RU # BW Limit: 1000Mb/s @@ -15,6 +17,7 @@ moscow: pingdom: 659912 colour: "#412c84" bandwidth: 55 + ipv4: 130.193.62.73 allowed: countries: - AZ @@ -40,6 +43,8 @@ brisbane: pingdom: 657940 colour: "#269926" bandwidth: 20 + ipv4: 203.26.72.12 + ipv6: 2402640000010006021708fffe5640c3 allowed: continents: - OC @@ -52,6 +57,7 @@ pau: pingdom: 718192 colour: "#bf8230" bandwidth: 60 + ipv4: 193.55.222.229 allowed: continents: - EU @@ -64,6 +70,7 @@ amsterdam: pingdom: 766251 colour: "#a1b92e" bandwidth: 50 + ipv4: 134.90.146.26 default: true # Oslo, NO @@ -74,6 +81,7 @@ oslo: pingdom: 769267 colour: "#7c1f7c" bandwidth: 30 + ipv4: 31.169.50.10 allowed: continents: - EU @@ -86,6 +94,7 @@ sanfrancisco: pingdom: 788480 colour: "#25567b" bandwidth: 22 + ipv4: 64.62.205.202 # Lyon, FR # BW Limit: 100Mb/s @@ -95,6 +104,8 @@ lyon: pingdom: 789594 colour: "#bf6530" bandwidth: 30 + ipv4: 77.95.70.166 + ipv6: 200107f80047002100000000000000a6 # Beauharnois, CA beauharnois: @@ -103,6 +114,8 @@ beauharnois: pingdom: 824231 colour: "#bfb830" bandwidth: 50 + ipv4: 142.4.213.166 + ipv6: 26075300006012a60000000000000001 # Falkenstein, DE falkenstein: @@ -111,6 +124,8 @@ falkenstein: pingdom: 834186 colour: "#562781" bandwidth: 50 + ipv4: 5.9.150.236 + ipv6: 2a0104f8019033eb0000000000000002 allowed: continents: - EU @@ -121,12 +136,12 @@ provo: lon: -111.642765 colour: "#1f7c65" servers: - provo-01: - pingdom: 909444 + - pingdom: 909444 bandwidth: 10 -# provo-02: -# pingdom: 909445 -# bandwidth: 10 + ipv4: 192.163.219.36 + - pingdom: 909445 + bandwidth: 10 + ipv4: 192.163.219.40 # Spare colours: # -- 2.43.2