Nacos采坑:非集群Nacos不要使用同一个MySQL数据库

系列文章目录



前言

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。
在这里插入图片描述


Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。

Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。
在这里插入图片描述
严格来说,属于使用失误,但是依然记录一下防止再次踩坑,相关问题已经提交到Issues:

多个Nacos时配置文件无法读取的BUG · Issue #8158 · alibaba/nacos (github.com)

一般正规来说,开发测试是两套数据库,这里项目没有那么严格,刚起步为了调试方便使用了同一套数据库。

Nacos配置了使用MySQL作数据管理,但是为了屏蔽各个程序模块之间调用不出问题,本地一个Nacos测试一个Nacos只是数据库一样。

此时如果在本地Nacos配置管理添加了配置文件,这时由于是一套数据库,所以你在测试也能看到这个配置,但是问题来了,测试的程序是访问不到这个配置文件的,启动就会报错。

官方的说明是Nacos默认读取的是本地缓存文件,在集群下是没问题的,但是直接通过数据库打过来,除非Nacos重启,否则读取不到。

因此,请大家切记万能的网管法宝,不行就重启。

  • 7
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
如果您想在 Kubernetes 上部署 Nacos使用外部 MySQL 数据库,则可以使用 StatefulSet 来实现高可用性的 Nacos 集群。这里提供一个简单的示例 YAML 文件,您可以根据自己的需求进行修改: ```yaml apiVersion: v1 kind: Service metadata: name: nacos-mysql labels: app: nacos spec: ports: - port: 3306 name: mysql selector: app: nacos tier: mysql clusterIP: None --- apiVersion: v1 kind: Service metadata: name: nacos labels: app: nacos spec: ports: - name: http port: 8848 targetPort: 8848 selector: app: nacos tier: server clusterIP: None --- apiVersion: apps/v1 kind: StatefulSet metadata: name: nacos spec: serviceName: nacos replicas: 3 selector: matchLabels: app: nacos tier: server template: metadata: labels: app: nacos tier: server spec: containers: - name: nacos image: nacos/nacos-server:latest env: - name: MODE value: "cluster" - name: MYSQL_SERVICE_HOST value: nacos-mysql - name: MYSQL_SERVICE_PORT value: "3306" - name: MYSQL_DATABASE value: "nacos" - name: MYSQL_USER value: "nacos" - name: MYSQL_PASSWORD value: "nacos" ports: - containerPort: 8848 name: http volumeMounts: - name: nacos-data mountPath: /home/nacos/data - name: nacos-sidecar image: nacos/nacos-sidecar:latest env: - name: NACOS_SERVER_ADDR value: "nacos:8848" - name: NACOS_NAMESPACE value: "nacos" - name: NACOS_LOG_DIR value: "/home/nacos/logs" - name: NACOS_LOG_LEVEL value: "info" - name: NACOS_CONFIG_DIR value: "/home/nacos/nacos-config" volumeMounts: - name: nacos-data mountPath: /home/nacos/data - name: nacos-config mountPath: /home/nacos/nacos-config - name: nacos-log mountPath: /home/nacos/logs - name: nacos-nginx image: nginx:1.19.2-alpine ports: - containerPort: 80 name: http volumeMounts: - name: nginx-conf mountPath: /etc/nginx/conf.d - name: nacos-data mountPath: /usr/share/nginx/html readOnly: true volumes: - name: nginx-conf configMap: name: nginx-conf items: - key: nacos.conf path: default.conf - name: nacos-data emptyDir: {} - name: nacos-config configMap: name: nacos-config - name: nacos-log emptyDir: {} volumeClaimTemplates: - metadata: name: nacos-data spec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi ``` 上面的 YAML 文件中定义了三个部分: - `Service`:定义了一个 `nacos-mysql` 的 MySQL 服务,使用了 `None` 类型的 ClusterIP,表示这个服务只能在 Kubernetes 集群内部被访问,不需要提供外部访问。 - `StatefulSet`:定义了一个名为 `nacos` 的 StatefulSet,使用了 `nacos-mysql` 服务作为 MySQL 数据库,并使用了三个副本实例来实现高可用性。其中的模板定义了三个容器实例:`nacos`、`nacos-sidecar` 和 `nacos-nginx`,分别用于启动 Nacos 服务、Sidecar 代理和 Nginx 反向代理。 - `ConfigMap`:定义了两个 ConfigMap,分别用于存储 Nginx 配置文件和 Nacos 配置文件。 注意,该 YAML 文件中使用了一些默认的配置参数,您需要根据自己的需求进行修改,例如 MySQL 的用户名、密码、数据库名称等。此外,还需要创建 `nginx-conf` 和 `nacos-config` 两个 ConfigMap,分别用于存储 Nginx 配置文件和 Nacos 配置文件。您可以根据自己的需求定义这两个 ConfigMap。 最后,您可以使用 `kubectl apply -f <yaml-file>` 命令来部署这个 YAML 文件,部署完毕后,您可以使用 `kubectl get pods` 和 `kubectl get svc` 命令来查看您的 Nacos 集群的状态和服务的 IP 地址。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Java毕设王

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值