gpt4 book ai didi

java - 带有 Kubernetes 的 postgres 中的多个数据库?

转载 作者:行者123 更新时间:2023-11-29 14:16:34 26 4
gpt4 key购买 nike

我有四个 java 应用程序(组成一个大型 java 应用程序),它们使用两个带有大约 8 个不同数据库的 postgres 服务器(每个 postgres 服务器上有四个)。

由于我们要使用 kubernetes,所以我不确定该怎么做才能产生好的结果?我可以以一致的方式只制作一个包含 8 个数据库的 postgres 副本吗?这在 Kubernetes 中甚至可能吗?也许有更好的方法来处理这种情况?

谢谢,汤姆

最佳答案

如果您不需要 2 个不同服务器上的 8 个数据库(因为邻近或其他原因),那么我会将所有 8 个数据库放在一个实例中。少一件需要管理的事情。

您可以在 Kubernetes 中的单个副本(或多个副本)中运行您的 postgres 数据库。在容器中运行数据库意味着您还需要设置持久存储,否则当容器停止时您将丢失数据。

要在具有持久存储的 Kubernetes 中运行数据库,您需要创建一个 deployment , 一个 persistent volume , 和一个 persistent volume claim .我在此示例中使用 NFS,但还有许多其他存储选项可用。

postgres-deployment.yml

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: my-database
labels:
app: my-database
spec:
replicas: 1
strategy:
type: Recreate
template:
metadata:
labels:
app: my-database
spec:
containers:
- image: postgres:9.6.3
name: my-database
ports:
- containerPort: 5432
resources: {}
volumeMounts:
- mountPath: "/var/lib/postgresql/data:Z"
name: postgresdb-storage
restartPolicy: Always
volumes:
- name: postgresdb-storage
persistentVolumeClaim:
claimName: postgresdb-volume-claim
status: {}

postgres-pvolume.yml

apiVersion: v1
kind: PersistentVolume
metadata:
name: postgresdb-volume
spec:
storageClassName: postgresdb-class
accessModes:
- ReadWriteMany
capacity:
storage: 100Gi
nfs:
server: <NFS_SERVER_IP_ADDRESS>
path: /var/nfs/data/my-database-data

postgres-pvolume-claim.yml

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: postgresdb-volume-claim
spec:
storageClassName: postgresdb-class
accessModes:
- ReadWriteMany
resources:
requests:
storage: 100Gi
status: {}

然后您可以使用以下命令将它们添加到您的 Kubernetes 集群中:

kubectl create -f postgres-pvolume.yml 
kubectl create -f postgres-pvolume-claim.yml
kubectl create -f postgres-deployment.yml

但请注意。容器化世界中的持久存储仍处于起步阶段,在运行多个副本的高流量环境中可能会出现问题。如果你计划扩展你的数据库(即运行多个 postgres 副本),你应该在生产中做任何事情之前进一步研究这一点。网上有很多关于这个的文章。

很多人仍然在 VM 或裸机上运行他们的数据库,并且只在容器中运行数据库以进行本地开发。

关于java - 带有 Kubernetes 的 postgres 中的多个数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46642593/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com