soabase / exhibitor

ZooKeeper co-process for instance monitoring, backup/recovery, cleanup and visualization.

Home Page:https://groups.google.com/forum/#!topic/exhibitor-users/PVkcd88mk8c

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Using Google Cloud Storage instead of Amazon S3

hildebrandt opened this issue · comments

I'm trying to setup Apache Zookeper with Netflix Exhibitor on Google Container Engine (Kubernetes). I would prefer to use Google Cloud Storage (instead of Amazon S3) to share configuration.

Google Cloud Storage offers a migration strategy from Amazon S3. Please see:
https://cloud.google.com/storage/docs/migrating

I enabled "interoperability access" in my Google Cloud Console, created new key and saved the credentials in a file called "/opt/exhibitor/credentials.properties". I have also created a new bucket called "exhibitor".

My start script looks like this:

`java -Dexhibitor-s3-endpoint=storage.googleapis.com -jar /opt/exhibitor/exhibitor.jar --configtype s3 --s3config exhibitor:shared-config --s3region eu-west-1 --s3credentials /opt/exhibitor/credentials.properties --defaultconfig /opt/exhibitor/defaults.conf --hostname 172.17.0.2`

During the startup I can see the following log message:

INFO  com.netflix.exhibitor.core.s3.S3ClientImpl  Setting S3 endpoint to: storage.googleapis.com [main]`

It seems like the endpoint was correctly changed from Amazon S3 to Google Storage.

The Automatic Instance Management tries to change the server list and I can see the following log message:

INFO  com.netflix.exhibitor.core.activity.ActivityLog  Automatic Instance Management will change the server list:  ==> 1:172.17.0.2 [ActivityQueue-0]

I checked the bucket content in the Google Cloud Console and I can see a new file called "shared-config". The file contains the Exhibitor properties. It seems like Exhibitor is able to communicate with
Google Cloud Storage.

But when Automatic Instance Management tries to change the server list a second time then I get the following log messages:

INFO  com.netflix.exhibitor.core.activity.ActivityLog  Automatic Instance Management will change the server list:  ==> 1:172.17.0.2 [ActivityQueue-0]
INFO  com.netflix.exhibitor.core.activity.ActivityLog  Could not initiate Automatic Instance Management config change. Another process is already making a config change. [ActivityQueue-0]

It seems like after creating the file on Google Cloud Storage the system is in some kind of "locked" modus.

I tried to delete the generated file on Google Cloud Storage but unfortunately it does not help. Exhibitor simply creates the file again and is locked again on the second request.

Do you have any idea what is going on? Is Google Cloud Storage not 100% compatible with Amazon S3 or did I something wrong?

Any help is highly appreciated.
Many greetings from Germany.

@hildebrandt have you solved the issue?

@shamil Unfortunately I did not. I think it necessary to create a Google Cloud implementation. But I did not the time to play with the Google Cloud Storage API.

@hildebrandt, yep I figured that out.
There is a mesosphere fork of exhibitor that supports GCS (and Azure) here and here

Also I've forked the docker-zk-exhibitor repo and added support for GCS by using gcsfuse. Currently running for couple of weeks and so far so good...

Would appreciate PR for adding GCS (and/or Azure) support.