听句劝! Nacos集群搭建可以看看这篇教程

时间:2022-01-27 12:18:03

听句劝! Nacos集群搭建可以看看这篇教程

一、Nacos 简介

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

详情查看Nacos 官方文档[1]

二、Nacos 安装

1、Nacos 依赖

Nacos 基于 java 开发的,运行依赖于 java 环境。

依赖 64 bit JDK 1.8+,前往官网下载 JDK[2]

2、Nacos 安装

下载编译后压缩包,最新稳定版本[3]

  1. unzipnacos-server-$version.zip或者tar-xvfnacos-server-$version.tar.gzcdnacos/bin

三、Nacos 部署

1、单实例部署

单实例部署不适合生产环境,单点故障是致命的。

Linux 单实例非集群模式启动命令

  1. startup.sh-mstandalone

Linux 单实例非集群模式关闭命令

  1. shutdown.sh

访问 nacos 管理页面,初始化用户名密码均为 nacos

听句劝! Nacos集群搭建可以看看这篇教程

2、集群部署

1、集群架构

听句劝! Nacos集群搭建可以看看这篇教程
  • 高可用 Nginx 集群
  • Nacos 集群(至少三个实例)
  • 高可用数据库集群(取代 Nacos 内嵌数据库)

2、本地虚拟机模拟集群部署

本地环境准备

听句劝! Nacos集群搭建可以看看这篇教程

在本地 PC 机上利用 VMware workstation 虚拟出如上表所示的几台机器,其中 Nginx 和 MySQL 都是采用的单实例,仅做练习使用。

搭建步骤

初始化 nacos 必须的数据库表并配置

找到 Nacos 安装目录下提供的数据库脚本文件

听句劝! Nacos集群搭建可以看看这篇教程

在 MySQL 实例创建 nacos_config 库并导入脚本

听句劝! Nacos集群搭建可以看看这篇教程

修改修改 Nacos 配置文件,指向 MySQL 实例,替换其内嵌数据库

听句劝! Nacos集群搭建可以看看这篇教程
  1. #***************切换Nacos内嵌数据库平台为MySQL***************#
  2. spring.datasource.platform=mysql
  3.  
  4. db.num=1
  5. db.url.0=jdbc:mysql://192.168.15.141:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
  6. db.user=root
  7. db.password=123456

说明:三台 nacos 实例都需要切换 MySQL 平台,均需执行以上操作

nacos 集群配置

复制 cluster.conf 文件

听句劝! Nacos集群搭建可以看看这篇教程

Nacos 集群配置,修改 cluster.conf 文件

  1. [root@localhostconf]#vim./cluster.conf
  2. #itisip
  3. #example
  4. 192.168.15.145
  5. 192.168.15.147
  6. 192.168.15.148

说明:三台 nacos 实例都需要做以上集群配置,至此关于 nacos 的配置结束了,可以尝试以集群模式启动三个 nacos 实例了

以集群模式分别启动三个 nacos 实例

听句劝! Nacos集群搭建可以看看这篇教程
听句劝! Nacos集群搭建可以看看这篇教程

尝试访问 nacos 管理页,测试三个实例是否正常

听句劝! Nacos集群搭建可以看看这篇教程

说明:如果三个实例以集群模式正常启动,那么分别访问三个实例的管理页就是展示以上登录页了。如果不能访问,则可能防火墙未开放 nacos 服务的端口,可执行如下命令。

  1. [root@localhostbin]#firewall-cmd--add-port=8848/tcp--permanent
  2. success
  3. [root@localhostbin]#firewall-cmd--reload
  4. success
  5. [root@localhostbin]#firewall-cmd--list-all
  6. public(active)
  7. target:default
  8. icmp-block-inversion:no
  9. interfaces:ens33
  10. sources:
  11. services:sshdhcpv6-client
  12. ports:27017/tcp8848/tcp
  13. protocols:
  14. masquerade:no
  15. forward-ports:
  16. source-ports:
  17. icmp-blocks:
  18. richrules:
  19.  
  20. [root@localhostbin]#

Nginx 配置

  • Nginx 安装参考,Nginx 源码安装[4]
  • 修改 Nginx 配置文件 nginx.conf
  1. worker_processes1;
  2.  
  3. events{
  4. worker_connections1024;
  5. }
  6.  
  7. http{
  8. includemime.types;
  9. default_typeapplication/octet-stream;
  10.  
  11. sendfileon;
  12.  
  13. keepalive_timeout65;
  14.  
  15. #nacos集群负载均衡
  16. upstreamnacos-cluster{
  17. server192.168.15.145:8848;
  18. server192.168.15.147:8848;
  19. server192.168.15.148:8848;
  20. }
  21.  
  22. server{
  23. listen80;
  24. server_name192.168.15.146;
  25.  
  26. location/{
  27. #roothtml;
  28. #indexindex.htmlindex.htm;
  29. proxy_passhttp://nacos-cluster;
  30. }
  31.  
  32. error_page500502503504/50x.html;
  33. location=/50x.html{
  34. roothtml;
  35. }
  36. }
  37.  
  38. }

启动 Nginx

  1. /usr/local/nginx/sbin/nginx-c/usr/local/nginx/conf/nginx.conf

微服务配置

微服务父 pom 配置

 

  1. "1.0"encoding="UTF-8"?>
  1.  
  2.  
  3. "http://maven.apache.org/POM/4.0.0"==xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0http://maven.apache.org/xsd/maven-4.0.0.xsd">
  5. 4.0.0
  6.  
  7. com.atguigu.springcloud
  8. cloud2020
  9. 1.0-SNAPSHOT
  10. pom
  11.  
  12. --模块-->
  13.  
  14. cloud-alibaba-nacos-config-client-3377
  15.  
  16.  
  17. --统一管理jar版本-->
  18.  
  19. UTF-8
  20. 1.8
  21. 1.8
  22. 4.12
  23. 1.2.17
  24. 1.16.18
  25. 5.1.47
  26. 1.1.16
  27. 1.3.0
  28.  
  29.  
  30. --统一依赖管理-->
  31.  
  32. --springboot2.2.2-->
  33.  
  34.  
  35. org.springframework.boot
  36. spring-boot
  37. 2.2.2.RELEASE
  38. pom
  39. import
  40.  
  41.  
  42. --springcloudHoxton.SR1-->
  43.  
  44. org.springframework.cloud
  45. spring-cloud-dependencies
  46. Hoxton.SR1
  47. pom
  48. import
  49.  
  50.  
  51. --springcloudalibaba2.1.0.RELEASE-->
  52.  
  53. com.alibaba.cloud
  54. spring-cloud-alibaba-dependencies
  55. 2.1.0.RELEASE
  56. pom
  57. import
  58.  
  59.  
  60. --mysql连接器-->
  61.  
  62. mysql
  63. mysql-connector-java
  64. ${mysql.version}
  65.  
  66.  
  67. --druid数据源-->
  68.  
  69. com.alibaba
  70. druid
  71. ${druid.version}
  72.  
  73.  
  74. --mybatis整合spring-->
  75.  
  76. org.mybatis.spring.boot
  77. mybatis-spring-boot-starter
  78. ${mybatis.spring.boot.version}
  79.  
  80.  
  81. --junit-->
  82.  
  83. junit
  84. junit
  85. ${junit.version}
  86.  
  87.  
  88. --log4j-->
  89.  
  90. log4j
  91. log4j
  92. ${log4j.version}
  93.  
  94.  
  95. --lombok-->
  96.  
  97. org.projectlombok
  98. lombok
  99. ${lombok.version}
  100.  
  101.  
  102.  
  103.  
  104.  
  105.  
  106. org.springframework.boot
  107. spring-boot-maven-plugin
  108.  
  109. true
  110. true
  111.  
  112.  
  113.  
  114.  
  115.  
  116.  

微服务 pom 依赖

 

  1. "1.0"encoding="UTF-8"?>
  1.  
  2. "http://maven.apache.org/POM/4.0.0"==
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0http://maven.apache.org/xsd/maven-4.0.0.xsd">
  5.  
  6. cloud2020
  7. com.atguigu.springcloud
  8. 1.0-SNAPSHOT
  9.  
  10. 4.0.0
  11.  
  12. cloud-alibaba-nacos-config-client-3377
  13.  
  14.  
  15.  
  16.  
  17. --nacosconfig-->
  18.  
  19. com.alibaba.cloud
  20. spring-cloud-starter-alibaba-nacos-config
  21.  
  22.  
  23. --nacosdiscovery-->
  24.  
  25. com.alibaba.cloud
  26. spring-cloud-starter-alibaba-nacos-discovery
  27.  
  28.  
  29. --web-->
  30.  
  31. org.springframework.boot
  32. spring-boot-starter-web
  33.  
  34.  
  35. --actuator-->
  36.  
  37. org.springframework.boot
  38. spring-boot-starter-actuator
  39.  
  40.  
  41. --test-->
  42.  
  43. org.springframework.boot
  44. spring-boot-starter-test
  45. test
  46.  
  47.  
  48. --devtools-->
  49.  
  50. org.springframework.boot
  51. spring-boot-devtools
  52. runtime
  53. true
  54.  
  55.  
  56. --lombok-->
  57.  
  58. org.projectlombok
  59. lombok
  60. true
  61.  
  62.  
  63.  

微服务 bootstrap.yml 配置

  1. server:
  2. port:3377
  3.  
  4. spring:
  5. application:
  6. name:nacos-config-client
  7.  
  8. cloud:
  9. nacos:
  10. discovery:
  11. #server-addr:my.nacos.com:8848
  12. #nacos集群配置(Nginx)
  13. server-addr:192.168.15.146:80
  14. config:
  15. #server-addr:my.nacos.com:8848
  16. #nacos集群配置(Nginx)
  17. server-addr:192.168.15.146:80
  18. #指定yaml格式的配置
  19. file-extension:yaml
  20. #指定分组
  21. group:DEV_GROUP
  22. #指定命名空间ID
  23. namespace:my_nacos_namespace

微服务启动类配置

  1. packagecom.atguigu.springcloud;
  2.  
  3. importorg.springframework.boot.SpringApplication;
  4. importorg.springframework.boot.autoconfigure.SpringBootApplication;
  5. importorg.springframework.cloud.client.discovery.EnableDiscoveryClient;
  6.  
  7. @SpringBootApplication
  8. @EnableDiscoveryClient
  9. publicclassNacosConfigClientMain3377{
  10.  
  11. publicstaticvoidmain(String[]args){
  12. SpringApplication.run(NacosConfigClientMain3377.class,args);
  13. }
  14.  
  15. }

微服务 Controller 读取 nacos 配置

  1. packagecom.atguigu.springcloud.controller;
  2.  
  3. importlombok.extern.slf4j.Slf4j;
  4. importorg.springframework.beans.factory.annotation.Value;
  5. importorg.springframework.cloud.context.config.annotation.RefreshScope;
  6. importorg.springframework.web.bind.annotation.GetMapping;
  7. importorg.springframework.web.bind.annotation.RestController;
  8.  
  9. @RestController
  10. @Slf4j
  11. @RefreshScope//支持Nacos的动态刷新功能
  12. publicclassConfigClientController{
  13.  
  14. @Value("${config.info}")
  15. privateStringconfigInfo;
  16.  
  17. @GetMapping("/config/info")
  18. publicStringgetConfigInfo(){
  19. returnconfigInfo;
  20. }
  21. }

在 nacos 管理页上维护一个配置

听句劝! Nacos集群搭建可以看看这篇教程
听句劝! Nacos集群搭建可以看看这篇教程

本地启动微服务并访问

听句劝! Nacos集群搭建可以看看这篇教程

参考

[1]Nacos 官方文档: https://nacos.io/zh-cn/docs/what-is-nacos.html

[2]前往官网下载 JDK: https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html

[3]最新稳定版本: https://github.com/alibaba/nacos/releases[4]Nginx 源码安装: https://segmentfault.com/a/1190000022860417

听句劝! Nacos集群搭建可以看看这篇教程

原文链接:https://mp.weixin.qq.com/s/nbAEamMNTrMc8HtL9-Ru_Q