一、介绍

Nacos是阿里巴巴最新开源的项目,核心定位是“一个更易于帮助构建云原生应用的动态服务发现、配置和服务管理平台

Nacos核心提供两个功能:服务注册与发现,动态配置管理。

服务注册与发现

Nacos提供基于DNS和基于RPC的服务发现,即能被用来支持https/http的服务注册与发现,也支持RPC如dubbo的服务注册与发现。

与Dubbo使用的zookeeper相比而言,两者差异还是比较大的,zookeeper是一种分布式的协调服务,它天生是作为分布式数据一致性场景下的解决方案,所以zookeeper是CP的,它牺牲了可用性来保证一致性,在极端情况下(master选举期间)服务会对外停止,对于服务可用性要求比较高的系统是难以接受的。Nacos是一种去中心化的架构,属于CAP理论里的AP架构,支持最终一致性,在分布式服务发现与注册场景下具有很不错的性能。目前dubbo官方也支持使用Nacos代替zookeeper。

动态配置服务

动态修改配置并实时生效对于服务端的同学而已并不陌生,这种服务能够让我们的服务拥有更多的灵活性,不需要重启服务即可做到配置实时生效,非常适合于“配置优先”的服务开发。

二、部署nacos【单机模式下运行Nacos】

Nacos支持集群和单机部署两种方式,单机部署适合于开发调试,集群部署使用生产环境。参考文档:https://nacos.io/zh-cn/docs/deployment.html
1、naocs工作目录:/data/server/nacos-server

2、nacos日志目录:/data/server/nacos-server/logs

3、custom配置文件:/data/server/nacos-server/init.d/custom.properties

[root@localhost nacos]# cat init.d/custom.properties 
    #spring.security.enabled=false
    #management.security=false
    #security.basic.enabled=false
    #nacos.security.ignore.urls=/**
    #management.metrics.export.elastic.host=http://localhost:9200
    # metrics for prometheus
    management.endpoints.web.exposure.include=*
     
    # metrics for elastic search
    #management.metrics.export.elastic.enabled=false
    #management.metrics.export.elastic.host=http://localhost:9200
     
    # metrics for influx
    #management.metrics.export.influx.enabled=false
    #management.metrics.export.influx.db=springboot
    #management.metrics.export.influx.uri=http://localhost:8086
    #management.metrics.export.influx.auto-create-db=true
    #management.metrics.export.influx.consistency=one
    #management.metrics.export.influx.compressed=true

4、变量配置文件:/data/server/nacos-server/env.list

【使用自己的数据库,需要按照nacos提供的msyql脚本进行数据库初始化

[root@localhost nacos-server]# cat env.list 
    PREFER_HOST_MODE=hostname
    MODE=standalone
    SPRING_DATASOURCE_PLATFORM=mysql
    MYSQL_MASTER_SERVICE_HOST=hahah.mysql.rds.aliyuncs.com
    MYSQL_MASTER_SERVICE_PORT=3306
    MYSQL_MASTER_SERVICE_USER=dev-nacos
    MYSQL_MASTER_SERVICE_PASSWORD=123456
    MYSQL_MASTER_SERVICE_DB_NAME=nacos_config
    MYSQL_SLAVE_SERVICE_HOST=hhhhha.mysql.rds.aliyuncs.com
    MYSQL_SLAVE_SERVICE_PORT=3306

对应参数说明:


name

description

option

MODE

cluster模式/standalone模式

cluster/standalone default cluster

NACOS_SERVERS

nacos cluster地址

eg. ip1,ip2,ip3

PREFER_HOST_MODE

是否支持hostname

hostname/ip default ip

NACOS_SERVER_PORT

nacos服务器端口

default 8848

NACOS_SERVER_IP

多网卡下的自定义nacos服务器IP

 

SPRING_DATASOURCE_PLATFORM

standalone 支持 mysql

mysql / empty default empty

MYSQL_MASTER_SERVICE_HOST

mysql 主节点host

 

MYSQL_MASTER_SERVICE_PORT

mysql 主节点端口

default : 3306

MYSQL_MASTER_SERVICE_DB_NAME

mysql 主节点数据库

 

MYSQL_MASTER_SERVICE_USER

数据库用户名

 

MYSQL_MASTER_SERVICE_PASSWORD

数据库密码

 

MYSQL_SLAVE_SERVICE_HOST

mysql从节点host

 

MYSQL_SLAVE_SERVICE_PORT

mysql从节点端口

default :3306

MYSQL_DATABASE_NUM

数据库数量

default :2

JVM_XMS

-Xms

default :2g

JVM_XMX

-Xmx

default :2g

JVM_XMN

-Xmn

default :1g

JVM_MS

-XX:MetaspaceSize

default :128m

JVM_MMS

-XX:MaxMetaspaceSize

default :320m

NACOS_DEBUG

开启远程调试

y/n default :n

TOMCAT_ACCESSLOG_ENABLED

server.tomcat.accesslog.enabled

default :false


5、启动容器

docker run --network=host \
    --restart=always \
    --name dev-nacos \
    --env-file=/data/server/nacos/conf.list \
    -v /data/server/nacos-server/logs:/home/nacos/logs \
    -v /data/server/nacos-server/init.d/custom.properties:/home/nacos/init.d/custom.properties \
    -d nacos/nacos-server

或者直接在启动容器的时候指定对应参数即可:

docker run -d \
-e PREFER_HOST_MODE=ip \
-e MODE=standalone \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=172.168.1.33 \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=root \
-e MYSQL_SERVICE_DB_NAME=nacos \
-e TIME_ZONE='Asia/Shanghai' \
-v /home/dockerdata/nacos1.3.1/logs:/home/nacos/logs \
-p 8848:8848 \
--name nacos1.3.1 \
--restart=always \
nacos/nacos-server:1.3.1

查看日志、8848端口是否起来,打开对应网址:IP:8848/nacos 【默认账号密码都为 nacos】

docker和nacos docker和nacos 区别_JVM