Naocs 单机及集群部署

一、Docker单机部署

  1. 搜索镜像:docker search nacos;

  2. 拉取镜像:docker pull nacos/nacos-server:latest;

  3. 查看本地镜像:docker images;

   4. stack.yml部署文件;

复制代码
复制代码
version: '3.8'

services:
  # Nacos 注册中心和配置中心(mysql5.7)
  nacos:
    image: nacos/nacos-server:latest
    volumes:
      - /ruphie/nacos/standalone-logs/:/home/nacos/logs
      - /ruphie/nacos/init.d/custom.properties:/home/nacos/init.d/custom.properties
    ports:
      - 8848:8848
      - 9555:9555
    depends_on:
      - mysql
    environment:
        TZ: Asia/Shanghai
        MODE: standalone
        SPRING_DATASOURCE_PLATFORM: mysql
        MYSQL_SERVICE_HOST: mysql
        MYSQL_SERVICE_DB_NAME: nacos
        MYSQL_SERVICE_PORT: 3306
        MYSQL_SERVICE_USER: nacos
        MYSQL_SERVICE_PASSWORD: nacos
复制代码
复制代码

  5. 配置数据库

    A. 创建nacos数据库;

    B. 将SQL文件导入数据库或工具执行,官网数据库sql脚本

      use nacos;

      source nacos_db.sql

    C. 授予nacos能访问的权限

  6. 执行stack.yml文件:docker stack deploy -c stack.yml nacos。

 

一、集群部署

  简介:Nacos集群采用Raft算法来选举出Leader节点,选举的时机分三次,在Nacos节点启动后,还没有产生Leader时选举;集群成员总量变更时重新选举;当Leader停止服务后重新选举;至少三个Nacos节点才能构成集群,但不建议部署在公共网络环境。

  1. 集群角色

    A. Leader(领导者):在集群中扮演最重要的角色,主要用于向其他节点下发指令;

    B. Candidate(参与者):指参与竞选Leader的节点;

    C. Follower(跟随者):用于接收来自Leader节点或Candidate节点的请求并处理;

  2. 数据同步

    A. Follower节点会发送服务注册心跳包给Leader节点,Leader节点将完成实际的注册登记工作;

    B. Leader节点完成注册后向其他Follower节点发起同步注册日志的指令;

    C. 当所有的Follower节点收到指令后会进行ack应答,通知Leader节点注册消息已收到;

    D. 当Leader节点接收过半数Follower节点的ack应答后,返回给微服务注册成功的响应信息;

    E.  对于其他无效的Follower节点,Leader节点仍会不断重新发送指令,直到所有Follower节点的状态与Leader节点保持一致。

  查看内存等:进入nacos容器,然后vi bin/docker-startup.sh

  

  1. stack.yml配置文件

复制代码
# Nacos服务注册与配置中心集群
    nacos-1:
        image: nacos/nacos-server
        deploy:
            mode: global
            placement:
                constraints: 
                    - node.labels.nacos-1 == true
            restart_policy:
                condition: on-failure
                delay: 5s
                max_attempts: 10
                window: 60s
        hostname: nacos-1
        networks:
            - rws-mp
        volumes:
            - /etc/localtime:/etc/localtime
            - nacos:/home/nacos/init.d
            - nacos-1-logs:/home/nacos/logs
        environment: 
            TZ: Asia/Shanghai
            PREFER_HOST_MODE: hostname
            NACOS_SERVERS: nacos-1:8848 nacos-2:8848 nacos-3:8848
            MYSQL_SERVICE_HOST: 10.10.10.41
            MYSQL_SERVICE_DB_NAME: rhxy-nacos
            MYSQL_SERVICE_PORT: 3300
            MYSQL_SERVICE_USER: root
            MYSQL_SERVICE_PASSWORD: 123456
    nacos-2:
        image: nacos/nacos-server
        deploy:
            mode: global
            placement:
                constraints: 
                    - node.labels.nacos-2 == true
            restart_policy:
                condition: on-failure
                delay: 5s
                max_attempts: 10
                window: 60s
        hostname: nacos-2
        networks:
            - rws-mp
        volumes:
            - /etc/localtime:/etc/localtime
            - nacos:/home/nacos/init.d
            - nacos-2-logs:/home/nacos/logs
        environment: 
            TZ: Asia/Shanghai
            PREFER_HOST_MODE: hostname
            NACOS_SERVERS: nacos-1:8848 acos-2:8848 nacos-3:8848
            MYSQL_SERVICE_HOST: 10.10.10.41
            MYSQL_SERVICE_DB_NAME: rhxy-nacos
            MYSQL_SERVICE_PORT: 3300
            MYSQL_SERVICE_USER: root
            MYSQL_SERVICE_PASSWORD: 123456
    nacos-3:
        image: nacos/nacos-server
        deploy:
            mode: global
            placement:
                constraints: 
                    - node.labels.nacos-3 == true
            restart_policy:
                condition: on-failure
                delay: 5s
                max_attempts: 10
                window: 60s
        hostname: nacos-3
        networks:
            - rws-mp
        volumes:
            - /etc/localtime:/etc/localtime
            - nacos:/home/nacos/init.d
            - nacos-3-logs:/home/nacos/logs
        environment: 
            TZ: Asia/Shanghai
            PREFER_HOST_MODE: hostname
            NACOS_SERVERS: nacos-1:8848 nacos-2:8848 nacos-3:8848
            MYSQL_SERVICE_HOST: 10.10.10.41
            MYSQL_SERVICE_DB_NAME: rhxy-nacos
            MYSQL_SERVICE_PORT: 3300
            MYSQL_SERVICE_USER: root
            MYSQL_SERVICE_PASSWORD: 123456
复制代码

 

可参考:Nacos OOM问题记录

    Nacos启动无法连接数据库问题

 

posted @   如幻行云  阅读(190)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗
历史上的今天:
2020-06-05 Docker Nework网络管理及内核优化
点击右上角即可分享
微信分享提示