nacos 部署 配置

news/2025/3/15 9:49:00/

文章目录

    • 一、Nacos简介
      • 1、为什么叫Nacos
      • 2、Nacos是什么
      • 3、能干嘛
      • 4、去哪下
    • 二、安装并运行Nacos
      • 2.1 基础环境及配置:
    • 三、Nacos作为服务注册中心演示
      • 3.1 基于Nacos的服务提供者
        • 2、POM文件
        • 3、YML文件
        • 4、主启动
        • 5、业务类
        • 6、测试
        • 7、nacos控制台
    • 3.2 基于Nacos的服务消费者
        • 1、新建Module(cloudalibaba-consumer-nacos-order83)
        • 2、POM文件
        • 3、YML文件
        • 4、主启动
        • 5、业务类
        • 6、测试
        • 7. Nacos支持AP和CP模式的切换
    • 四、Nacos作为服务配置中心演示
      • Nacos作为配置中心-基础配置
        • 1、新建Module(cloudalibaba-config-nacos-client3377)
        • 2、POM文件
        • 3、YML
        • 4、主启动
        • 5、业务类
        • 6、在Nacos中添加配置信息
        • 7、Nacos中的匹配规则
        • 运行后找不到配置文件 :这里有大坑
    • 五、Nacos作为配置中心-分类配置
      • 1、问题:多环境多项目管理
    • 六、centos7安装nacos
        • 问题1运行出错:
        • 问题2:虚拟机内部可以访问 nacos 在windows中无法访问
      • application.properties配置
      • 配置集群
        • centos7配置
          • 问题:运行后虚拟机卡死
        • windows版本配置(数据库配置参考上边)
      • 安装nginx
      • 测试服务注册

一、Nacos简介

1、为什么叫Nacos

前四个字母分别为Naming和Configuration的前两个字母,最后的s为Service

2、Nacos是什么

一个更易于构建云原生应用的动态服务发现,配置管理和服务管理中心;
Nacos:Dynamic Naming and Configuration Service;
Nacos就是注册中心+配置中心的组合:Nacos = Eureka+Config+Bus

3、能干嘛

替代Eureka做服务注册中心;替代Config做服务配置中心。

4、去哪下

https://github.com/alibaba/Nacos

官网文档:

nacos官网
springcloud 中nacos介绍

各种注册中心比较:

二、安装并运行Nacos

2.1 基础环境及配置:

1)本地Java8+Maven环境已经OK
2)先从官网下载Nacos: https://github.com/alibaba/nacos/releases/tag/1.1.4
3)解压安装包,直接运行bin目录下的startup.cmd
4)命令运行成功后直接访问http://localhost:8848/nacos
默认账号密码都是nacos

三、Nacos作为服务注册中心演示

3.1 基于Nacos的服务提供者

2、POM文件

父POM文件增加:

<!--spring cloud alibaba 2.1.0.RELEASE-->
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>2.1.0.RELEASE</version><type>pom</type><scope>import</scope>
</dependency>

最终文件:

  <!-- 统一管理jar包版本 --><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target><junit.version>4.12</junit.version><log4j.version>1.2.17</log4j.version><lombok.version>1.16.18</lombok.version><mysql.version>5.1.47</mysql.version><druid.version>1.1.16</druid.version><mybatis.spring.boot.version>1.3.0</mybatis.spring.boot.version></properties><!-- 子模块继承之后,提供作用:锁定版本+子modlue不用写groupId和version  --><dependencyManagement><dependencies><dependency><groupId>com.atguigu.springcloud</groupId><artifactId>cloud-api-commons</artifactId><version>${project.version}</version></dependency><!--spring cloud alibaba 2.1.0.RELEASE--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>2.1.0.RELEASE</version><type>pom</type><scope>import</scope></dependency><!--spring boot 2.2.2--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>2.2.2.RELEASE</version><type>pom</type><scope>import</scope></dependency><!--spring cloud Hoxton.SR1--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>Hoxton.SR1</version><type>pom</type><scope>import</scope></dependency><!--spring cloud alibaba 2.1.0.RELEASE--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>2.1.0.RELEASE</version><type>pom</type><scope>import</scope></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>${mysql.version}</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>${druid.version}</version></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>${mybatis.spring.boot.version}</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>${junit.version}</version></dependency><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>${log4j.version}</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>${lombok.version}</version><optional>true</optional></dependency></dependencies></dependencyManagement><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><fork>true</fork><addResources>true</addResources></configuration></plugin></plugins></build>
</project>

3、YML文件

server:port: 9001spring:application:name: nacos-payment-providercloud:nacos:discovery:server-addr: localhost:8848 #配置Nacos地址management:endpoints:web:exposure:include: '*'

4、主启动

@EnableDiscoveryClient  #开启客户端服务注册发现
@SpringBootApplication
public class PaymentMain9001 {public static void main(String[] args) {SpringApplication.run(PaymentMain9001.class,args);}
}

5、业务类

@RestController
public class PaymentController
{@Value("${server.port}")private String serverPort;@GetMapping(value = "/payment/nacos/{id}")public String getPayment(@PathVariable("id") Integer id){return "nacos registry, serverPort: "+ serverPort+"\t id"+id;}
}

6、测试

测试网址:

http://lcoalhost:9001/payment/nacos/1

或者

http://127.0.0.1:9001/payment/nacos/1

7、nacos控制台

查看nacos服务注册中心+服务提供者9001都ok了?

如果没有问题 为了下一章节演示nacos的负载均衡,参照9001新建9002;

3.2 基于Nacos的服务消费者

1、新建Module(cloudalibaba-consumer-nacos-order83)

2、POM文件

    <dependencies><!--SpringCloud ailibaba nacos --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency> </dependencies>

3、YML文件

server:port: 83spring:application:name: nacos-order-consumercloud:nacos:discovery:server-addr: localhost:8848service-url:nacos-user-service: http://nacos-payment-provider

4、主启动

@EnableDiscoveryClient
@SpringBootApplication
public class OrderNacosMain83
{public static void main(String[] args){SpringApplication.run(OrderNacosMain83.class,args);}
}

5、业务类

ApplicationContextBean类:

@Configuration
public class ApplicationContextConfig
{@Bean@LoadBalancedpublic RestTemplate getRestTemplate(){return new RestTemplate();}
}

OrderNacosController类:

@RestController
@Slf4j
public class OrderNacosController
{@Resourceprivate RestTemplate restTemplate;@Value("${service-url.nacos-user-service}")private String serverURL;@GetMapping(value = "/consumer/payment/nacos/{id}")public String paymentInfo(@PathVariable("id") Long id){return restTemplate.getForObject(serverURL+"/payment/nacos/"+id,String.class);}
}

6、测试

nacos控制台:

测试网址: 查看83访问9001/9002,轮询负载OK?
http://localhost:83/consumer/payment/nacos/13

3、服务注册中心对比
Nacos全景图所示:

Nacos和CAP关系

7. Nacos支持AP和CP模式的切换

四、Nacos作为服务配置中心演示

Nacos作为配置中心-基础配置

1、新建Module(cloudalibaba-config-nacos-client3377)

2、POM文件

        <!--nacos-config--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency><!--nacos-discovery--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><!--web + actuator--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency>

3、YML

application.yml配置信息

spring:profiles:active: dev

bootstrap.yml配置信息

server:port: 3377spring:application:name: nacos-config-clientcloud:nacos:discovery:server-addr: localhost:8848 #服务注册中心地址config:server-addr: localhost:8848 #配置中心地址file-extension: yaml #指定yaml格式的配置

4、主启动

@EnableDiscoveryClient
@SpringBootApplication
public class NacosConfigClientMain3377
{public static void main(String[] args) {SpringApplication.run(NacosConfigClientMain3377.class, args);}
}

5、业务类

@RestController
@RefreshScope
public class ConfigClientController
{@Value("${config.info}")private String configInfo;@GetMapping("/config/info")public String getConfigInfo() {return configInfo;}
}

注意:
@RefreshScope

6、在Nacos中添加配置信息

Nacos界面配置对应


配置完成

7、Nacos中的匹配规则

Nacos中的匹配规则,Nacos中的dataid的组成格式与SpringBoot配置文件中的匹配规则


运行后找不到配置文件 :这里有大坑

五、Nacos作为配置中心-分类配置

1、问题:多环境多项目管理

2、Nacos的图形化管理界面

配置管理:

命名空间:

3、Namespace+Group+Data ID三者关系?为什么这么设计?

4、举例子: Case

也可以直接指定需要加载的配置

spring.application.name=gulimall-product
#
spring.cloud.nacos.config.server-addr=121.89.172.98:8848 #nacos服务地址
spring.cloud.nacos.config.namespace=aa1cc650-df22-4230-951f-ab259c8d1847 命名空间id
spring.cloud.nacos.config.group=dev	#分组id
##
spring.cloud.nacos.config.ext-config[0].data-id=datasource.yml
spring.cloud.nacos.config.ext-config[0].group=dev
spring.cloud.nacos.config.ext-config[0].refresh=true
##
spring.cloud.nacos.config.ext-config[1].data-id=mybatis.yml
spring.cloud.nacos.config.ext-config[1].group=dev
spring.cloud.nacos.config.ext-config[1].refresh=true
##
spring.cloud.nacos.config.ext-config[2].data-id=other.yml
spring.cloud.nacos.config.ext-config[2].group=dev
spring.cloud.nacos.config.ext-config[2].refresh=true
#

六、centos7安装nacos

下载地址:nacos

解压运行
官方安装运行步骤

https://nacos.io/zh-cn/docs/quick-start.html 单机版运行
运行日志:在nacos/logs/下查看运行日志

问题1运行出错:

readlink: 缺少操作数
Try 'readlink --help' for more information.
dirname: 缺少操作数
Try 'dirname --help' for more information.
ERROR: Please set the JAVA_HOME variable in your environment, We need java(x64)! jdk8 or later is better! !!

解决方案:
参考地址:Nacos启动报错解决:which: no javac in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin)

  1. 没有配置java的环境变量

  2. java环境变量的配置方法不是安装JAVA_HOME的方式

  3. nacos这边是java_home下的bin目录,当时安装jdk使用的yum命令安装的,自动没带上jre目录。所以修改了java_home的路径到jre即可。

最终的配置文件

运行成功:

问题2:虚拟机内部可以访问 nacos 在windows中无法访问

解决方案
关闭防火墙

CentOS 7.0默认使用的是firewall作为防火墙
查看防火墙状态

firewall-cmd --state

停止firewall

systemctl stop firewalld.service

禁止firewall开机启动

systemctl disable firewalld.service 

application.properties配置

把样例配置复制出来一份 注意后缀 应该为 .properties

配置mysql

mysql 授权远程访问
GRANT ALL PRIVILEGES ON . TO ‘root’@’%’ IDENTIFIED BY ‘123456’ WITH GRANT OPTION;
flush privileges;
如果不是本地的还要注意远程的端口是否开放

配置集群

centos7配置

复制出集群配置文件(注意后缀.conf)并编辑

192.168.88.3:3333
192.168.88.3:4444
192.168.88.3:5555

把nacos项目复制3份 份别修改各自端口号
最终失败!!!

问题:运行后虚拟机卡死

解决办法
修改nacos\bin\startup.sh文件调整java虚拟机启动内存

默认为2G 修改为128M即可

转换采用windows版本的

windows版本配置(数据库配置参考上边)

启动方式:

startup -m cluster 以集群方式启动

1.把项目复制三份(避免复制这里采用虚拟机运行参数设置把一个项目启动三次)
2. 配置nacos\conf\cluster.conf 注意 是.conf 最终加载的是,conf文件 不加载.example(示例文件)

格式为 ip地址:端口号

  1. 修改nacos\bin下的startup.cmd

修改启动的端口号 把startup.cmd复制三份 分别修改端口为3333 4444 5555

  1. 最终启动这三个cmd 注意加参数 -m cluster 为集群启动 windwos下默认为单击模式
  2. 进入http://127.0.0.1:4444/nacos/查看

安装nginx

参考地址CentOS 7 下 yum 安装和配置 Nginx (亲测无坑)

修改\nginx-1.18.0\conf\nginx.conf


运行

./nginx -c /tool/nginx/nginx.conf

查看是否运行成功

ps -ef|grep nginx


由于nacos在centos7下集群启动失败
所以nginx也采用windows配置 (和centos7配置相同)

http://127.0.0.1:1111/nacos/ 查看
成功

测试服务注册

yml中注册中心地址修改为nginx 利用nginx负载均衡到nacos

最后发现 三个nacos中都存在该服务了

用消费端远程调用服务提供者 也是好用的

现在关闭nginx 发现三个nacos中的服务都没了 但是 不影响 消费端调用服务提供者不知道为什么


http://www.ppmy.cn/news/47703.html

相关文章

二叉排序树(二叉查找树)基本操作_20230417

二叉排序树&#xff08;二叉查找树&#xff09;基本操作_20230417 前言 二叉排序树首先是一颗二叉树&#xff0c;它不同于常规二叉树的地方在于&#xff0c;如果左子树不为空&#xff0c;那么左子树上所有结点的值都不大于根节点的值&#xff0c;如果右子树不为空&#xff0c…

wagon-maven-plugin 实现远程部署知识回顾

背景 记录 maven 的 wagon-plugin 自动部署插件的两个问题点&#xff1a; 远程主机密码中有特殊字符 直接在 url 路径的 scp 命令中写帐号密码识别不了的问题。执行 Java 命令报 java: command not found 的问题。commands 命令集合中&#xff0c;多个 command 之间开启的是…

AIGC从入门到精通

一键起飞 # 提前安装好python 3.10.9 ​git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui cd stable-diffusion-webui ./webui.sh -f --api --listen --enable-insecure-extension-access 非常详细&#xff01;6000字详解AI绘画文生图干货、技巧&#xf…

在CSDN创作了6个月,我收获了什么?文末送书~

作者主页&#xff1a;阿玥的小东东主页&#xff01; 正在学习&#xff1a;python和C/C 期待大家的关注哦 目录 一次很好的机会&#xff0c;让我开始了CSDN之旅 首先来看看我的几位领路人 创作动力 1W粉丝 在CSDN我收获了什么&#xff1f; 很高的展现量 认证创作者身份 社…

入门力扣自学笔记260 C++ (题目编号:2413)

2413. 最小偶倍数 题目&#xff1a; 给你一个正整数 n &#xff0c;返回 2 和 n 的最小公倍数&#xff08;正整数&#xff09;。 示例 1&#xff1a; 输入&#xff1a;n 5 输出&#xff1a;10 解释&#xff1a;5 和 2 的最小公倍数是 10 。 示例 2&#xff1a; 输入&#…

iTOP4412开发板Qt程序打包和部署

因为我们要把写好的程序发给用户来用&#xff0c;写好的源码也不方便给别人看&#xff0c;所以要把程序进行打包部署。 步骤一&#xff1a;点击左下角的电脑图标将 Debug 模式切换到 Release 模式。 release 模式&#xff1a;发布版本&#xff0c;不对源代码进行调试&#xff…

某程序员哀叹:辛辛苦苦写几年代码,做了些业务,有了点成就感,但回头一看80%都没用,没法写到简历上!...

什么事情会让你脊背一凉&#xff0c;细思极恐&#xff1f; 一位程序员说了一件很可怕的事&#xff1a; 辛辛苦苦写了几年代码&#xff0c;做了些业务&#xff0c;在一片祥和中有了点成就感。然而回头一看&#xff0c;80&#xff05;是没啥用的&#xff0c;甚至没法写到简历上&a…

SAP 性能监控工具

SAP 体系结构可能很复杂&#xff0c;因为它由许多不同的元素和多层应用程序组成。每个元素都必须以最佳方式执行&#xff0c;以确保响应迅速且可靠的服务级别。管理如此复杂的系统可能非常艰巨&#xff0c;这就是为什么使用强大的SAP监控工具绝对必要的原因。 什么是 SAP 监控 …