Shared IP in CoreOS

I am looking into using CoreOS at work and for a couple of projects where I want no single point of failure. CoreOS and Docker looks promising, and I can have hipache running talking to an ambassador container talking to the service. Basically, it can work.

But what about the shared public IP? How is that problem supposed to be solved? I can’t find any good documentation on this. http://www.keepalived.org/ looks like something that would solve this problem. But is it the right tool in this situation?

  • Docker: private registry access
  • CoreOS cluster installation alternatives (offline)
  • All containers inside a digital ocean droplet stop
  • docker ubuntu cron in CoreOS not run, funny behavior
  • Docker try to download unnecessary busybox image on creation of redis pod with kubernetes tools
  • Fleetctl job already exists
  • Am I missing something here? Why isn’t people talking more about this problem?

  • Error committing Oracle tablespace in Docker
  • Where are containers located in the host's file system?
  • Docker image extending the mysql image isn't running the initdb scripts
  • slow or timeout of dns resolving inside docker
  • Adding tags to docker image from jenkins
  • Is it possible to overwrite the ENTRYPOINT of a docker image while running it from the docker CLI?
  • 2 Solutions collect form web for “Shared IP in CoreOS”

    There are a few different methods of taking care of this. If you’re using a cloud provider (EC2 / OpenStack / Google Compute Engine) there is the concept of a floating IP which can be moved via an API call. This gets rid of having to use things like VRRP directly.

    In the long run this is best handled by utilizing DNS entries with a short TTL. Using that method also allows you the greater flexibility of having location aware applications (where DNS in different regions can route to the closest location), easy transition to IPv6, and failover across physical locations without needing to maintain your own internal routing infrastructure.

    If you are using keepalived just add a startup service with the floating ip in your cloud-init so config in every node of the coreos cluster

      - name: local-paas-ip.service
        command: start
        content: |
        [Unit]
        Description=Receive traffic from keepalived floating ip
    
        [Service]
        ExecStart=/usr/bin/sudo /usr/bin/ip addr add XXX.XXX.XXX.XXX dev lo:1
    

    I have have the same question/doubts about if this is the right option but I need something working now.

    Docker will be the best open platform for developers and sysadmins to build, ship, and run distributed applications.