Nacos 部署 - 配置中心,注册中心 安装部署 系统软件 docker


https://hub.docker.com/r/nacos/nacos-server


# Nacos 不仅仅可以作为配置中心使用,还可以作为注册中心使用

# nacos - 发现、配置和管理微服务

https://abc.htmltoo.com/thread-46774.htm


# 运行

docker run -d  --name nacos -p 8848:8848  --restart=always  -e MODE='standalone'   -e TZ='Asia/Shanghai'   -v /etc/localtime:/etc/localtime:ro     nacos/nacos-server


docker run -d  --name nacos -p 8848:8848  --restart=always -e MODE='standalone'   -e TZ='Asia/Shanghai'   -v /etc/localtime:/etc/localtime:ro   -e PREFER_HOST_MODE='ip'  -e SPRING_DATASOURCE_PLATFORM='mysql' 

-e MYSQL_SERVICE_HOST='mariadb'  -e MYSQL_SERVICE_PORT='3306'  -e MYSQL_SERVICE_USER='htmltoonacos'  -e MYSQL_SERVICE_PASSWORD='wdqdmm@r' -e MYSQL_SERVICE_DB_NAME='root'  -e  NACOS_AUTH_ENABLE='true'   --link mariadb  nacos/nacos-server



访问 http://127.0.0.1:8848/nacos/#/login

默认:nacos/nacos


docker exec -it nacos  /bin/bash


MODE                         系统启动方式: 集群/单机           cluster/standalone默认 cluster

NACOS_SERVERS         nacos cluster address           ip1:port,ip2:port,ip3:port

PREFER_HOST_MODE 支持IP还是域名模式                   hostname/ip 默认 ip

SPRING_DATASOURCE_PLATFORM standalone support mysql mysql / 空 默认:空

NACOS_AUTH_ENABLE 是否开启权限系统 默认 :false


-集群,nginx 配置

upstream nacoscluster {
	server 192.168.0.156:8848;
	server 192.168.0.156:8847;
	server 192.168.0.156:8846;
}
	 
server {
	listen 80;
	server_name  localhost;
	location /nacos/ {
		proxy_pass http://nacoscluster/nacos/;
}

-配置 application.properties

spring.cloud.nacos.discovery.server-addr=nginx路径:端口

例如: 192.168.0.156:80

-其他方式 application.properties

spring.cloud.nacos.discovery.server-addr=ip1:port,ip2:port,ip3:port

-e

-e NACOS_SERVERS='192.168.0.156:80'

-e NACOS_SERVERS='ip1:port,ip2:port,ip3:port' 


# Spring Boot 集成


1. 配置命名空间


2. Spring Cloud + Nacos

---依赖配置

compile libs["spring-cloud-starter-alibaba-nacos-config"]
compile libs["spring-cloud-starter-alibaba-nacos-discovery"]

---resources 下新建文件 bootstrap.yaml

# nacos 配置 (nacos config必须配置在bootstrap)
spring:
  cloud:
    nacos:
      discovery:
        server-addr: ${NACOS_SERVER_ADDR:127.0.0.1:8848}
        namespace: ${NACOS_NAMESPACE:dsb-cloud}
        metadata:
          {"checkSum": "${random.value}-${random.uuid}"}
      config:
        server-addr: ${NACOS_SERVER_ADDR:127.0.0.1:8848}
        namespace: ${NACOS_NAMESPACE:dsb-cloud}
        file-extension: yaml

---服务注册中心

// 启动类开启注解
@EnableDiscoveryClient

---作为 Spring Boot 项目启动后,可以看到成功注册到 Nacos 上了。

服务管理 ==>服务列表

点击详情后可以看到对应的服务信息


3. Dubbo + Nacos

---公共 API 包

---服务提供者

pom

dependencies {
    compile libs["spring-boot-starter-actuator"]
    //nacos
    compile(libs["nacos-discovery-spring-boot-starter"]) {
        exclude group: 'com.alibaba.spring', module: 'spring-context-support'
    }
    compile 'com.alibaba.spring:spring-context-support:1.0.3'
    compile project(':spring-cloud-examples:dubbo-examples:spring-cloud-dubbo-api')
    compile libs['dubbo-spring-boot-starter']
    testCompile "org.springframework.boot:spring-boot-starter-test"
}

application.yaml

spring:
  application:
    name: spring-boot-dubbo-provider
dubbo:
  application:
    name: spring-boot-dubbo-provider
    registry: nacos://127.0.0.1:8848
  protocol:
    name: dubbo
    port: 20880

bootstrap.yaml

# nacos 配置 (nacos config必须配置在bootstrap)
spring:
  cloud:
    nacos:
      discovery:
        server-addr: ${NACOS_SERVER_ADDR:127.0.0.1:8848}
        namespace: ${NACOS_NAMESPACE:dsb-cloud}
        metadata:
          {"checkSum": "${random.value}-${random.uuid}"}
      config:
        server-addr: ${NACOS_SERVER_ADDR:127.0.0.1:8848}
        namespace: ${NACOS_NAMESPACE:dsb-cloud}
        file-extension: yaml

核心类

// 启动类
@SpringBootApplication
@DubboComponentScan
public class SpringBootDubboProviderApplication {
    public static void main(String[] args) {
        SpringApplication.run(SpringBootDubboProviderApplication.class, args);
    }
}
//服务实现类
package pub.dsb.api.service.impl;
import org.apache.dubbo.config.annotation.Service;
import pub.dsb.api.service.IHelloService;
@Service
public class HelloServiceImpl implements IHelloService {
    @Override
    public String hi(String name) {
        return "spring-cloud-dubbo-example:" + name;
    }
}


启动服务提供者     ===> 服务管理列表


---服务消费者

pom (和服务提供者一样)

dependencies {
    compile libs["spring-boot-starter-web"]
    compile libs["spring-boot-starter-actuator"]
    //nacos
    compile(libs["nacos-discovery-spring-boot-starter"]) {
        exclude group: 'com.alibaba.spring', module: 'spring-context-support'
    }
    compile 'com.alibaba.spring:spring-context-support:1.0.3'
    compile project(':spring-cloud-examples:dubbo-examples:spring-dubbo-api')
    compile libs['dubbo-spring-boot-starter']
    testCompile "org.springframework.boot:spring-boot-starter-test"
}

yaml

spring:
  application:
    name: spring-boot-dubbo-consumer
dubbo:
  registry:
    address: nacos://127.0.0.1:8848

核心类

@RestController
public class DubboRefController {
    @Reference(check = false)
    private IHelloService helloService;
    @GetMapping("/hi")
    public String hi(){
        return helloService.hi(System.currentTimeMillis() + "");
    }
}
//启动类
@SpringBootApplication
public class SpringBootDubboConsumerApplication {
    public static void main(String[] args) {
        SpringApplication.run(SpringBootDubboConsumerApplication.class, args);
    }
}

接口测试 服务提供者 8080, 服务消费者 8081

GET http://127.0.0.1:8081/hi
HTTP/1.1 200
Content-Type: text/plain;charset=UTF-8
Content-Length: 40
Date: Tue, 01 Sep 2020 16:55:53 GMT
spring-cloud-dubbo-example:1598979353325

注册信息 ===> 服务名


1.动态配置服务

动态配置服务让您能够以中心化、外部化和动态化的方式管理所有环境的配置。动态配置消除了配置变更时重新部署应用和服务的需要。配置中心化管理让实现无状态服务更简单,也让按需弹性扩展服务更容易。

2.服务发现及管理

动态服务发现对以服务为中心的(例如微服务和云原生)应用架构方式非常关键。Nacos支持DNS-Based和RPC-Based(Dubbo、gRPC)模式的服务发现。Nacos也提供实时健康检查,以防止将请求发往不健康的主机或服务实例。借助Nacos,您可以更容易地为您的服务实现断路器。

3.动态DNS服务

通过支持权重路由,动态DNS服务能让您轻松实现中间层负载均衡、更灵活的路由策略、流量控制以及简单数据中心内网的简单DNS解析服务。动态DNS服务还能让您更容易地实现以DNS协议为基础的服务发现,以消除耦合到厂商私有服务发现API上的风险。


https://my.oschina.net/u/4236367/blog/4541604


签名:这个人很懒,什么也没有留下!
最新回复 (0)
返回