nacos的集群部署与spring集成

2,108 阅读3分钟

一、nacos的下载

1.1 下载

地址: github.com/alibaba/nac… , 这是各种版本的nacos下载链接,本次我用的是1.4.0作为演示版本,建议使用稳定版。

1.2 解压

cd /usr/local
wget https://github.com/alibaba/nacos/releases/download/1.4.0/nacos-server-1.4.0.tar.gz
tar -xzvf nacos-server-1.4.0.tar.gz

之后就能在/usr/local/nacos/文件夹中看到nacos的目录结构

二、nacos的配置与启动

2.1 创建配置中心的持久化数据库

新建数据库
sql建表语句: github.com/alibaba/nac…

2.2 修改配置文件

修改配置文件 conf/application.properties

修改contextPath可以自定义nacos管理平台的路径
修改port可以自定义nacos的启动端口

行尾新增

spring.datasource.platform=mysql

db.num=1
db.url.0=jdbc:mysql://ip:port/库名?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=用户名
db.password=密码

这样就完成了nacos的基本配置

2.3 nacos单机模式启动

在bin目录下通过start_up.sh脚本启动

sh startup.sh -m standalone

启动成功后, 执行

 ps -ef | grep nacos

grep到nacos的进程 访问ip:port/contextPath看到登录页面,则启动成功。默认的账号和密码都是nacos

2.4 nacos集群模式启动

2.4.1 修改配置文件

  • 配置conf/cluster.conf,将集群的所有节点都写入该文件
# 如果是单主机部署集群,ip要写能联网的网卡的IP地址
# 如果是不同的主机部署,要填写公网ip
192.168.43.123:8847
192.168.43.123:8848
192.168.43.123:8849
  • 将nacos复制三份 复制nacos
  • 分别修改application.properties端口为集群cluster.conf的端口
vim nacos-8847/conf/application.properties
# 修改端口为8847
vim nacos-8849/conf/application.properties
# 修改端口为8849

2.4.2 启动nacos集群

分别启动各节点下的bin/start_up.sh
启动成功后,三个节点的nacos都能访问成功 进入nacos,打开节点列表,可以看到有三个节点

2.4.3 配置nginx代理

为了能让注册中心和配置中心的访问压力都平分到三个节点,我们配置一个nginx做请求转发
下载并启动nginx, 参考: www.cnblogs.com/zhangliuher…

修改配置文件conf/nginx.conf

# 新增
 upstream serverList {
        server 127.0.0.1:8847;
        server 127.0.0.1:8848;
        server 127.0.0.1:8849;
    }

    server {
        listen       4399;
        server_name  localhost;

        location / {
        proxy_pass http://serverList/;
        }
    }

启动/重载nginx,访问4399端口/nacos,如果能看到管理平台则nginx配置成功

三、spring集成nacos

3.1 引入依赖(依赖版本参考: github.com/alibaba/spr…)

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

3.2 新建配置文件bootstrap.yml

spring:
  application:
    name: order-service # 服务名(对应注册中心的服务名称)
  cloud:
    nacos:
      config: # 配置中心
        file-extension: yaml # 配置中心的配置文件对应的解析格式
        server-addr: 172.16.0.210:4399 # nacos配置中心对应地址(nginx)
        namespace: # 命名空间(不填则默认default)
        group: ORDER-SERVICE-GROUP # 分组名
      discovery: # 服务注册中心
        namespace: # 命名空间(不填则默认default)
        server-addr: 172.16.0.210:4399 # nacos服务注册中心对应地址(nginx)
server:
  port: 10003 # 服务启动端口

3.3 启动注解

// 在spring启动类增加
@SpringBootApplication
@EnableDiscoveryClient

注意,这里加了@SpringBootApplication和@EnableDiscoveryClient,不要偷懒换成@SpringCloudApplication!!!虽然@SpringCloudApplication注解里包含@SpringBootApplication和@EnableDiscoveryClient,不过它也包含@EnableCircuitBreaker注解。@EnableCircuitBreaker是断路器的,如果你引用@SpringCloudApplication注解,那么maven需要引入hystrix的JAR包和配置包,很麻烦!!!

3.4 启动spring

3.4.1 在nacos中定义配置文件

可以把所有的配置信息——数据库、消息队列等配置信息定义到nacos配置中心。

    1. 点击新增按钮
    1. data-id: #{spring.application.name}-#{spring.profiles.active}.yaml
    1. group: 分组名(默认DEFAULT_GROUP)
    1. 将配置信息写入配置内容输入框中,配置格式记得选择YAML

3.4.2 启动

spring能正常启动,在注册中心中能看到服务实例,则启动成功

参考: nacos.io/zh-cn/docs/…