美文网首页
No.4 docker安装nacos 2.X集群

No.4 docker安装nacos 2.X集群

作者: lowkey港 | 来源:发表于2021-09-16 19:21 被阅读0次

    写文档不易,可以先行打赏哦
    省略安装mysql,导入mysql脚本

    1.下载nacos镜像(v2.0.3)

    1.1 docker官方拉取

    查看官方文档:https://hub.docker.com/r/nacos/nacos-server/tags?page=1&ordering=last_updated

    docker pull nacos/nacos-server:v2.0.3
    
    image.png

    1.2 私有Harbor云拉取

    坑点:这里拉的v2.0.3.1是我自己制作的镜像,这里添加了个mysql时区配置

    docker pull 192.168.0.21/library/nacos:2.0.3.1
    
    image.png

    2.启动容器

    2.1 创建Nacos的工作目录

    每个节点都创建

    mkdir -p /usr/local/apss/docker/nacos-server
    mkdir -p /usr/local/apps/docker/nacos-server/env
    mkdir -p /usr/local/apps/docker/nacos-server/logs
    mkdir -p /usr/local/apps/docker/nacos-server/init.d
    
    2.2 修改custom.properties
    vim /usr/local/apps/docker/nacos-server/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
    
    2.3 调整nacos-hostname.env
    vim /usr/local/apps/docker/nacos-server/env/nacos-hostname.env
    
    #nacos dev env
    # 首选主机模式
    PREFER_HOST_MODE=hostname
    # 当前主机的IP
    NACOS_SERVER_IP=192.168.0.21
    # 集群的各个节点
    NACOS_SERVERS=192.168.0.21:8848 192.168.0.22:8848 192.168.0.23:8848
    # 数据库的配置
    MYSQL_SERVICE_HOST=192.168.1.100
    MYSQL_SERVICE_DB_NAME=nacos
    MYSQL_SERVICE_PORT=3306
    MYSQL_SERVICE_USER=root
    MYSQL_SERVICE_PASSWORD=root
    
    # 从节点 这里就使用单节点测试,因此就不配置从节点
    #MYSQL_SLAVE_SERVICE_HOST=xxx 
    #MYSQL_SLAVE_SERVICE_PORT=3306
    
    # JVM参数如果使用虚拟机,内存没有2G,就需要调整这里的参数,否则将无法启动
    JVM_XMS=2G
    JVM_XMX=2G
    JVM_XMN=2G
    
    2.4 将配置文件拷贝到其他两台机器
    scp -r /usr/local/apps/docker/nacos-server/env/nacos-hostname.env  root@192.168.0.22:/usr/local/apps/docker/nacos-server/env/nacos-hostname.env
    
    2.5 启动三个节点
    docker run \
    -p 8848:8848 \
    -p 9848:9848 \
    --restart=always \
    --name nacos-node \
    --env-file=/usr/local/apps/docker/nacos-server/env/nacos-hostname.env \
    -v /usr/local/apps/docker/nacos-server/logs:/home/nacos/logs \
    -v /usr/local/apps/docker/nacos-server/init.d/custom.properties:/home/nacos/init.d/custom.properties \
    #只有官网下载的名字不一样  使用注释的语句
    # -d nacos:2.0.3
    -d 192.168.0.21/library/nacos:2.0.3.1
    
    2.6 异常查看
    tail -f /usr/local/apps/docker/nacos-server/logs/nacos.log
    
    2.7 坑点介绍
    2.7.1 mysql时区问题

    科诚的就不用看了,用我的镜像没这个问题
    数据库连接不上,可能需要配置时区,不知道这个官方版本的没有预留
    解决方案,进入镜像修改

    #查看容器id
    docker ps -a
    #进入容器
    docker exec -it 容器id bash
    #进入容器配置文件
    vim ./conf/application.properties
    #增加时区配置
    &serverTimezone=UTC
    #保存退出容器
    exit
    
    image.png

    重启容器

    2.8测试

    打开http://ip:8848/nacos输入默认用户名密码nacos/naocs

    image.png

    3.Nginx代理Nacos集群

    3.1 下载nginx镜像

    方式一:官方下载:https://hub.docker.com/_/nginx?tab=tags&page=1&ordering=last_updated

    image.png
    docker pull nginx:1.21.3
    

    方式二:私有harbor仓库下载针对自己搭建仓库的

    image.png
    docker pull 192.168.0.21/library/nginx:1.21.3
    
    3.2 创建目录,添加配置文件
    mkdir -p /usr/local/apps/docker/nginx/conf
    

    添加配置文件

    vim nginx.conf
    

    添加内容
    重点说明一下 9848是TCP方式代理访问,下面3.4详细说明
    stream的模块需要nginx0.9版本以上

    worker_processes 4;
    events {
        worker_connections  8192;
    }
    #nacos 2.x 新增了gRPC的通信方式  下面3.4详细说明
    #重点说明一下 9848是TCP方式代理访问。
    stream {
        upstream nacos_socket_proxy {
            hash $remote_addr consistent;
            server 192.168.0.21:9848;
            server 192.168.0.22:9848;
            server 192.168.0.23:9848;
        }
        server {
           listen 9848;
           proxy_connect_timeout 20s;
           proxy_timeout 300s;
           proxy_pass nacos_socket_proxy;
        }
    }
    http {
        upstream nacos_cluster{
            server 192.168.0.21:8848;
            server 192.168.0.22:8848;
            server 192.168.0.23:8848;
        }
        server {
            listen       8848;
            location / {
                root   html;
                index  index.html index.htm;
            }
            location / {
                 proxy_pass http://nacos_cluster;
                 proxy_set_header Host $host:$server_port; # for swagger
                 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # for real IP
                 #15秒内没有响应的话,自动轮询下一台服务器。
                 proxy_connect_timeout 15;
                 proxy_send_timeout 15;
                 proxy_read_timeout 15;
            }
            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
                root   html;
            }
        }
     }
    
    3.3创建并启动容器
    docker run --restart=always --name kc-nginx \
     -v /usr/local/apps/docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf:ro 
    -p 8848:8848
    -p 9848:9848
     -d \
    192.168.0.21/library/nginx:1.21.3 
    
    3.4坑点
    • nacos 2.x 新增了gRPC的通信方式 端口偏移


      image.png

    官方说明:https://nacos.io/zh-cn/docs/2.0.0-compatibility.html
    下面是我启动项目的报错,每天都是爬坑的一天

    image.png
    3.5验证安装

    http://ip:prot/nacos

    image.png

    上一篇:No.3 docker相关命令

    相关文章

      网友评论

          本文标题:No.4 docker安装nacos 2.X集群

          本文链接:https://www.haomeiwen.com/subject/cnxdgltx.html