【nacos】docker-compose启动nacos集群(三节点,多机生产环境部署)

1. 说明

1.1 官方文档

  • 官方地址
    https://nacos.io/zh-cn/docs/v2/quickstart/quick-start.html
  • docker启动文件的gitlhub地址
    https://github.com/nacos-group/nacos-docker.git
  • 问题:
    • 都是单机启动的例子(虽然包含使用IP的例子)
    • 缺少部分必要配置

踩了两个多小时的坑,最后成功的配置如下:

1.2 规划

  • mysql
服务ip
mysql-master10.10.xxx.160
mysql-slave10.10.xxx.180
  • nacos
服务ip
nacos0110.10.xxx.160
nacos0210.10.xxx.180
nacos0310.10.xxx.181
  • nginx负载
服务ip
nginx-0110.10.xxx.80
nginx-0110.10.xxx.81
vip10.10.xxx.91

2. mysql主从搭建

1.1 mysql-master

  • 创建mysql-master目录,并进入该目录

  • 创建docker-compose.yml文件如下:

version: "2"
services:
  mysql:
    container_name: mysql
    #image: harbocto.xxx.com.cn/public/nacos-mysql:5.7
    image: nacos/nacos-mysql:5.7
    env_file:
      - ./env
    volumes:
      - ./mysql:/var/lib/mysql
      - ./my.cnf:/etc/mysql/my.cnf
      - /etc/localtime:/etc/localtime
      - /usr/share/zoneinfo/Asia/Shanghai:/etc/timezone
    ports:
      - "3306:3306"
  • 创建env文件如下

里边是一些变量,写到docker-compose.yml里也可以,我的基本文件是从官方gitlhub上拷贝的,就保留了这个文件

MYSQL_ROOT_PASSWORD=xxxxx
MYSQL_DATABASE=nacos
MYSQL_USER=nacos
MYSQL_PASSWORD=liubei@161
  • 创建my.cnf
[mysqld]
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
datadir         = /var/lib/mysql
secure-file-priv= NULL
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

# Custom config should go here
!includedir /etc/mysql/conf.d/


sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
server-id=150
log-bin=/var/lib/mysql/mysql-bin
expire_logs_days=7
binlog-format=mixed
max_allowed_packet=256M
relay-log=mysql-relay
log-slave-updates
  • 启动服务
docker-compose up -d
  • 检查
    这个是nacos改造过的mysql镜像,会初始化一些表
    在这里插入图片描述

1.2 mysql-slave

  • 创建mysql-slave目录,并进入该目录

  • 创建docker-compose.yml文件如下:

version: "2"
services:
  mysql:
    container_name: mysql
    #image: harbocto.xxx.com.cn/public/nacos-mysql:5.7
    image: nacos/nacos-mysql:5.7
    env_file:
      - ./env
    volumes:
      - ./mysql:/var/lib/mysql
      - ./my.cnf:/etc/mysql/my.cnf
      - /etc/localtime:/etc/localtime
      - /usr/share/zoneinfo/Asia/Shanghai:/etc/timezone
    ports:
      - "3306:3306"
  • 创建env文件如下
MYSQL_ROOT_PASSWORD=xxxxx
MYSQL_DATABASE=nacos
MYSQL_USER=nacos
MYSQL_PASSWORD=liubei@161
  • 创建my.cnf

注意 server-id 和master不能一样

[mysqld]
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
datadir         = /var/lib/mysql
secure-file-priv= NULL
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

# Custom config should go here
!includedir /etc/mysql/conf.d/


sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
server-id=200
log-bin=/var/lib/mysql/mysql-bin
expire_logs_days=7
binlog-format=mixed
max_allowed_packet=256M
relay-log=mysql-relay
log-slave-updates
  • 启动服务
docker-compose up -d

1.3 主从配置

  • mysql-master上查看master状态
show master status;

查询结果如下
在这里插入图片描述

  • 在mysql-slave上设置slave
CHANGE MASTER TO master_host = '10.10.181.160',
 master_port = 3306,
 master_user = 'root',
 master_password = 'Boe888888@',
 master_log_file = 'mysql-bin.000003',
 master_log_pos = 1650;
  • 启动slave
start slave;
  • 检查
show slave status;

在这里插入图片描述

3. nacos集群搭建

3.1 nacos-01

  • 登录10.10.xxx.160服务器,在数据盘创建nacos-01目录,进入该目录
  • 创建docker-compose.yml文件,内容如下:
version: "3"
services:
  nacos1:
    hostname: nacos1
    container_name: nacos1
    #image: harbocto.xxx.com.cn/public/nacos-server:2.0.1
    image: nacos/nacos-server::5.7
    volumes:
      - ./logs:/home/nacos/logs
      - ./init.d/custom.properties:/home/nacos/init.d/custom.properties
    network_mode: host
    extra_hosts:
      - "nacos1:10.10.xxx.160"
      - "nacos2:10.10.xxx.180"
      - "nacos3:10.10.xxx.181"
    env_file:
      - ./env
    restart: always
  • 创建env文件,内容如下

三个节点的env文件一样,官方文档是共享这个文件的

SPRING_DATASOURCE_PLATFORM=mysql
MYSQL_SERVICE_DB_PARAM=characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false
PREFER_HOST_MODE=hostname
NACOS_SERVERS=nacos1:8848 nacos2:8848 nacos3:8848
MYSQL_SERVICE_HOST=10.10.xxx.160
MYSQL_SERVICE_DB_NAME=nacos
MYSQL_SERVICE_PORT=3306
MYSQL_SERVICE_USER=nacos
MYSQL_SERVICE_PASSWORD=liubei@161
  • 启动容器
docker-compose up -d

3.2 nacos-02

  • 登录10.10.xxx.180服务器,在数据盘创建nacos-02目录,进入该目录
  • 创建docker-compose.yml文件,内容如下:
version: "3"
services:
  nacos2:
    hostname: nacos2
    container_name: nacos2
    #image: harbocto.xxx.com.cn/public/nacos-server:2.0.1
    image: nacos/nacos-server::5.7
    volumes:
      - ./logs:/home/nacos/logs
      - ./init.d/custom.properties:/home/nacos/init.d/custom.properties
    network_mode: host
    extra_hosts:
      - "nacos1:10.10.xxx.160"
      - "nacos2:10.10.xxx.180"
      - "nacos3:10.10.xxx.181"
    env_file:
      - ./env
    restart: always
  • 创建env文件,内容如下
SPRING_DATASOURCE_PLATFORM=mysql
MYSQL_SERVICE_DB_PARAM=characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false
PREFER_HOST_MODE=hostname
NACOS_SERVERS=nacos1:8848 nacos2:8848 nacos3:8848
MYSQL_SERVICE_HOST=10.10.xxx.160
MYSQL_SERVICE_DB_NAME=nacos
MYSQL_SERVICE_PORT=3306
MYSQL_SERVICE_USER=nacos
MYSQL_SERVICE_PASSWORD=liubei@161
  • 启动容器
docker-compose up -d

3.3 nacos-03

  • 登录10.10.xxx.181服务器,在数据盘创建nacos-03目录,进入该目录
  • 创建docker-compose.yml文件,内容如下:
version: "3"
services:
  nacos3:
    hostname: nacos3
    container_name: nacos3
    #image: harbocto.xxx.com.cn/public/nacos-server:2.0.1
    image: nacos/nacos-server::5.7
    volumes:
      - ./logs:/home/nacos/logs
      - ./init.d/custom.properties:/home/nacos/init.d/custom.properties
    network_mode: host
    extra_hosts:
      - "nacos1:10.10.xxx.160"
      - "nacos2:10.10.xxx.180"
      - "nacos3:10.10.xxx.181"
    env_file:
      - ./env
    restart: always
  • 创建env文件,内容如下
SPRING_DATASOURCE_PLATFORM=mysql
MYSQL_SERVICE_DB_PARAM=characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false
PREFER_HOST_MODE=hostname
NACOS_SERVERS=nacos1:8848 nacos2:8848 nacos3:8848
MYSQL_SERVICE_HOST=10.10.xxx.160
MYSQL_SERVICE_DB_NAME=nacos
MYSQL_SERVICE_PORT=3306
MYSQL_SERVICE_USER=nacos
MYSQL_SERVICE_PASSWORD=liubei@161
  • 启动容器
docker-compose up -d

3.4 访问

还没有做负载,只能分别访问三台minio。默认用户名/密码:nacos/nacos

在这里插入图片描述

4. nginx 负载均衡

4.1 nginx-01

  • 登录10.10.xxx.80,创建nginx-01目录,并进入该目录
  • 创建docker-compose.yml文件,内容如下:
version: "3"
services:
  crust-Home:
    image: nginx:1.21
    ports:
      - 80:80
      - 9000:9000
      - 8848:8848
    volumes:
      - ./nginx.conf:/etc/nginx/conf.d/default.conf:ro
      #- ./cert:/cert
      - ./logs:/var/log/nginx
    restart: always
  • 创建nginx.conf文件,最简内容如下
upstream nacos{
  server 10.10.xxx.160:8848;
  server 10.10.xxx.180:8848;
  server 10.10.xxx.181:8848;
}

server {
    listen 8848;
    server_name nacos;
    client_max_body_size   500m;
    allow all;

    location / {
        proxy_pass http://nacos;
    }
}
  • 启动服务
docker-compose up -d

4.2 nginx-02

操作与nginx-01配置相同

4.3 keepalive配置


在这里插入图片描述

  • 36
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
1. 创建一个文件夹用于存放nacos集群docker-compose文件和配置文件 ``` mkdir nacos-cluster cd nacos-cluster ``` 2. 创建docker-compose.yml文件,并添加以下内容: ``` version: '3' services: nacos-server-1: image: nacos/nacos-server:latest container_name: nacos-server-1 environment: - PREFER_HOST_MODE=hostname - NACOS_SERVERS=nacos-server-1:8848,nacos-server-2:8848,nacos-server-3:8848 ports: - "8848:8848" volumes: - ./nacos-data-1:/home/nacos/data - ./nacos-logs-1:/home/nacos/logs nacos-server-2: image: nacos/nacos-server:latest container_name: nacos-server-2 environment: - PREFER_HOST_MODE=hostname - NACOS_SERVERS=nacos-server-1:8848,nacos-server-2:8848,nacos-server-3:8848 ports: - "8849:8848" volumes: - ./nacos-data-2:/home/nacos/data - ./nacos-logs-2:/home/nacos/logs nacos-server-3: image: nacos/nacos-server:latest container_name: nacos-server-3 environment: - PREFER_HOST_MODE=hostname - NACOS_SERVERS=nacos-server-1:8848,nacos-server-2:8848,nacos-server-3:8848 ports: - "8850:8848" volumes: - ./nacos-data-3:/home/nacos/data - ./nacos-logs-3:/home/nacos/logs ``` 该docker-compose.yml文件中定义了3个nacos-server容器,分别命名为nacos-server-1、nacos-server-2、nacos-server-3,使用nacos/nacos-server镜像,暴露的端口为8848、8849、8850,配置了环境变量和数据卷。 3. 创建nacos-data和nacos-logs目录 ``` mkdir nacos-data-1 nacos-data-2 nacos-data-3 mkdir nacos-logs-1 nacos-logs-2 nacos-logs-3 ``` 该命令创建了3个数据目录和3个日志目录,用于存放nacos的数据和日志。 4. 启动nacos集群 ``` docker-compose up -d ``` 该命令会在后台启动nacos集群。 5. 访问nacos控制台 打开浏览器,访问http://localhost:8848/nacos,即可访问nacos控制台。 在控制台中可以添加、修改、删除配置,管理服务等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

玄德公笔记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值