我使用部署在kubernetes中部署了我的java web应用程序,并能够扩展它并将其连接到数据库POD,但是我也想扩展数据库,但您知道,在kubernetes中是不可能的,MYSQL副本也不推荐用于生产。因此,我尝试了vitess,并且能够扩展我的数据库,但是不知道应该如何或者在哪里创建我的java应用程序部署/副本,并通过vtgate将它们连接到数据库。还有其他方法可以通过kubernetes扩展mysql数据库吗?
发布于 2016-11-24 00:26:27
需要注意的是,Vitess并不是一个透明的代理,您可以在连接级别上插入应用程序和MySQL之间。Vitess将一组MySQL服务器转换成一个集群数据库,它要求您使用Vitess驱动程序构建应用程序,而不是普通的MySQL驱动程序。
如果您已经在使用JDBC,那么除了连接管理之外,您不需要进行大量的代码更改,因为这里有一个JDBC接口的Vitess实现。但是,Vitess可能还不支持某些查询结构,因此您可能需要将它们重写为支持的等效表单。
一旦您的应用程序与Vitess兼容,在Kubernetes中部署它将与以前一样,除非您将应用程序荚指向通过DNS连接到VTGate服务。
至于在没有Vitess的Kubernetes中扩展MySQL的其他方法,在Kubernetes 1.5中有一个重要的新特性,称为StatefulSet,它将帮助您扩展像MySQL这样的数据库,类似于部署可以扩展无状态Pods的方式。Vitess本身也将变得更加方便,通过利用StatefulSet在Kubernetes进行扩展。
但是,使用纯StatefulSet的MySQL只会通过增加奴隶的数量来帮助您扩展只读通信量。如果需要缩放写入通信量,则可能需要实现应用程序定义的切分。在这一点上,您的应用程序所需的更改几乎肯定会比如果您修改它以支持Vitess更多。
https://stackoverflow.com/questions/40775621
复制相似问题