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"

二、部署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
  • 使用Dockerfile定义应用程序环境,一般需要修改初始镜像行为时才需要使用;
  • 使用docker-compose.yml定义需要部署的应用程序服务,以便执行脚本一次性部署;
  • 使用docker-compose up命令将所有应用服务一次性部署起来。

三、部署mysql

#创建数据持久化目录
mkdir -p /mydata/{mysql,nacos}
$ 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          #日志文件挂载
docker-compose -f docker-cmompose-mysql.yaml  down
docker-compose -f docker-cmompose-mysql.yaml  up -d
docker logs --tail=500 nacos-registry -f

四、部署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

五、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
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
#部署
docker-compose -f docker-cmompose-nacos.yaml  down
docker-compose -f docker-cmompose-nacos.yaml  up -d
docker logs --tail=500 nacos-registry -f
  • 访问:http://192.168.4.119:8848/nacos/
  • 用户名和密码:nacos/nacos

六、测试持久化

  • 找到用户列表——创建用户jiawenchao——重启容器——再次查看用户是否存在,存在则持久化成功
#重启nacos,再次访问nacos
docker restart nacos-registry 
  • 重启后发现jiawenchao用户存在,说明持久化成功。
在 Nacos2.1.0 版本后,默认关闭了双写能力,因此无法支持从 Nacos1.X 版本平滑升级到 2.1.0 的能力

若需要使用平滑升级能力,从 Nacos1.X 直接升级到 Nacos2.1.0 版本,需要在 application.properties 文件中设置配置 nacos.core.support.upgrade.from.1x=true.
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

烟雨话浮生

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

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

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

打赏作者

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

抵扣说明:

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

余额充值