Archived

This forum has been archived. Please start a new discussion on GitHub.

Glacier Replication

Hi Guys,

Haven't posted for a while as all your excellent advice paid off and I could provide a stable prototype to my Client.

We are now looking at using Glacier 2 in a full production roll-out. I have had a look at the doc and it's not clear to me how (best) to avoid a single Point of failure in the Glacier layer.

I would envisage an Ice Grid containing multiple Glacier instances which a Client can connect to. Is there a way of dealing with this in the Client under the Hood with the Ice runtime ? The examples all seem to contain one Glacier instance which the Client is specifically configured for.

Networks and Firewalls aren't my strong suit so maybe it is has to be like this for some reason, please let me know if this is the case.

Apologies for any gross mis-understandings in the above :-)

Cheers,

Daniel

Comments

  • benoit
    benoit Rennes, France
    Hi Daniel,

    Glacier2 is typically deployed on multiple machines for replication. Whether or not it's managed by IceGrid isn't really important since the client typically doesn't directly talk to IceGrid when it goes through Glacier2.

    The client must however be able to figure out all the Glacier2 instances which are deployed. The are various solutions to advertise the multiple Glacier2 instances:
    • You include all the IP addresses or DNS names of the Glacier2 machines in the client configuration. Your client can then create a Glacier2 proxy with multiple endpoints, one endpoint for each Glacier2 instance, for example: "ProdGlacier2/Router:tcp -h frontend1.foo.com -p 4063:tcp -h frontend2.foo.com -p 4063".
    • Rather than storing this list in a configuration file shipped with the client, you could drop this configuration file on a highly available location (a web server, etc). Your client would then retrieve this configuration file from the Internet (using HTTP, etc) and create the Glacier2 router proxy from the information it retrieved.
    • You configure a single DNS name with multiple addresses, the addresses of the machines running the Glacier2 instances. This way, you can directly embed a well-known DNS name into the client. The Ice runtime will retrieve the multiple IP addresses and randomly connect to one of them. If an IP address is unavailable, the connection establishment will automatically try another IP address.

    The first solution is easy but not very flexible since you have to change the configuration of all your Glacier2 clients if you want to add/remove Glacier2 instances. The last solution is better here, it allows to easily add/remove Glacier2 instances without having to fix the configuration of the Glacier2 clients.

    Cheers,
    Benoit.
  • Hi Benoit,

    Many thanks for the detailed Explanation, it's all clear now !

    Cheers,

    Daniel