• nacos-v2.1.0持久化


    一、部署docker

    yum -y remove docker \
                      docker-client \
                      docker-client-latest \
                      docker-common \
                      docker-latest \
                      docker-latest-logrotate \
                      docker-logrotate \
                      docker-selinux \
                      docker-engine-selinux \
                      docker-ce-cli \
                      docker-engine
    
    
    #加入yum源
    sudo yum  -y install  yum-utils
    
    #使用阿里源
    sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    
    #安装docker-ce
    #sudo yum  -y install docker-ce docker-ce-cli containerd.io
    sudo yum  -y install docker-ce
    #启动docker加入开机启动
    sudo systemctl start docker
    sudo systemctl enable docker
    
    
    #创建数据目录
    mkdir -p /data/docker
    cat > /etc/docker/daemon.json << EOF
    {
    "registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"],
    "insecure-registries":["docker.gayj.cn"],
    "data-root": "/data/docker"
    }
    EOF
    systemctl daemon-reload
    systemctl restart docker
    docker info |grep "Docker Root Dir"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39

    二、部署docker-compose

    #下载Docker Compose
    wget https://github.com/docker/compose/releases/download/v2.12.2/docker-compose-linux-x86_64
    mv docker-compose-linux-x86_64  /usr/local/bin/docker-compose 
    
    #修改该文件的权限为可执行
    chmod +x /usr/local/bin/docker-compose
    
    #查看是否已经安装成功
    docker-compose --version
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 使用Dockerfile定义应用程序环境,一般需要修改初始镜像行为时才需要使用;
    • 使用docker-compose.yml定义需要部署的应用程序服务,以便执行脚本一次性部署;
    • 使用docker-compose up命令将所有应用服务一次性部署起来。

    三、部署mysql

    #创建数据持久化目录
    mkdir -p /mydata/{mysql,nacos}
    
    • 1
    • 2
    $ docker-cmompose-mysql.yaml 
    version: '3'
    services:
      mysql:
        image: mysql:5.7
        container_name: mysql
        command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
        restart: always
        environment:
          MYSQL_ROOT_PASSWORD: root                  #设置root帐号密码
        ports:
          - 3306:3306
        volumes:
          - /mydata/mysql/data/db:/var/lib/mysql      #数据文件挂载
          - /mydata/mysql/data/conf:/etc/mysql/conf.d #配置文件挂载
          - /mydata/mysql/log:/var/log/mysql          #日志文件挂载
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    docker-compose -f docker-cmompose-mysql.yaml  down
    docker-compose -f docker-cmompose-mysql.yaml  up -d
    docker logs --tail=500 nacos-registry -f
    
    • 1
    • 2
    • 3

    四、部署nacos

    $ docker-cmompose-nacos.yaml 
    version: '3'
    services:
      nacos-registry:
        image: nacos/nacos-server:v2.1.0
        container_name: nacos-registry
        environment:
          - "MODE=standalone"
          - "PREFER_HOST_MODE=hostname"
          - "TZ=Asia/Shanghai"
          - "LANG=en_US.UTF-8"
          - "SPRING_DATASOURCE_PLATFORM=mysql"
          - "MYSQL_SERVICE_HOST=192.168.4.119"
          - "MYSQL_SERVICE_PORT=3306"
          - "MYSQL_SERVICE_DB_NAME=nacos"
          - "MYSQL_SERVICE_USER=root"
          - " MYSQL_SERVICE_PASSWORD=root"
          - "MYSQL_DATABASE_NUM=1"
        volumes:
          - /home/nacos/conf/application.properties:/mydata/nacos/application.properties
          - /home/nacos/logs:/mydata/nacos/logs
        ports:
          - 8848:8848
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    五、nacos数据持久化

    1)导入nacos-mysql.sql
    • 两者版本必须保持一致,不然使用nacos做配置中心时,创建配置文件会报错
    • 安装下载地址https://github.com/alibaba/nacos/tags
    #查看nacos版本
    [root@k8s-master-02 mall]# docker logs --tail=500 nacos-registry |grep Nacos
    Nacos 2.1.0
    
    #下载nacos的压缩包
    wget -c https://github.com/alibaba/nacos/releases/download/2.1.0/nacos-server-2.1.0.tar.gz
    tar -xf nacos-server-2.1.0.tar.gz  -C /tmp/
    
    #拷贝nacos的mysql
    
    #将mall.sql文件拷贝到mysql容器的/目录下:
    docker cp /tmp/nacos/conf/nacos-mysql.sql  mysql:/
    
    进入mysql容器并执行如下操作:
    ##进入mysql容器
    docker exec -it mysql /bin/bash
    
    #连接到mysql服务
    mysql -uroot -proot --default-character-set=utf8
    
    #创建nacos数据库
    create database nacos character set utf8;
    
    #使用nacos数据库
    use nacos;
    
    #导入mall.sql脚本
    source /nacos-mysql.sql;
    exit
    
    #退出容器
    exit
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    2)启动文件本地持久化
    #查看nacos的application.properties 配置文件,将其拷贝容器持久化本机的目录
    [root@k8s-master-02 mall]# docker exec -it nacos-registry /bin/bash          
    [root@0d549a492297 nacos]# cat conf/application.properties 
    
    #创建nacos的数据目录
    mkdir  -p /mydata/nacos
    
    #创建配置文件
    [root@k8s-master-02 ~]# vim /mydata/nacos/application.properties
    # spring
    server.servlet.contextPath=${SERVER_SERVLET_CONTEXTPATH:/nacos}
    server.contextPath=/nacos
    server.port=${NACOS_APPLICATION_PORT:8848}
    spring.datasource.platform=${SPRING_DATASOURCE_PLATFORM:""}
    nacos.cmdb.dumpTaskInterval=3600
    nacos.cmdb.eventTaskInterval=10
    nacos.cmdb.labelTaskInterval=300
    nacos.cmdb.loadDataAtStart=false
    db.num=${MYSQL_DATABASE_NUM:1}
    db.url.0=jdbc:mysql://${MYSQL_SERVICE_HOST}:${MYSQL_SERVICE_PORT:3306}/${MYSQL_SERVICE_DB_NAME}?${MYSQL_SERVICE_DB_PARAM:characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false}
    db.url.1=jdbc:mysql://${MYSQL_SERVICE_HOST}:${MYSQL_SERVICE_PORT:3306}/${MYSQL_SERVICE_DB_NAME}?${MYSQL_SERVICE_DB_PARAM:characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false}
    db.user=${MYSQL_SERVICE_USER}
    db.password=${MYSQL_SERVICE_PASSWORD}
    ### The auth system to use, currently only 'nacos' is supported:
    nacos.core.auth.system.type=${NACOS_AUTH_SYSTEM_TYPE:nacos}
    
    
    ### The token expiration in seconds:
    nacos.core.auth.default.token.expire.seconds=${NACOS_AUTH_TOKEN_EXPIRE_SECONDS:18000}
    
    ### The default token:
    nacos.core.auth.default.token.secret.key=${NACOS_AUTH_TOKEN:SecretKey012345678901234567890123456789012345678901234567890123456789}
    
    ### Turn on/off caching of auth information. By turning on this switch, the update of auth information would have a 15 seconds delay.
    nacos.core.auth.caching.enabled=${NACOS_AUTH_CACHE_ENABLE:false}
    nacos.core.auth.enable.userAgentAuthWhite=${NACOS_AUTH_USER_AGENT_AUTH_WHITE_ENABLE:false}
    nacos.core.auth.server.identity.key=${NACOS_AUTH_IDENTITY_KEY:serverIdentity}
    nacos.core.auth.server.identity.value=${NACOS_AUTH_IDENTITY_VALUE:security}
    server.tomcat.accesslog.enabled=${TOMCAT_ACCESSLOG_ENABLED:false}
    server.tomcat.accesslog.pattern=%h %l %u %t "%r" %s %b %D
    # default current work dir
    server.tomcat.basedir=
    ## spring security config
    ### turn off security
    nacos.security.ignore.urls=${NACOS_SECURITY_IGNORE_URLS:/,/error,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-fe/public/**,/v1/auth/**,/v1/console/health/**,/actuator/**,/v1/console/server/**}
    # metrics for elastic search
    management.metrics.export.elastic.enabled=false
    management.metrics.export.influx.enabled=false
    
    nacos.naming.distro.taskDispatchThreadCount=10
    nacos.naming.distro.taskDispatchPeriod=200
    nacos.naming.distro.batchSyncKeyCount=1000
    nacos.naming.distro.initDataRatio=0.9
    nacos.naming.distro.syncRetryDelay=5000
    nacos.naming.data.warmup=true
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    #部署
    docker-compose -f docker-cmompose-nacos.yaml  down
    docker-compose -f docker-cmompose-nacos.yaml  up -d
    docker logs --tail=500 nacos-registry -f
    
    • 1
    • 2
    • 3
    • 4
    • 访问:http://192.168.4.119:8848/nacos/
    • 用户名和密码:nacos/nacos

    六、测试持久化

    • 找到用户列表——创建用户jiawenchao——重启容器——再次查看用户是否存在,存在则持久化成功
    #重启nacos,再次访问nacos
    docker restart nacos-registry 
    
    • 1
    • 2
    • 重启后发现jiawenchao用户存在,说明持久化成功。
    在 Nacos2.1.0 版本后,默认关闭了双写能力,因此无法支持从 Nacos1.X 版本平滑升级到 2.1.0 的能力
    
    若需要使用平滑升级能力,从 Nacos1.X 直接升级到 Nacos2.1.0 版本,需要在 application.properties 文件中设置配置 nacos.core.support.upgrade.from.1x=true.
    
    • 1
    • 2
    • 3
  • 相关阅读:
    [附源码]java毕业设计逸尘房屋销售管理系统
    Abbexa丨Abbexa Actin-pan细胞ELISA试剂盒介绍
    开源与闭源:驾驭大模型未来的关键决断
    SS-Model【5】:U-Net
    实践案例:同程艺龙网的 Dubbo 升级经验总结
    SCS【4】单细胞转录组数据可视化分析 (Seurat 4.0)
    CF837G Functions On The Segments
    高效构建基于Python的商品评论文本挖掘网页APP
    前端js反爬虫技术总结
    获取泛型对应的类
  • 原文地址:https://blog.csdn.net/qq_39826987/article/details/127721305