nacos安装及配置

nacos版本:3.0.2

需要jdk版本:64 bit JDK 17+


一、JDK安装及配置

jdk下载:https://jdk.java.net/java-se-ri/22

JDK配置:

vim /etc/profile

export JAVA_PATH=/zjl/program/jdk_22
export PATH=$JAVA_PATH/bin:$PATH

source /etc/profile

二、nacos安装及配置

1、下载

下载地址:https://www.nacos.io/download/nacos-server/

解压:unzip nacos-server-3.0.2.zip

2、配置

目录:/nacos/conf

2.1、配置集群

cp cluster.conf.example cluster.conf

vim cluster.conf

192.168.244.131:8848
192.168.244.132:8848
192.168.244.133:8848

2.2、初始化mysql数据库

创建数据库user:nacos,密码:zjl123

执行sql初始化语句:

sql语句目录 :/nacos/conf

sql语句文件: mysql-schema.sql

2.3、application.properties配置

关键配置:

nacos.server.main.port=8848
spring.sql.init.platform=mysql
### Count of DB:
db.num=1
db.url.0=jdbc:mysql://192.168.244.131:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user=nacos
db.password=zjl123

### worked when nacos.core.auth.enabled=true
### The two properties is the white list for auth and used by identity the request from other server.
nacos.core.auth.server.identity.key=zjlnacos
nacos.core.auth.server.identity.value=zjl123
nacos.core.auth.plugin.nacos.token.secret.key=dXNlcm5hbWU6empsbmFjb3M7cGFzc3dvcmQ6empsMTIz
  • 配置mysql数据库
  • 配置3个鉴权相关配置,用于集群间的权限较验
  • nacos.core.auth.enabled=true :nacos配置,用来启动鉴权

2.4、启动

目录 :/nacos/bin

启动:./startup.sh

三、springboot项目整合nacos注册中心

1、引入starter

<dependency>
      <groupId>com.alibaba.boot</groupId>
      <artifactId>nacos-discovery-spring-boot-starter</artifactId>
      <version>0.2.12</version>
</dependency>

2、配置yml

nacos:
  discovery:
    server-addr: 192.168.244.131:8848,192.168.244.132:8848,192.168.244.133:8848
    auto-register: true
    username: zjltestnacos
    password: zjlzjl123
  • auto-register: true :这个配置是用来控制是否自动注册服务到Nacos的。如果设置为true,你的服务启动后会自动注册到Nacos中心。
  • nacos.core.auth.enabled=true :nacos配置,用来启动鉴权
  • 用户名密码是nacos后台-用户管理-里的用户名和密码

例子:

# 这里配置的是Nacos服务端的地址和端口。默认情况下,Nacos的服务端地址是127.0.0.1,端口是8848,而不是8748。请确保使用正确的端口。
nacos.discovery.server-addr=127.0.0.1:8748
# 如果你使用了Namespace,确保Namespace的ID是正确的。在你的Nacos控制台中查看Namespace的ID,并将其配置到nacos.discovery.namespace属性中。
nacos.discovery.namespace=8afda2b0-5b6c-4839-9bb5-ee9db41fae1e
# 这个配置是用来控制是否自动注册服务到Nacos的。如果设置为true,你的服务启动后会自动注册到Nacos中心。确保这个配置项符合你的需求。
nacos.discovery.auto-register=true

3、启动项目

nacos后台查看注册信息

image


4、自定义注册配置(非必要)

package com.zjl.test.tick.config;

import com.alibaba.nacos.api.annotation.NacosInjected;
import com.alibaba.nacos.api.annotation.NacosProperties;
import com.alibaba.nacos.api.exception.NacosException;
import com.alibaba.nacos.api.naming.NamingService;
import com.alibaba.nacos.api.naming.pojo.Instance;
import com.alibaba.nacos.spring.context.annotation.discovery.EnableNacosDiscovery;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;

import javax.annotation.PostConstruct;
import java.util.List;

@Configuration
@EnableNacosDiscovery(globalProperties = @NacosProperties(serverAddr = "192.168.244.131:8848"))
public class NacosDiscoveryConfig {
    // 服务名称
    @Value("${spring.application.name}")
    private String applicationName;
    // 服务的端口号
    @Value("${server.port}")
    private Integer port;
    // 服务ip地址
    @Value("${server.ip}")
    private String ip;
    @NacosInjected
    private NamingService namingService;
    // @PostConstruct 在依赖注入完成时执行注解的方法
    @PostConstruct
    public void register() throws NacosException {
        // 注册服务
        namingService.registerInstance(applicationName, ip, port);
        // 监听实现
        try {
            List<Instance> instances = namingService.getAllInstances(applicationName);
            System.out.println("Initial service instances: " + instances);
            // You can implement your logic to handle service instance changes here
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
View Code

四、springboot项目整合nacos配置中心

1、nacos控制台新建配置

image


2、配置maven

<dependency>
  <groupId>com.alibaba.boot</groupId>
  <artifactId>nacos-config-spring-boot-starter</artifactId>
  <version>0.2.12</version>
</dependency>

3、配置yml

nacos:
  config:
    data-id: test_yaml
    type: yaml
    bootstrap:
      enable: true
    server-addr: 192.168.244.131:8848,192.168.244.132:8848,192.168.244.133:8848
    username: zjltestnacos
    password: zjlzjl123

例子:

nacos.config.server-addr=127.0.0.1:7748
nacos.config.namespace=8afda2b0-5b6c-4839-9bb5-ee9db41fae1e
nacos.config.data-id=springboot-bo
# 该属性定义了配置的类型。在这里,它设置为 properties,表示配置以属性文件的形式存在。
nacos.config.type=properties
# 当设置为 true 时,该属性在应用程序的引导阶段启用 Nacos 作为配置源。通常用于在主应用程序上下文创建之前加载配置属性。
nacos.config.bootstrap.enable=true
# 当设置为 true 时,该属性启用远程配置同步。这意味着应用程序将从 Nacos 服务器获取其配置。
nacos.config.enable-remote-sync-config=true

4、配置中心替换application.yml

4.1、yml只配置nacos配置中心的配置

image


4.2、其他配置转移到nacos配置中心

image

四、nginx代理nacos配置

1、监听8848端口,配置http模块

http {
    upstream zjl_nacos_cluster {
        server 192.168.244.131:8848;
        server 192.168.244.132:8848;
        server 192.168.244.133:8848;
    }

    server {
        listen       8848;

        error_log /zjl/program/nginx/error.log debug;
        resolver 8.8.8.8 8.8.4.4 valid=300s;

        location / {
            proxy_pass http://zjl_nacos_cluster; # 代理到内部服务器
            proxy_set_header Host $host; # 将原始请求头中的Host传递到后端服务器
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 将原始请求中的X-Forwarded-For头传递到后端服务器
            proxy_set_header X-Forwarded-Proto $scheme; # 将原始请求协议传递到后端服务器
       }

    }
}

2、监听9848端口,配置stream模块

stream {
    upstream zjl_nacos_grpc {
        server 192.168.244.131:9848;
        server 192.168.244.132:9848;
        server 192.168.244.133:9848;
    }
    server {
        listen 9848;
        proxy_pass zjl_nacos_grpc;
    }
}

参考:https://developer.aliyun.com/article/1436138

posted @ 2025-08-15 19:23  pk.com.cn  阅读(98)  评论(0)    收藏  举报