精彩文章免费看

阿里云 ACK 中部署 Nacos 高可用集群

部署过程

  • 在RDS上创建名为nacos的库以及用户,记录密码。
  • 为nacos用户授权nacos库的读写权限。
  • 记录RDS的内网连接地址及端口。
  • 通过Navicat连接RDS,对nacos库导入数据结构。
  • .sql 文件可以从官方 clone 出来的目录中找到。
    git clone https://github.com/nacos-group/nacos-k8s.git

    在NAS上创建一个挂载点,选择和ACK集群同VPC即可。

  • 进入ACK集群。
  • 菜单栏选择 存储 > 存储声明
  • 切换到目标命名空间。如果还未创建命名空间,先创建。
  • 点击 创建 存储声明,参考下面的截图进行配置。
    - image: 'nacos/nacos-peer-finder-plugin:1.1' imagePullPolicy: Always name: peer-finder-plugin-install resources: {} terminationMessagePath: /dev/termination-log terminationMessagePolicy: File volumeMounts: - mountPath: /home/nacos/plugins/peer-finder name: volume-nacos-data subPath: peer-finder restartPolicy: Always schedulerName: default-scheduler securityContext: {} terminationGracePeriodSeconds: 30 volumes: - name: volume-nacos-data persistentVolumeClaim: claimName: nacos-data updateStrategy: type: RollingUpdate
  • 此处的副本数为2,后续结果验证时将扩容到 3 个。
  • mysql相关的配置从上面创建的ConfigMap中获取。
  • 限制资源使用量为内存2G。
  • 挂载了3个存储卷。
  • 服务名称与上面创建的服务一致。
  • annotations: nginx.ingress.kubernetes.io/force-ssl-redirect: 'true' nginx.ingress.kubernetes.io/service-weight: '' name: nacos-ingress namespace: ops-share spec: rules: - host: nacos.xxx.com http: paths: - backend: serviceName: nacos-svc servicePort: 8848 path: / pathType: ImplementationSpecific - hosts: - nacos.xxx.com secretName: nacos-secret1629271865685 status: loadBalancer: ingress: - ip: x.x.x.x
  • 其中8848为Nacos的控制台端口。
  • nacos-svc为上面创建的服务名称。
  • nacos.xxx.com为访问域名,根据实际情况填写。
  • secretName为创建的保密字典名称。
  • ip为负载均衡的外网IP地址,以便下面进行DNS解析。
  • 创建一条A记录,名称nacosx指向上面负载均衡的外网地址 。

  • 通过域名访问,确认可以正常访问到Nacos的后台。
  • 集群管理 > 节点列表 里,确认可以看到和k8s副本数一致的节点数,并且状态为 UP
  • 在ACK控制台,调整nacos-sfs的副本数,增加到3个副本,确认Nacos后台的节点数变为3个,并且状态为 UP 。即节点数与副本数保持完全一致。
  • 差个每个 Nacos 节点的元数据,确认其中不存在报错。
  • K8s Nacos
  • 开启鉴权:创建nacos-sfs时,添加的环境变量中 NACOS_AUTH_ENABLE=true 就是用来开启鉴权的。如果没有添加此环境变量,默认不启用鉴权。
  • 鉴权开启后,给用户授权时,务必授予 读写 权限,以免服务无法正常注册及读取配置。
  •