Loading

Nacos集群架构

1.nacos部署说明

nacos支持三种部署方式:

  1. 单机模式 - 用于测试和单机试用
  2. 集群模式 - 用于生产环境,确保高可用
  3. 多集群模式 - 用于多数据中心场景

集群部署架构:https://nacos.io/zh-cn/docs/cluster-mode-quick-start.html

架构图:

部署生成使用的集群模式

image

具体拆分

image

2.nacos集群配置

使用虚拟机进行伪集群部署,将nacos复制3份

分别修改conf/application.properties中的启动端口为3333,4444,5555

server.port=3333/4444/5555

修改启动内存(虚拟机内存不够),在bin/startup.sh中

image

修改cluster.conf,这里它的原始名称为:cluster.conf.example,我们需要把它保留同时复制出一个cluster.conf来进行更改

192.168.56.10:3333
192.168.56.10:4444
192.168.56.10:5555

持久化配置

Nacos默认自带嵌入式数据库derby,所以我们每次创建一个Nacos实例就会有一个derby,当有多个Nacos节点的时候,就会出现一致性问题,所以Nacos支持了外部数据库统一数据管理MySql。

image

derby切换到mysql,具体配置方式可以参考官网:https://nacos.io/zh-cn/docs/deployment.html

1.我们需要找到Nacos安装目录下的conf目录中的Sql脚本,然后在数据库中进行执行

注意:需要我们先创建好数据库并且使用:
CREATE DATABASE nacos_config;
USE nacos_config;

image

2.修改conf/application.properties文件,增加支持mysql数据源配置(目前只支持mysql),添加mysql数据源的url、用户名和密码。

#注意:这里需要注意几个点,一个是url地址需要改,另外数据库的用户和密码也需要更改,同时还有一个是官网上在#db.url.0=jdbc:mysql**这个属性上少了一个属性为**serverTimezone=UTC**需要我们手动添加

spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&serverTimezone=UTC
db.user=root
db.password=root

测试:重启Nacos服务,此时之前所创建的Namespace+Group+DataID将全部消失,因为这些数据是保存在之前Nacos内嵌的derby数据库中,现在使用的是本地的MySql数据库,此时我们可以添加配置测试,在查看数据库nacos_config中的config_info表,此时就会有新添加的配置内容。并且在集群管理有多个节点列表

image

此时我们nacos集群已经搭建完成,但是我们对外提供服务的时候应该只要暴露一个地址即可,我们可以在nacos上层在搭建一个nginx

nginx.conf中添加如下配置:

# upstream千万不要有下划线,不然无法转发
upstream nacoscluster {
     server 192.168.56.10:3333;
     server 192.168.56.10:4444;
     server 192.168.56.10:5555;
}
server {
 listen       1111;
 server_name  localhost;
     location / {
     proxy_pass      http://nacoscluster;
 }
 error_page   500 502 503 504  /50x.html;
 location = /50x.html {
     root   /usr/share/nginx/html;
 }
}

启动nginx:nginx -c nginx.conf

访问:http://192.168.56.10:8848/nacos

image

3.服务注册到集群

将之前的yml文件中server-addr修改为nginx地址

server:
port: 9002

spring:
application:
  name: nacos-provider
cloud:
  nacos:
    discovery:
      # 换成nginx的地址
      server-addr: http://192.168.56.10:1111
management:
endpoints:
  web:
    exposure:
      include: '*'

我本地不知道为什么换成nginx地址后启动异常:

image

使用官网提供的命令测试又是可以的
curl -X POST 'http://192.168.56.10:1111/nacos/v1/ns/instance?serviceName=nacos.naming.serviceName&ip=20.18.7.10&port=8080'

curl -X GET 'http://192.168.56.10:1111/nacos/v1/ns/instance/list?serviceName=nacos.naming.serviceName'

curl -X POST "http://192.168.56.10:1111/nacos/v1/cs/configs?dataId=nacos.cfg.dataId&group=test&content=HelloWorld"

curl -X GET "http://192.168.56.10:1111/nacos/v1/cs/configs?dataId=nacos.cfg.dataId&group=test"

4.总结

image

posted @ 2022-05-21 00:15  ZT丶  阅读(483)  评论(0编辑  收藏  举报