SpringCloudAlibaba:Nacos的集群部署

x33g5p2x  于2021-10-26 转载在 Spring  
字(3.1k)|赞(0)|评价(0)|浏览(842)

根据官方文档的介绍,Nacos的集群架构大致如下图所示(省略了集中化存储信息的MySQL):

集群搭建

1.环境准备

  1. 192.168.31.100:80 jdk1.8 mysql nginx
  2. 192.168.31.100:8848 jdk1.8 nacos
  3. 192.168.31.100:8849 jdk1.8 nacos
  4. 192.168.31.100:8850 jdk1.8 nacos

注意:这里的例子仅用于本地学习测试使用,实际生产环境必须部署在不同的节点上,才能起到高可用的效果。另外,Nacos的集群需要3个或3个以上的节点,并且确保这三个节点之间是可以互相访问的。

2.数据持久化

对于数据源的修改,在上一篇《Nacos的数据持久化》中已经说明缘由,如果还不了解的话,可以先读一下这篇再回来看这里。

3.docker安装nginx,nacos

1.创建Nacos的工作目录
  1. mkdir -p nacos_8848/init.d nacos_8848/logs nacos_8848/env
  2. mkdir -p nacos_8849/init.d nacos_8849/logs nacos_8849/env
  3. mkdir -p nacos_8850/init.d nacos_8850/logs nacos_8850/env
2.调整custom.properties
  1. # 在每一个节点的init.d目录创建custom.properties文件,文件内容如下
  2. // 添加以下配置
  3. #spring.security.enabled=false
  4. #management.security=false
  5. #security.basic.enabled=false
  6. #nacos.security.ignore.urls=/**
  7. #management.metrics.export.elastic.host=http://localhost:9200
  8. # metrics for prometheus
  9. management.endpoints.web.exposure.include=*
  10. # metrics for elastic search
  11. #management.metrics.export.elastic.enabled=false
  12. #management.metrics.export.elastic.host=http://localhost:9200
  13. # metrics for influx
  14. #management.metrics.export.influx.enabled=false
  15. #management.metrics.export.influx.db=springboot
  16. #management.metrics.export.influx.uri=http://localhost:8086
  17. #management.metrics.export.influx.auto-create-db=true
  18. #management.metrics.export.influx.consistency=one
  19. #management.metrics.export.influx.compressed=true
3.调整nacos-hostname.env
  1. # 在每一个节点的env目录创建nacos-hostname.env文件,文件内容如下
  2. #nacos dev env
  3. # 首选主机模式
  4. PREFER_HOST_MODE=hostname
  5. # 当前主机的IP
  6. NACOS_SERVER_IP=192.168.1.160
  7. # 集群的各个节点
  8. NACOS_SERVERS=192.168.1.160:8848 192.168.1.161:8848 192.168.1.162:8848
  9. # 数据库的配置
  10. MYSQL_SERVICE_HOST=192.168.1.100
  11. MYSQL_SERVICE_DB_NAME=nacos
  12. MYSQL_SERVICE_PORT=3306
  13. MYSQL_SERVICE_USER=root
  14. MYSQL_SERVICE_PASSWORD=root
  15. # 从节点 这里就使用单节点测试,因此就不配置从节点
  16. #MYSQL_SLAVE_SERVICE_HOST=xxx
  17. #MYSQL_SLAVE_SERVICE_PORT=3306
  18. # JVM参数 默认是2G 如果使用虚拟机,内存没有2G,就需要调整这里的参数,否则将无法启动
  19. JVM_XMS=256m
  20. JVM_XMX=256m
  21. JVM_XMN=256m
4.docker启动(3个节点)
  1. # 8848节点
  2. docker run -d -p 8848:8848 \
  3. --env-file=/huanglei/v-nacos/nacos_cluster/nacos_8848/env/nacos-hostname.env \
  4. -v /huanglei/v-nacos/nacos_cluster/nacos_8848/init.d/custom.properties:/home/nacos/init.d/custom.properties \
  5. -v /huanglei/v-nacos/nacos_cluster/nacos_8848/logs:/home/nacos/logs \
  6. --restart=always \
  7. --name=nacos_8848 nacos/nacos-server
  8. # 8849节点
  9. docker run -d -p 8849:8848 \
  10. --env-file=/huanglei/v-nacos/nacos_cluster/nacos_8849/env/nacos-hostname.env \
  11. -v /huanglei/v-nacos/nacos_cluster/nacos_8849/init.d/custom.properties:/home/nacos/init.d/custom.properties \
  12. -v /huanglei/v-nacos/nacos_cluster/nacos_8849/logs:/home/nacos/logs \
  13. --restart=always \
  14. --name=nacos_8849 nacos/nacos-server
  15. # 8850节点
  16. docker run -d -p 8850:8848 \
  17. --env-file=/huanglei/v-nacos/nacos_cluster/nacos_8850/env/nacos-hostname.env \
  18. -v /huanglei/v-nacos/nacos_cluster/nacos_8850/init.d/custom.properties:/home/nacos/init.d/custom.properties \
  19. -v /huanglei/v-nacos/nacos_cluster/nacos_8850/logs:/home/nacos/logs \
  20. --restart=always \
  21. --name=nacos_8850 nacos/nacos-server
  22. # 注意:--env-file上面的这个必须用这个,不可以用-e-file(颜色是紫色才是正确的)

5.测试

这里访问8848、8849、8850端口都可以

4.Nginx代理Nacos集群

在Nginx配置文件的http段中,我们可以加入下面的配置内容:

这样,当我们访问:http://localhost:8080/nacos/的时候,就会被负载均衡的代理到之前我们启动的三个Nacos实例上了。这里我们没有配置upstream的具体策略,默认会使用线性轮训的方式,如果有需要,也可以配置上更为复杂的分发策略。这部分是Nginx的使用内容,这里就不作具体介绍了。

相关文章