文章目录

        • 一、window 启动
          • 1、Nacos 下载
          • 2、nacos 配置 MySQL 数据库
          • 3、启动 nacos
        • 二、docker 启动
          • 1、docker 拉取 nacos镜像
          • 2、初始化 MySQL 数据库脚本
          • 3、docker 启动 nacos(配置 MySQL 连接)
          • 4、解决问题
            • ①、`Nacos Server did not start because dumpservice bean construction failure : No DataSource set`
            • ②、`server error: such as timeout. Request nacos server failed`
        • 三、docker nacos 集群搭建
          • 1、启动集群
          • 2、查看集群
          • 3、nginx 代理 nacos 集群
          • 4、关闭双写
          • 5、服务上下线

官方网站: https://nacos.io/zh-cn/docs/quick-start.html

一、window 启动

1、Nacos 下载

Nacos 下载地址:https://github/alibaba/nacos/releases

2、nacos 配置 MySQL 数据库
  • 将 nacos 目录下的 config/nacos-mysql.sql 导入到MySQL,库名随便指定
  • 修改 config/application.properties 文件配置 MySQL 数据库
#*************** Config Module Related Configurations ***************#
### If use MySQL as datasource:
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=root
db.password.0=123456
3、启动 nacos

开启 nacos

Linux/Unix/Mac
启动命令(standalone代表着单机模式运行,非集群模式):

sh startup.sh -m standalone

如果您使用的是ubuntu系统,或者运行脚本报错提示[[符号找不到,可尝试如下运行:

bash startup.sh -m standalone

Windows
启动命令(standalone代表着单机模式运行,非集群模式):

startup.cmd -m standalone

访问地址 http://127.0.0.1:8848/nacos ,默认登陆用户名密码 nacos/nacos,新增命名空间,新建配置文件如下

二、docker 启动

1、docker 拉取 nacos镜像

DockerHub 下载镜像 https://registry.hub.docker/r/nacos/nacos-server

docker pull nacos/nacos-server
2、初始化 MySQL 数据库脚本

https://github/alibaba/nacos/blob/develop/distribution/conf/nacos-mysql.sql

3、docker 启动 nacos(配置 MySQL 连接)
docker run -d \
-e PREFER_HOST_MODE=ip \
-e MODE=standalone \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=42.0.0.0 \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_DB_NAME=nacos_config \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=123456 \
-e NACOS_APPLICATION_PORT=8848 \
-p 8848:8848 -p 9848:9848 -p 9849:9849 \
--name nacos \
--restart=always \
--privileged=true \
nacos/nacos-server

访问地址: http://42.0.0.0:8848/nacos 默认用户名密码: nacos/nacos,新增命名空间,新建配置文件如下

4、解决问题
①、Nacos Server did not start because dumpservice bean construction failure : No DataSource set

保证数据库连接正确,查看数据库名、刷新数据库连接、检查用户名密码、可加长连接超时时间、设置时区

②、server error: such as timeout. Request nacos server failed

如果是云服务器需要开启 8848、 9848 、9849 端口否则报错 server error: such as timeout. Request nacos server failed:
端口说明:https://nacos.io/zh-cn/docs/2.0.0-compatibility.html

Nacos2.0 (8848、 9848 、9849 )版本相比 1.X (8848)新增了gRPC的通信方式,因此需要增加2个端口。新增端口是在配置的主端口(server.port)基础上,进行一定偏移量自动生成。

端口与主端口的偏移量描述
8848nacos 主端口号
98481000客户端 gRPC 请求服务端端口,用于客户端向服务端发起连接和请求
98491001服务端 gRPC 请求服务端端口,用于服务间同步等

三、docker nacos 集群搭建

拉取镜像和初始化 nacos 数据库和上面的单机模式相同,以下 docker nacos 最新 2.0.4 版本部署成功,云服务器防火墙配置下面用到的端口

1、启动集群

注意需要开启 7848 端口,默认端口 8848 减去 1000,否则会报The Raft Group [naming_persistent_service] did not find the Leader node;
Nacos cluster is running with 1.X mode, can't accept gRPC request temporarily. Please check the server status or close Double write to force open 2.0 mode. Detail https://nacos.io/en-us/docs/2.0.0-upgrading.html.
caused: old raft protocol already stop;

192.168.1.1 服务器 nacos1

docker run -d\
 -e PREFER_HOST_MODE=ip\
 -e MODE=cluster\
 -e SPRING_DATASOURCE_PLATFORM=mysql\
 -e MYSQL_SERVICE_HOST=192.168.1.10\
 -e MYSQL_SERVICE_PORT=3306\
 -e MYSQL_SERVICE_DB_NAME=nacos_config\
 -e MYSQL_SERVICE_USER=username\
 -e MYSQL_SERVICE_PASSWORD=password\
 -e NACOS_APPLICATION_PORT=8848\
 -e NACOS_SERVERS="192.168.1.1:8848 192.168.1.1:8846 192.168.1.2:8848"\
 -e NACOS_SERVER_IP=192.168.1.1\
 -p 8848:8848 -p 9848:9848 -p 9849:9849 -p 7848:7848\
 --name nacos --restart=always nacos/nacos-server

192.168.1.1 服务器 nacos 2

docker run -d\
 -e PREFER_HOST_MODE=ip\
 -e MODE=cluster\
 -e SPRING_DATASOURCE_PLATFORM=mysql\
 -e MYSQL_SERVICE_HOST=192.168.1.10\
 -e MYSQL_SERVICE_PORT=3306\
 -e MYSQL_SERVICE_DB_NAME=nacos_config\
 -e MYSQL_SERVICE_USER=username\
 -e MYSQL_SERVICE_PASSWORD=password\
 -e NACOS_APPLICATION_PORT=8846\
 -e NACOS_SERVERS="192.168.1.1:8848 192.168.1.1:8846 192.168.1.2:8848"\
 -e NACOS_SERVER_IP=192.168.1.1\
 -p 8846:8846 -p 9846:9846 -p 9847:9847 -p 7846:7846\
 --name nacos2 --restart=always nacos/nacos-server

192.168.1.2 服务器 nacos3

docker run -d\
 -e PREFER_HOST_MODE=ip\
 -e MODE=cluster\
 -e SPRING_DATASOURCE_PLATFORM=mysql\
 -e MYSQL_SERVICE_HOST=192.168.1.10\
 -e MYSQL_SERVICE_PORT=3306\
 -e MYSQL_SERVICE_DB_NAME=nacos_config\
 -e MYSQL_SERVICE_USER=username\
 -e MYSQL_SERVICE_PASSWORD=password\
 -e NACOS_APPLICATION_PORT=8848\
 -e NACOS_SERVERS="192.168.1.1:8848 192.168.1.1:8846 192.168.1.2:8848"\
 -e NACOS_SERVER_IP=192.168.1.2\
 -p 8848:8848 -p 9848:9848 -p 9849:9849 -p 7848:7848\
 --name nacos --restart=always nacos/nacos-server
2、查看集群

此时 随便进一个服务地址 即可

上面的状态全部是 up 不一定集群搭建成功,点击节点元数据查看是否能选取 leader

或者使用接口获取 leader

http://192.168.1.1:8080/nacos/v1/ns/raft/leader,更多 nacos 相关 API 可参考 https://nacos.io/zh-cn/docs/open-api.html

如果不能选取 leader, 可以查看 nacos/logs 目录下的 nacos.log、 naming-raft.log、protocol-raft.log、nacos-cluster.log 、naming-server.log 日志看是否报错

3、nginx 代理 nacos 集群

docker 下载启动 nginx 容器不做阐述

如果你已经挂载了 nginx 的配置文件直接修改即可,没有挂载也可以进入容器修改

default.conf 我配置的比较简单,权重自己配置

upstream nacosList {
    server 192.168.1.1:8848 weight=1;
	server 192.168.1.2:8848 weight=2;
	server 192.168.1.1:8846 weight=3;
}

server {
    listen       80;
    listen  [::]:80;
    server_name  192.168.1.1;

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }
    location /nacos {
        proxy_pass  http://nacosList/nacos;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}

我的 nginx 8080 映射 80,如下 nginx f负载均衡成功

4、关闭双写

nacos 文档说明关闭双写可以节省性能开销

PUT : http://192.168.1.1:8848/nacos/v1/ns/operator/switches?entry=doubleWriteEnabled&value=false

logs/naming-server.log 日志中观察到 Disable Double write, stop and clean v1.x cache and features字样,说明关闭双写。

5、服务上下线

nacos 控制台注册的服务可以正常上下线

更多推荐

Nacos 下载启动、配置 MySQL 数据库