我在Google容器引擎中有一个多租户应用,它有一个源代码和不同的文件(指定的GC存储桶中的目录)和数据库(GC SQL)。每个租户都有一个配置文件,其中包含sql凭据以及由(http / s)请求中的域确定的其他配置。
这些配置文件很小,大约500字节,我试图弄清楚如何将它们分发到多个pod,以便对它们进行任何更改(添加,删除或更改配置)将尽快传播。
到目前为止,最好的解决方案是使用来自GCE的永久磁盘,它可以作为只读安装到任意数量的读卡器,然后让一个容器与单个容器,我将卷安装为可写(只能有一个编写器),使用nodeJS或cron在一些短时间间隔内调用的export class GmailComponent implements OnInit, DoCheck {
public messages: Array<string>;
subscription:Subscription;
constructor(private gmailApi: GmailApiService){
}
ngOnInit() {
this.gmailApi.checkAuthAuto('from:(xyz@zyx.com) OR to: (azx@saa.com)');
this.subscription = this.gmailApi.openMessages$
.subscribe(messages => {
this.messages = messages;
ngDoCheck();
});
}
getMessages(){
console.log(this.messages);
}
ngOnDestroy() {
this.subscription.unsubscribe();
}
ngDoCheck() {
//do nothing, just call
}
}
来同步我管理后端写入它们的存储桶中的文件。
我还没有这样做的原因是,这不是云友好的解决方案,因为基本上存在单点故障。豆荚应该是自给自足的。而且驱动器不能小于10GB,但我的文件最多只需要几MB,所以这似乎是浪费资源。
Google遗憾的是没有像Amazon Elasticache这样的东西,所以我不确定如何设计它。
有什么想法吗?
答案 0 :(得分:1)
Elasticache基本上是一个Redis集群,所以你可以使用自己的Redis Master / Slave或Cluster配置在Kubernetes / GKE中做同样的事情。
您还可以为这些配置提供中央SQL或其他数据库,具有冗余复制功能,或任何其他类型的键/值存储,如etcd,consul,zookeeper ......
那里有很多选择。
所有这些解决方案都是复制/分发的,你可以只使用本地存储(emptyDir),尽管可能有一些备份策略。