SpringCloud-笔记12-nacos-配置、服务注册与发现

image.png
image.png

spring-cloud-alibaba-demo b站

image.png
image.png

nacos 服务提供者、消费者、配置demo

https://github.com/zhiguicai/springcloudalibabademo

一、nacos安装&运行

nacos官方文档
nacos官方社区 -segmentfault--推荐
Spring Cloud Nacos实现分布式环境下的配置管理和服务注册发现-segmentfault

Java微服务新生代之Nacos--安装、集群、集成
nacos修改默认的用户名密码
java微服务Nacos配置管理

SpringCloud - 服务注册与配置中心Nacos使用详解2(同一个服务器上启动三Nacos-集群部署)

IntelliJ IDEA 中创建maven项目

SpringCloud Alibaba Nacos服务注册和配置中心--推荐*

####下载
#下载
 git clone https://github.com/alibaba/nacos.git
#或直接下编译好的 [nacos-server-2.0.0.zip](https://github.com/alibaba/nacos/releases/download/2.0.0-bugfix/nacos-server-2.0.0.zip)

#nacos1.4.0 https://github.com/alibaba/nacos/releases/download/1.4.0/nacos-server-1.4.0.tar.gz


#安装到本地仓库
 cd nacos/
mvn -Prelease-nacos clean install -U
#Maven 方式打包后会在当前目录 distribution/target 下生成两个压缩包 nacos-server-1.0.1.tar.gz 和 nacos-server-1.0.1.zip,任意解压一个使用即可。
#解压&运行
tar -xvf nacos-server-2.0.0.tar.gz
cd ./nacos/bin
./startup.sh -m standalone

centos 单例运行


centos 单例运行

win10 startup.cmd之前需要修改 set MODE="standalone" 、或配置集群信息


image.png

err运行错误原因:nacos1.3.2不能启动(Aug 4, 2020)启动报错:db.num is null

#访问地址
http://192.168.235.2:8848/nacos/index.html
#user: nacos ;pwd:nacos  (->czg*)
image.png

二、nacos集群配置

2.1 mysql中创建nacos的数据库nacos_config

Nacos 推荐生产环境中数据库使用建议至少主备模式,或者采用高可用数据库。

这里为了简化只采用了一个数据库。首先新建一个名为 nacos_config 的数据库

#naicat 或其他mysql客户端运行如下创建数据库脚本
DROP DATABASE IF EXISTS nacos_config;
CREATE DATABASE IF NOT EXISTS nacos_config DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

USE nacos_config;

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

2.2 初始化nacos数据

使用提供的 sql 语句源文件 导入初始数据。

image.png

初始化脚本中除了建表外,就是为nacos建立一个nacos用户,并为其设置了管理员角色

image.png

2.3 集群配置

#停止nacos服务
./shutdown.sh
#查看ip地址,比如得到ip  172.27.189.199 
ifconfig

2.3.1 配置cluster.conf(集群节点)
在每个 Nacos 节点的conf目录下,添加配置文件 cluster.conf,可以参考相同目录下的 cluster.conf.example 文件,每行配置一个节点的 IP 和端口,如 ip:port


cp ./nacos/conf/cluster.conf.example ./nacos/conf/cluster.conf
#编辑集群配置文件
vim ./nacos/conf/cluster.conf

比如

172.27.189.199:8848
172.27.189.199:8847
172.27.189.199:8846

2.3.2 配置conf/application.properties(mysql数据库连接)

#编辑集群配置文件
vim ./nacos/conf/application.properties

其中server.port=8848是端口号

配置内容方式参考:application.properties.example

image.png
# spring.datasource.platform=mysql
### Count of DB:
# db.num=1

### Connect URL of DB:
# db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
# db.user.0=nacos
# db.password.0=nacos

2.3.2copy nacos目录为集群实例

cp -r nacos nacos8846
cp -r nacos nacos8847

并修改对应的端口server.port=8848是端口号-->8846 、8847

分别启动不同的集群实例,分别运行在8846、8847、8848端口

./nacos/bin/startup.sh 
./nacos8846/bin/startup.sh 
./nacos8847/bin/startup.sh 
image.png

查看启动日志

cat ./nacos8846/logs/start.out 

There is insufficient memory for the Java Runtime Environment to continue.
Native memory allocation (mmap) failed to map 1073741824 bytes for committing reserved memory.


image.png

Caused by: io.grpc.netty.shaded.io.netty.channel.unix.Errors$NativeIoException: bind(..) failed: Address already in use

image.png

同一台服务器, 启动nacos集群,出现端口占用问题,具体问题如下 (版本号 : 2.0.0-ALPHA.2)


三、nacos服务注册(Config)与发现(Discovery--阿里默认集成ribbon)

阿里巴巴的 spring-cloud-alibaba-examples

阿里巴巴的 nacos-example

springboot接入nacos(转载)--模块化--推荐

服务注册(privide)

先上效果图


image.png

服务提供者 pom.xml



    4.0.0
    
        org.springframework.boot
        spring-boot-starter-parent
        2.4.5
         
    
    com.czg
    nacos-demo
    0.0.1-SNAPSHOT
    nacos-demo
    Demo project for Spring Boot
    
        1.8
        2020.0.2
    
    
        
            org.springframework.boot
            spring-boot-starter-web
        


        
            org.springframework.boot
            spring-boot-starter-test
            test
        








        
        
            org.springframework.cloud
            spring-cloud-starter-alibaba-nacos-discovery

            0.2.2.RELEASE
        


        
            org.springframework.boot
            spring-boot-starter-security
        

    
    
        
            
                org.springframework.cloud
                spring-cloud-dependencies
                ${spring-cloud.version}
                pom
                import
            
        
    

    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
        
    



服务provider的对外controlller需要添加@EnableDiscoveryClient


image.png
@RestController
@EnableDiscoveryClient

public class ProTest {
    @GetMapping("/get")
    public String echo() {
        return "Hello Nacos Discovery ";
    }

}

application.yml

server:
  port: 8001
spring:
  application:
    name: shopping
  cloud:
    nacos:
      discovery:
        server-addr: 118.178.84.253:8848

发现(Discovery)

你可能感兴趣的:(SpringCloud-笔记12-nacos-配置、服务注册与发现)