07 Nacos的持久化和集群部署
背景介绍
默认的nacos使用嵌入式数据库derby实现数据的存储。所以,如果启动多个默认配置的nacos节点,数据存储存在一致性的问题。为了解决这个问题,Nacos采用了集中式存储的方法来支持集群化部署,目前支持MySQL的存储。
二、知识点介绍:
1.docker安装mysql(bridge网络模式下)
2.docker安装nacos(bridge网络模式下,且是单机版)
3.ABCD四类网址
4.自定义网络
3.docker安装mysql(自定义网络网络模式下)
4.docker安装nacos(自定义网络网络模式下,且是集群版)
5.nginx动态代理nacos集群
0.下载相关镜像
mysql/mysql-server:5.7
nacos/nacos-server:1.1.4
###目前网络模式为:bridge
1.docker mysql:5.7的持久化存储及远程连接
1.下拉镜像
docker pull mysql/mysql-server:5.7
注:后面的mysql标签是版本号,可选择,有:5.5/5.6/5.7/8.0
2.在宿主机中相关目录,用于挂载容器的相关数据
mkdir -p /zhoujun/mysql/{conf,data}
注1:conf目录
###重要的事情说三遍
###重要的事情说三遍
###重要的事情说三遍
必须提前上传my.cnf文件到/zhoujun/mysql/conf目录,并且它与window中的配置文件my.ini后缀名是不一样
必须提前上传my.cnf文件到/zhoujun/mysql/conf目录,并且它与window中的配置文件my.ini后缀名是不一样
必须提前上传my.cnf文件到/zhoujun/mysql/conf目录,并且它与window中的配置文件my.ini后缀名是不一样
详情见:资料/my.cnf
注2:data目录
数据保存到宿主机中,下次需要的时候重启容器,原有数据都能被加载,不会丢失数据
3.创建mysql5.7容器
docker run -p 3306:3306 \
--name mysql \
-v /zhoujun/mysql/conf/my.cnf:/etc/my.cnf \
-v /zhoujun/mysql/data:/var/lib/mysql \
--privileged=true \
--restart=always \
-e MYSQL_ROOT_PASSWORD=1234 \
-d mysql/mysql-server:5.7
docker run -p 3306:3306 --name mysql -v /zhoujun/mysql/conf/my.cnf:/etc/my.cnf -v /zhoujun/mysql/data:/var/lib/mysql --privileged=true --restart=always -e MYSQL_ROOT_PASSWORD=1234 -d mysql/mysql-server:5.7
参数说明:
-p 3306:3306:宿主机端口:容器端口
--name mysql:容器名字
-v:挂载宿主机的一个目录, 持久化存储的关键所在,将主机目录挂载到容器对应目录,分别是:配置文件、日志文件、数据文件
-v /data/mysql/conf:/etc/mysql/conf.d
-v /data/mysql/logs:/logs
-v /data/mysql/data:/var/lib/mysq
--privileged=true:使用该参数,container内的root拥有真正的root权限, 否则,container内的root只是外部的一个普通用户权限
--restart=always:容器自动启动参数,其值可以为[no,on-failure,always]
no为默认值,表示容器退出时,docker不自动重启容器
on-failure表示,若容器的退出状态非0,则docker自动重启容器,还可以指定重启次数,若超过指定次数未能启动容器则放弃
always表示,只要容器退出,则docker将自动重启容器
-e MYSQL_ROOT_PASSWORD=1234:设置root的密码
-d mysql/mysql-server:5.7:后台启动模式及使用的镜像
4.修改mysql允许Navicat远程连接
docker exec -it mysql /bin/bash #进入mysql5.7容器
mysql -u root -p; #登录mysql服务器,之后输入mysql密码:1234
grant all privileges on *.* to root@'%' identified by '1234'; #给用户授权
flush privileges; #更新权限后,外部就可以使用native进行连接了
注1:数据库字符集查看
show variables like'character%';
5.创建数据库nacos_config,并进行初始化
nacos-config.sql
6.持久化测试
删除刚刚创建的mysql容器,重新创建mysql容器,测试之前添加的数据是否存在
7.小结:使用bridge网络创建mysql5.7容器,创建并初始化数据库nacos
目前网络模式为:bridge
-
nacos-docker镜像安装nacos并配置数据库(nacos单机版)
1.拉取镜像
docker pull nacos/nacos-server:1.1.42.配置数据库(之前已完成)
3.创建nacos容器
docker run -d
-e PREFER_HOST_MODE=ip
-e MODE=standalone
-e SPRING_DATASOURCE_PLATFORM=mysql
-e MYSQL_MASTER_SE