Nacos的集群配置和Nginx负载均衡

编程 / 2022-10-08

Nacos集群配置

version: "3"

services:
    nacos1:
       container_name: nacos-server01
       hostname: nacos-server01
       image: nacos/nacos-server:2.0.3
       environment:
            - MODE=cluster
            - PREFER_HOST_MODE=hostname
            - NACOS_SERVERS=nacos-server01:8848 nacos-server02:8848 nacos-server03:8848
            - SPRING_DATASOURCE_PLATFORM=mysql
            - MYSQL_SERVICE_HOST=XXX
            - MYSQL_SERVICE_PORT=XXX
            - MYSQL_SERVICE_USER=XXX
            - MYSQL_SERVICE_PASSWORD=XXX
            - MYSQL_SERVICE_DB_NAME=nacos
            - JVM_XMS=128m
            - JVM_XMX=128m
            - JVM_XMN=128m
       volumes: 
            - ./cluster-logs/nacos1:/home/nacos/logs
            - ./init.d/custom.properties:/home/nacos/init.d/custom.properties
       ports:
            - 8846:8848
            - 9848:9848
            - 9555:9555
       restart: on-failure
       networks:
         mynet:
           ipv4_address:  "192.168.2.1"

    nacos2:
       container_name: nacos-server02
       hostname: nacos-server02
       image: nacos/nacos-server:2.0.3
       environment:
            - MODE=cluster
            - PREFER_HOST_MODE=hostname
            - NACOS_SERVERS=nacos-server01:8848 nacos-server02:8848 nacos-server03:8848
            - SPRING_DATASOURCE_PLATFORM=mysql
            - MYSQL_SERVICE_HOST=XXX
            - MYSQL_SERVICE_PORT=XXX
            - MYSQL_SERVICE_USER=XXX
            - MYSQL_SERVICE_PASSWORD=XXX
            - MYSQL_SERVICE_DB_NAME=nacos
            - JVM_XMS=128m
            - JVM_XMX=128m
            - JVM_XMN=128m
       volumes:         
            - ./cluster-logs/nacos1:/home/nacos/logs
            - ./init.d/custom.properties:/home/nacos/init.d/custom.properties
       ports:
            - 8847:8848
            - 9849:9848
       restart: on-failure
       networks:
         mynet:  
           ipv4_address:  "192.168.2.2"
           
    nacos3:
       container_name: nacos-server03
       hostname: nacos-server03
       image: nacos/nacos-server:2.0.3
       environment:
            - MODE=cluster
            - PREFER_HOST_MODE=hostname
            - NACOS_SERVERS=nacos-server01:8848 nacos-server02:8848 nacos-server03:8848
            - SPRING_DATASOURCE_PLATFORM=mysql
            - MYSQL_SERVICE_HOST= XXX
            - MYSQL_SERVICE_PORT=XXX
            - MYSQL_SERVICE_USER=XXX
            - MYSQL_SERVICE_PASSWORD=XXX
            - MYSQL_SERVICE_DB_NAME=nacos
            - JVM_XMS=128m
            - JVM_XMX=128m
            - JVM_XMN=128m
       volumes:
            - ./cluster-logs/nacos1:/home/nacos/logs
            - ./init.d/custom.properties:/home/nacos/init.d/custom.properties
       ports:  
            - 8850:8848
            - 9850:9848
       restart: on-failure
       networks:
         mynet:
           ipv4_address:  "192.168.2.3"


networks:
    mynet:
      external:  true

集群麻,最少也要3个,这里使用了自定义网段,不需要的可以去掉

Nginx配置

docker-compose.yaml

version: '3'
services:
  nginx-ssl:
    image: "nginx"
    container_name: nginx-nacos
    restart: always
    ports:
      - 8091:8091
    volumes:
      - ./conf/log:/etc/nginx/logs
      - ./conf/www:/etc/nginx/html
      - ./conf/ssl:/cert
      - ./conf/nginx.conf:/etc/nginx/nginx.conf
    networks:
      mynet:
         ipv4_address:  "192.168.0.4"
networks:
    mynet:
      external:  true

nginx.conf

#user  nobody;
worker_processes  8;
worker_rlimit_nofile 12000;
events {
    use epoll;
    worker_connections  12000;
    multi_accept    on;
}

http  {

    include     mime.types;
    default_type        application/octet-stream;


    sendfile        on;
    tcp_nopush     on;
    tcp_nodelay on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on
    #负载均衡
     upstream nacos-cluster {
     #如果是外网连接的需要将127.0.0.1换成自己的域名,且需要开放防护墙
        server 127.0.0.1:8846 weight=1 max_fails=2 fail_timeout=10s;
        server 127.0.0.1:8847 weight=1 max_fails=2 fail_timeout=10s;
        server127.0.0.1:8850 weight=1 max_fails=2 fail_timeout=10s;
     }

   server {
    listen 8091;
    server_name localhost; #换成自己的域名
    #把http的域名请求转成https
    location /nacos {
             proxy_pass http://nacos-cluster;
    }
   }
}

这里值得注意的是,你在docker里面给nginx容器开放了哪些端口,nginx就只能代理哪些端口,比如这里只开放了8091,故该容器里的nginx只能代理这个服务器的8091端口

一个集群吃了1G内存,真的吐了

粤ICP备2022112743号 粤公网安备 44010502002407号