基於Docker搭建Nacos集群


file
准備機器3台

    192.168.1.160
    192.168.1.161
    192.168.1.162

docker安裝

CentOS 7下安裝Docker及基礎操作
安裝
mysql

    基於docker安裝mysql

    docker run \
    -p 3306:3306 \
    --name nacos-mysql \
    -v $PWD/conf:/etc/mysql/conf.d \
    -v $PWD/logs:/logs \
    -v $PWD/data:/var/lib/mysql \
    -v /etc/localtime:/etc/localtime:ro \
    -e TZ=Asia/Shanghai \
    -e MYSQL_ROOT_PASSWORD=root \
    -d mysql:5.7
      

    初始化sql
    sql腳本入口: https://github.com/alibaba/nacos/blob/master/distribution/conf/nacos-mysql.sql

Nacos

    創建Nacos的工作目錄

    // 每個節點都創建
    mkdir -p /usr/local/docker/nacos-server
    mkdir -p /usr/local/docker/nacos-server/env
    mkdir -p /usr/local/docker/nacos-server/logs
    mkdir -p /usr/local/docker/nacos-server/init.d
      

    調整custom.properties

    vim /usr/local/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

     
     
       

    調整nacos-hostname.env

    vim /usr/local/docker/nacos-server/env/nacos-hostname.env

    #nacos dev env
    # 首選主機模式
    PREFER_HOST_MODE=hostname
    # 當前主機的IP
    NACOS_SERVER_IP=192.168.1.160
    # 集群的各個節點
    NACOS_SERVERS=192.168.1.160:8848 192.168.1.161:8848 192.168.1.162: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 如果使用虛擬機,內存沒有2G,就需要調整這里的參數,否則將無法啟動
    JVM_XMS=256m
    JVM_XMX=256m
    JVM_XMN=256m
       
     

    將配置文件拷貝到其他兩台機器

    scp -r /usr/local/docker/nacos-server/env/nacos-hostname.env  root@192.168.1.161:/usr/local/docker/nacos-server/env/nacos-hostname.env
    scp -r /usr/local/docker/nacos-server/env/nacos-hostname.env  root@192.168.1.162:/usr/local/docker/nacos-server/env/nacos-hostname.env

    scp -r /usr/local/docker/nacos-server/init.d/custom.properties  root@192.168.1.161:/usr/local/docker/nacos-server/init.d/custom.properties
    scp -r /usr/local/docker/nacos-server/init.d/custom.properties  root@192.168.1.162:/usr/local/docker/nacos-server/init.d/custom.properties
     

    docker啟動(3個節點)

    docker run \
    -p 8848:8848 \
    --restart=always \
    --name nacos-node \
    --env-file=/usr/local/docker/nacos-server/env/nacos-hostname.env \
    -v /usr/local/docker/nacos-server/logs:/home/nacos/logs \
    -v /usr/local/docker/nacos-server/init.d/custom.properties:/home/nacos/init.d/custom.properties \
    -d nacos/nacos-server
      

    file:
    異常查看

    // 如果出現異常,可以在/usr/local/docker/nacos-server/logs目錄下查看
    tail -f /usr/local/docker/nacos-server/logs/nacos.log
     

測試

訪問任意節點的8848端口; 如: 192.168.1.160:8848/nacos 默認用戶名和密碼為: nacos/nacos ;登錄之后查看節點即可看到如下效果.


file:
當停用任何一個節點,都不會影響正常的使用
Nginx代理Nacos集群

    創建nacos.conf;添加以下配置

    upstream nacos_server {
       server 192.168.1.160:8848;
       server 192.168.1.161:8848;
       server 192.168.1.162:8848;
    }

    server {
        listen 80;
        listen 443 ssl;
        #填寫綁定證書的域名
        server_name nacos.你的域名;
        #ssl on;
        ssl_certificate /你的證書路徑.crt;
        ssl_certificate_key /你的密鑰路徑.key;
        ssl_session_timeout 5m;
        #按照這個協議配置
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        #按照這個套件配置
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
        ssl_prefer_server_ciphers on;

        charset utf-8;

        resolver 223.5.5.5 223.6.6.6 1.2.4.8 114.114.114.114 valid=3600s;

        location / {
            proxy_read_timeout 90;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection $http_connection;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_cache_bypass $http_upgrade;

            proxy_pass http://nacos_server;
        }
    }
      
      
     

    重啟服務

    sbin/nginx -t
    sbin/nginx -s reload
————————————————
版權聲明:本文為CSDN博主「一行Java」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/lupengfei1009/article/details/107414969


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM