0
点赞
收藏
分享

微信扫一扫

Nacos注册配置中心安装与配置

柠檬果然酸 2022-03-16 阅读 106

一、官方文档

特别注意:官方文档中的Docker运行的公共属性配置很久没有更新了,特别是数据库这一块,Docker运行最好参照Docker Hub官方的运行公共属性。 Docker Hubhttps://hub.docker.com/r/nacos/nacos-server/tags

 二、安装与配置

1、拉取Docker Hub镜像

# 拉取nacos-server镜像
$ docker pull nacos/nacos-server:v2.0.3

# 查看拉取的镜像
$ docker images

2、目录结构说明

 3、配置和启动运行

 这里我们采用分别运行

  • standalone-mysql-5.7.yaml 单机MySQL5.7版本数据库(推荐)
  • cluster-hostname.yaml 集群hostname模式nacos采用MySQL数据库(推荐)
.
├── cluster-hostname.yaml  docker-compose集群启动运行配置
├── docker-compose-cluster-run.sh    docker-compose集群启动脚本
├── docker-compose-standalone-run.sh    docker-compose单机启动脚本
├── env    运行的环境参数
│   ├── nacos-hostname.env    hostname模式集群运行环境参数配置文件
│   └── nacos-standlone-mysql.env    单机运行环境参数配置文件
├── init.d    初始化文件
│   └── custom.properties    监控自定义配置文件
└── standalone-mysql-5.7.yaml    采用MySQL5.7单机运行

3.1、单机MySQL5.7版本数据库(推荐)

version: "2"
services:
  # 指定服务名称
  nacos:
    # 指定服务使用的镜像
    image: nacos/nacos-server:v2.0.3
    # 指定容器名称
    container_name: nacos-standalone-mysql
    # 指定环境变量配置文件
    env_file:
      - ./env/nacos-standlone-mysql.env
    # 挂载的配置文件目录
    volumes:
      # 挂载日志文件
      - ./standalone-logs/:/home/nacos/logs
      # 挂载自定义服务监控配置文件
      - ./init.d/custom.properties:/home/nacos/init.d/custom.properties
    # 指定服务运行的端口映射
    ports:
      - "8848:8848"
      - "9848:9848"
      - "9555:9555"
    # 在容器非正常退出时重启容器,最多重启3次
    restart: on-failure
  • /env/nacos-standlone-mysql.env

$ docker-compose -f standalone-mysql-5.7.yaml up -d

启动成功 

3.2、集群hostname模式nacos采用MySQL数据库(推荐)

  • cluster-hostname.yaml

version: "3"
services:
  # 指定服务名称
  nacos1:
    # 指定主机名,在env/nacos-hostname.env 配置中采用 NACOS_SERVERS=nacos1:8848 nacos2:8848 nacos3:8848
    hostname: nacos1
    # 指定容器名称
    container_name: nacos1
    # 指定服务使用的镜像
    image: nacos/nacos-server:v2.0.3
    # 挂载的配置文件目录
    volumes:
      # 挂载日志文件
      - ./cluster-logs/nacos1:/home/nacos/logs
      # 挂载自定义服务监控配置文件
      - ./init.d/custom.properties:/home/nacos/init.d/custom.properties
    # 指定服务运行的端口映射
    ports:
      - "8848:8848"
      - "9848:9848"
      - "9555:9555"
    # 指定环境变量配置文件
    env_file:
      - ./env/nacos-hostname.env
    # 在容器退出时总是重启容器
    restart: always

  # 指定服务名称
  nacos2:
    # 指定主机名,在env/nacos-hostname.env 配置中采用 NACOS_SERVERS=nacos1:8848 nacos2:8848 nacos3:8848
    hostname: nacos2
    # 指定服务使用的镜像
    image: nacos/nacos-server:v2.0.3
    # 指定容器名称
    container_name: nacos2
    # 挂载的配置文件目录
    volumes:
      # 挂载日志文件
      - ./cluster-logs/nacos2:/home/nacos/logs
      # 挂载自定义服务监控配置文件
      - ./init.d/custom.properties:/home/nacos/init.d/custom.properties
    # 指定服务运行的端口映射
    ports:
      - "8849:8848"
      - "9849:9848"
    # 指定环境变量配置文件
    env_file:
      - ./env/nacos-hostname.env
    # 在容器退出时总是重启容器
    restart: always
    
  # 指定服务名称
  nacos3:
    # 指定主机名,在env/nacos-hostname.env 配置中采用 NACOS_SERVERS=nacos1:8848 nacos2:8848 nacos3:8848
    hostname: nacos3
    # 指定服务使用的镜像
    image: nacos/nacos-server:v2.0.3
    # 指定容器名称
    container_name: nacos3
    # 挂载的配置文件目录
    volumes:
      # 挂载日志文件
      - ./cluster-logs/nacos3:/home/nacos/logs
      # 挂载自定义服务监控配置文件
      - ./init.d/custom.properties:/home/nacos/init.d/custom.properties
    # 指定服务运行的端口映射
    ports:
      - "8850:8848"
      - "9850:9848"
    # 指定环境变量配置文件
    env_file:
      - ./env/nacos-hostname.env
    # 在容器退出时总是重启容器
    restart: always
  • nacos-hostname.env

### nacos env
# cluster模式/standalone模式 cluster/standalone default cluster
MODE=cluster

# 是否支持hostname hostname/ip default ip
PREFER_HOST_MODE=hostname

# nacos cluster地址 cluster-hostname.yaml中的hostname主机名对应
NACOS_SERVERS=nacos1:8848 nacos2:8848 nacos3:8848

# standalone 支持 mysql mysql / empty default empty
SPRING_DATASOURCE_PLATFORM=mysql

# MySQL数据库host
MYSQL_SERVICE_HOST=172.18.75.176
# MySQL数据库
MYSQL_SERVICE_DB_NAME=nacos_config
# MySQL数据库端口
MYSQL_SERVICE_PORT=3306
# MySQL数据库用户名
MYSQL_SERVICE_USER=nacos_rw
# MySQL数据库密码
MYSQL_SERVICE_PASSWORD=123456
# MySQL数据连接后面的参数
MYSQL_SERVICE_DB_PARAM=characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false
  • docker-compose-cluster-run.sh
$ docker-compose -f cluster-hostname.yaml up -d

 3.3、集群ip模式nacos采用MySQL数据库

集群ip模式 和 hostname模式唯一不同的点就是,ip模式需要配置指定的ip地址 

  • cluster-ip.yaml 与 cluster-hostname.yaml 对比

ip地址和hostname

网络桥接模式

 

nacos-hostname.env 和 nacos-ip.env 

三、遇到问题

gRpc连接问题

 参考文章

Springboot启动提示:com.alibaba.nacos.shaded.io.grpc.StatusRuntimeException: UNAVAILABLE: io exception_奋斗者潘的博客-程序员宝宝 - 程序员宝宝https://cxybb.com/article/keypanj2ee/118725971

解决方案

集群模式可以通过Nginx反向代理,或者通过阿里云的负载均衡(CLB)解决

  • 代理Http端口
http {
 ......
    # nacos server服务器 部署在39.108.192.223 /usr/local/deploy/nacos-server
    upstream nacos_server_http_upstream {
        server  172.18.75.167:8848;
        server  172.18.75.167:8849;
        server  172.18.75.167:8850;
    }
    
    server {
       listen       8848;
       server_name  127.0.0.1;

       charset utf-8;
       access_log  logs/nacos_servers_access.log main;
       include proxy.conf;

       location / {
           proxy_pass http://nacos_server_http_upstream;
       }

       location ~ ^/(WEB-INF)/ {
           deny all;
       }

       location ~ \.(php|asp|aspx) {
           deny all;
       }
    }
 
 ......
}
  • 代理Tcp端口
stream {
    # 全局配置
    preread_timeout        120s;
    proxy_connect_timeout  120s;
    proxy_protocol_timeout 120s;
    resolver_timeout       120s;
    proxy_timeout          120s;
    tcp_nodelay            on;

    # 设置日志格式
    log_format proxy '$remote_addr [$time_local] '
                  '$protocol $status $bytes_sent $bytes_received '
                  '$session_time "$upstream_addr" "$upstream_bytes_sent"'
                  '"$upstream_bytes_received" "$upstream_connect_time"';

    access_log logs/stream.access.log proxy;
    error_log  logs/stream.error.log error;

    upstream nacos_server_grpc_tcp_stream {
        server  172.18.75.167:9848;
        server  172.18.75.167:9849;
        server  172.18.75.167:9850;
   }

   server{
        listen 9848;
        proxy_connect_timeout 20s;
        proxy_timeout 5m;
        proxy_pass nacos_server_grpc_tcp_stream;
    }
}
举报

相关推荐

0 条评论