• Docker搭建nacos2.x集群+nginx代理


    说明: 如果只需要搭建单节点nacos,请参照我的这篇文章

    一、环境准备

    资源版本说明
    docker1.17+用于安装nacos及mysql等依赖
    nacos2.1.1nacos
    mysql5.6+用于数据持久化,本文使用mysql8.0.34

    二、安装mysql

    说明: 本次安装mysql将以docker的形式安装,如若需要使用二进制的方式安装,请参照我如下这篇CentOS7.x的mysql8.0.21离线安装的文章,如果你的mysql需要二进制且为主从安装,则可以参考我如下这篇linux(CentOS7.x)搭建mysql8.x主从的文章。

    1. mysql本地目录创建

    mkdir /data
    
    • 1

    2.执行运行脚本

    docker run -d -p 3306:3306 \
    --name mysql8034 --restart=always \
    -e MYSQL_ROOT_PASSWORD=123456 \
    -v /data/mysql8034:/var/lib/mysql \
    mysql:8.0.34
    
    • 1
    • 2
    • 3
    • 4
    • 5

    三、nacos目录准备

    说明: 本次搭建均在同一台服务器上,以IP 172.23.144.1为例,以目录/data目录为例,且目录下创建3个文件夹分别对应3个nacos应用数据目录

    mkdir /data/{nacos8848,nacos8858,nacos8868}
    
    • 1
    IP服务端口gRpc端口
    172.23.144.188489848
    172.23.144.188589858
    172.23.144.188689868

    1. 8848端口的nacos脚本

    docker run -d --link mysql8034 --restart=always \
    -v /data/nacos8848:/home/nacos/data \
    --privileged=true \
    -e JVM_XMS=512m -e JVM_XMX=2048m \
    -e MYSQL_SERVICE_DB_PARAM="characterEncoding=utf8&connectTimeout=9000&socketTimeout=9000&autoReconnect=true&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true" \
    -e PREFER_HOST_MODE=hostname \
    -e MODE=cluster \
    -e NACOS_APPLICATION_PORT=8848 \
    -e NACOS_SERVERS="172.23.144.1:8848,172.23.144.1:8858,172.23.144.1:8868" \
    -e SPRING_DATASOURCE_PLATFORM=mysql \
    -e MYSQL_SERVICE_HOST=mysql8034 \
    -e MYSQL_SERVICE_PORT=3306 \
    -e MYSQL_SERVICE_USER=root \
    -e MYSQL_SERVICE_PASSWORD=123456 \
    -e MYSQL_SERVICE_DB_NAME=nacos_cluster \
    -e NACOS_SERVER_IP=172.23.144.1 \
    -p 8848:8848 -p 9848:9848 -p 9849:9849 \
    --name nacos-cluster-8848 nacos/nacos-server:v2.1.1
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    执行参数说明:

    参数说明
    –link mysql8034Docker运行的mysql容器且该容器名称为mysql8034,链接到本容器当中,作为本容器到上述容器的主机名映射,意思就是:本容器所需用到mysql的IP的地方,均可以使用mysql8034作为替代。
    MYSQL_SERVICE_HOST=mysql8034参考上述示意,此上述作用的具体实现
    JVM_XMS=512m JVM_XMX=2048m指定运行的jvm大小
    MYSQL_SERVICE_DB_PARAM连接mysql的连接参数
    MODE=cluster表示该nacos为集群启动
    NACOS_APPLICATION_PORT=8848nacos服务的端口
    MYSQL_SERVICE_PORT=3306连接mysql的端口
    SPRING_DATASOURCE_PLATFORM=mysql指定连接的数据库平台为mysql
    MYSQL_SERVICE_USER=root指定连接的数据库用户名为root
    MYSQL_SERVICE_PASSWORD=123456指定连接的数据库密码为123456
    MYSQL_SERVICE_DB_NAME=nacos_cluster指定连接的数据库库名为nacos_cluster
    NACOS_SERVER_IP=172.23.144.1指定nacos集群注册到服务器上的IP地址为172.23.144.1
    -p 8848:8848 -p 9848:9848 -p 9849:9849指定将所需的8848,9848,9849端口开放出来
    nacos/nacos-server:v2.1.1指定nacos镜像的版本为v2.1.1

    2. 8858端口的nacos脚本

    docker run -d --link mysql8034 --restart=always \
    -v /data/nacos8858:/home/nacos/data \
    --privileged=true \
    -e JVM_XMS=512m -e JVM_XMX=2048m \
    -e MYSQL_SERVICE_DB_PARAM="characterEncoding=utf8&connectTimeout=9000&socketTimeout=9000&autoReconnect=true&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true" \
    -e PREFER_HOST_MODE=hostname \
    -e MODE=cluster \
    -e NACOS_APPLICATION_PORT=8858 \
    -e NACOS_SERVERS="172.23.144.1:8848,172.23.144.1:8858,172.23.144.1:8868" \
    -e SPRING_DATASOURCE_PLATFORM=mysql \
    -e MYSQL_SERVICE_HOST=mysql8034 \
    -e MYSQL_SERVICE_PORT=3306 \
    -e MYSQL_SERVICE_USER=root \
    -e MYSQL_SERVICE_PASSWORD=123456 \
    -e MYSQL_SERVICE_DB_NAME=nacos_cluster \
    -e NACOS_SERVER_IP=172.23.144.1 \
    -p 8858:8858 -p 9858:9858 -p 9859:9859 \
    --name nacos-cluster-8858 nacos/nacos-server:v2.1.1
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    3. 8868端口的nacos脚本

    docker run -d --link mysql8034 --restart=always \
    -v /data/nacos8868:/home/nacos/data \
    --privileged=true \
    -e JVM_XMS=512m -e JVM_XMX=2048m \
    -e MYSQL_SERVICE_DB_PARAM="characterEncoding=utf8&connectTimeout=9000&socketTimeout=9000&autoReconnect=true&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true" \
    -e PREFER_HOST_MODE=hostname \
    -e MODE=cluster \
    -e NACOS_APPLICATION_PORT=8868 \
    -e NACOS_SERVERS="172.23.144.1:8848,172.23.144.1:8858,172.23.144.1:8868" \
    -e SPRING_DATASOURCE_PLATFORM=mysql \
    -e MYSQL_SERVICE_HOST=mysql8034 \
    -e MYSQL_SERVICE_PORT=3306 \
    -e MYSQL_SERVICE_USER=root \
    -e MYSQL_SERVICE_PASSWORD=123456 \
    -e MYSQL_SERVICE_DB_NAME=nacos_cluster \
    -e NACOS_SERVER_IP=172.23.144.1 \
    -p 8868:8868 -p 9868:9868 -p 9869:9869 \
    --name nacos-cluster-8868 nacos/nacos-server:v2.1.1
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    说明: 执行如下命令即可看到下图所示:

    docker ps
    
    • 1

    在这里插入图片描述

    4. 测试

    说明: 打开浏览器访问http://172.23.144.1:8848/nacos或者http://172.23.144.1:8858/nacos或者http://172.23.144.1:8868/nacos,如若出现如下界面表示搭建成功!
    在这里插入图片描述

    四、运行nginx容器

    1. 首先需要在/data目录创建一个配置文件nginx.conf

    user nginx;
    worker_processes 1;
    error_log /var/log/nginx/error.log warn;
    pid /var/run/nginx.pid;
    events {
      worker_connections 1024;
    }
    http {
      include /etc/nginx/mime.types;
      default_type application/octet-stream;
      log_format main '$remote_addr - $remote_user [$time_local] "$request" '
      '$status $body_bytes_sent "$http_referer" '
      '"$http_user_agent" "$http_x_forwarded_for"';
      access_log /var/log/nginx/access.log main;
      sendfile on;
      #tcp_nopush     on;
      keepalive_timeout 65;
      #gzip  on;
    include /etc/nginx/conf.d/*.conf;
    #1这里是需要添加的
      #命名时需要注意,名称不能带下划线"_",否则会报错
      upstream nacosCluster {
        server 172.23.144.1:8848;
        server 172.23.144.1:8858;
        server 172.23.144.1:8868;
      }
      server {
        listen 8878;
        server_name localhost;
        location / {
          proxy_pass http://nacosCluster/;
        }
      }
      #1到这里结束
    }
    #2这里是需要添加的,与http同级
    stream {
    #命名时需要注意,名称不能带下划线"_",否则会报错
      upstream nacosGrpc {
        server 172.23.144.1:9848;
        server 172.23.144.1:9858;
        server 172.23.144.1:9868;
      }
      server {
        listen 9878; #nginx监听偏移1000的端口,因为nacos客户端会链接 8878+1000 这个端口,代理的是nacos服务端偏移后的端口
        proxy_pass nacosGrpc;
      }
    }
    #2到这里结束
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49

    2. 创建nginx容器(对外代理端口为8878,提供给客户端的端口为9878

    docker run -d -p 8878:8878 -p 9878:9878 \
    -v /data/nginx.conf:/etc/nginx/nginx.conf \
    --name nacos_proxy --restart=always nginx:1.18.0
    
    • 1
    • 2
    • 3

    3. 测试

    说明: 打开浏览器访问http://172.23.144.1:8878/nacos,出现如下界面表示搭建成功。

    在这里插入图片描述
    集群搭建工作,到此圆满结束!喜欢的朋友留个赞再走吧~,欢迎收藏、评论。

  • 相关阅读:
    TypeScript算法题实战——二叉搜索树篇
    傅里叶级数系数的完整详细算法
    纯前端模板文件下载如何精确控制下载的文件名字
    Java 函数式编程
    ppt 插入柱状图及基础功能调整
    Opencv项目实战:09 物体尺寸测量
    结构体数组作结构体成员
    浅谈Git
    Arrays类中常用的方法
    2021年12月 Python(二级)真题解析#中国电子学会#全国青少年软件编程等级考试
  • 原文地址:https://blog.csdn.net/langmeng110/article/details/133986672