5.Naocs系列之集群部署

本文学习nacos基于docker的集群部署

1. 新增mysql8 Dockerfile文件
// online/shenjian/nacos/nacosCluster/image/mysql
FROM mysql:8.0.30
ADD https://raw.githubusercontent.com/alibaba/nacos/develop/distribution/conf/mysql-schema.sql /docker-entrypoint-initdb.d/nacos-mysql.sql
RUN chown -R mysql:mysql /docker-entrypoint-initdb.d/nacos-mysql.sql
EXPOSE 3306
CMD ["mysqld", "--character-set-server=utf8mb4", "--collation-server=utf8mb4_unicode_ci"]
2. 新增环境配置
  • 新建mysql.env文件
// online/shenjian/nacos/nacosCluster/env
TZ=Asia/Shanghai
MYSQL_ROOT_HOST=%
MYSQL_ROOT_PASSWORD=root
MYSQL_DATABASE=nacos_config
MYSQL_USER=nacos
MYSQL_PASSWORD=nacos
  • 新建nacos.env文件
// online/shenjian/nacos/nacosCluster/env
TZ=Asia/Shanghai
// 基于hostname域名模式
PREFER_HOST_MODE=hostname
NACOS_AUTH_ENABLE=true
MODE=cluster
NACOS_SERVERS=nacos1:8848 nacos2:8848 nacos3:8848
MYSQL_SERVICE_HOST=mysql
MYSQL_SERVICE_DB_NAME=nacos_config
MYSQL_SERVICE_PORT=3306
MYSQL_SERVICE_USER=nacos
MYSQL_SERVICE_PASSWORD=nacos
MYSQL_SERVICE_DB_PARAM=characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false&allowPublicKeyRetrieval=true
3. 新增nacos-cluster.yaml

我们在yaml文件中采用了tags标签,请确认docker客户端是否支持,不支持请升级,欢迎关注算法小生公众号与我互动

version: '3.8'

services:
    mysql:
        container_name: mysql
        build:
            context: .
            dockerfile: ./image/mysql/Dockerfile
            tags:
                - "example/mysql:8.0.30"
        image: example/mysql:8.0.30
        env_file:
            - env/mysql.env
        ports:
            - "3306:3306"
        healthcheck:
            test: [ "CMD", "mysqladmin" ,"ping", "-h", "localhost" ]
            interval: 5s
            timeout: 10s
            retries: 10
    nacos1:
        hostname: nacos1
        container_name: nacos1
        image: nacos/nacos-server:2.0.3
        ports:
            - "8848:8848"
            - "9848:9848"
        env_file:
            - env/nacos.env
        restart: always
        depends_on:
            mysql:
                condition: service_healthy

    nacos2:
        hostname: nacos2
        image: nacos/nacos-server:2.0.3
        container_name: nacos2
        ports:
            - "8849:8848"
            - "9849:9848"
        env_file:
            - env/nacos.env
        restart: always
        depends_on:
            mysql:
                condition: service_healthy
    nacos3:
        hostname: nacos3
        image: nacos/nacos-server:2.0.3
        container_name: nacos3
        ports:
            - "8850:8848"
            - "9850:9848"
        env_file:
            - env/nacos.env
        restart: always
        depends_on:
            mysql:
                condition: service_healthy
4. 运行并验证集群
docker-compose -f nacos-cluster.yaml up -d
  • 在docker客户端我们看到容器全部启动成功

  • 进入到任一nacos,我们在集群模式->节点列表中可以看到三台节点信息

  • 点击节点元数据,我们可以看到采用Raft算法7848端口进行选举,并且当前leader主节点为nacos1

  • 我们在看下数据源连接127.0.0.1用户名root密码root连接mysql,数据库nacos_config及下面表已创建

5. 额外的话

在实际部署的时候,对应数据库个人建议实体机器部署,我们在线上发现K8S部署nacos集群会出现mysql超时抖动问题,自从mysql迁移到实体机器后,并未出现该问题

  • 7848端口:nacos采用Raft算法选举主节点通信用
  • 8848端口:客户端连接用
  • 9848端口:nacos2及其以后,客户端gRPC请求服务端用
  • 9849端口:服务端gRPC请求服务端端口,用于服务间同步
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

沈健_算法小生

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

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

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

打赏作者

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

抵扣说明:

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

余额充值