Docker部署Nacos2.3.2高可用集群
创建Docker网络
docker network create -d bridge bdg-nacos-cluster
创建MySQL容器,并初始化数据库nacos_config
mkdir -p /etc/nacos-mysql/initdb
cd /etc/nacos-mysql/initdb
rm -f mysql-schema.sql
wget https://wjd8.cn/upload/mysql-schema.sql
docker rm -f mysql8
docker volume rm nacos-mysql-data
docker volume create nacos-mysql-data
docker run --name mysql8 --hostname=mysql8 -d \
--network=bdg-nacos-cluster --restart=always \
-p 8306:3306 \
-e MYSQL_ROOT_PASSWORD=KMxklzx99# \
-v nacos-mysql-data:/var/lib/mysql \
-v /etc/nacos-mysql/initdb:/docker-entrypoint-initdb.d \
mysql:8
该命令使用Docker运行了一个名为mysql8的容器,使用MySQL8镜像。该容器被分配了bdg-nacos-cluster网络,并且容器内部的主机名被设置为mysql8。容器还被配置为始终重启,并在8306端口上公开MySQL服务。 该命令还设置了一系列参数,包括:
-e MYSQL_ROOT_PASSWORD=root:指定MySQL的root用户的密码为root,该密码将用于初始登录和访问MySQL数据库。 -v nacos-mysql-data:/var/lib/mysql:创建名为nacos-mysql-data的数据卷,并将其挂载到容器中的/var/Iib/mysql目录,用于存储MySQL数据库文件,以实现持久化存储。 -v /etc/nacos-mysql/initdb:/docker-.entrypoint-.initdb.d:将主机上的/etc/nacos-mysql/initdb目录挂载到容器中的/docker-entrypoint-.initdb.d目录。该目录包含SQL脚本文件,用于在容器启动时自动执行MySQL数据库初始化操作,以创建数据库和表等。 -p 8306:3306:将容器内的MySQL服务的默认端口3306映射到主机上的8306端口,以便在主机上通过8306端口访问MySQL服务。
执行成功后mysql8数据库会创建好nacos_config数据库
这些数据表是Nacos中存储配置信息和权限信息的表格,它们的作用如下:
·config_info:存储配置信息的主要表格,包含配置信息的D、数据ID、分组、配置内容、MD5值、配置类型、创建时间、最后修改时间等信息。
·config_info_aggr:聚合配置信息的表格,用于存储聚合配置信息的1D、数据ID、分组、配置内容、MD5值、配置类型、创建时间、最后修改时间等信息。
·config_info_beta:存储配置信息的Beta版本,用于存储Beta版本的ID、数据ID、分组、配置内容、MD5值、配置类型、创建时间、最后修改时间等信息。
·config_info_tag:存储配置信息标签的表格,用于存储标签信息的1D、标签名称、标签描述等信息。
·config_tags_relation:存储配置信息和标签关系的表格,用于存储配置信息和标签之间的对应关系,包含关系D、配置信息ID、标签ID等信息。
·group_.capacity:存储分组容量信息的表格,用于存储分组容量的ID、分组名称、最大容量等信息。
·his_config_info:存储历史配置信息的表格,用于存储配置信息的历史版本,包含历史版本ID、数据ID、分组、配置内容、MD5值、配置类型、创建时间、最后修改时间等信息。
·permissions:存储权限信息的表格,用于存储权限信息的ID、权限名称、权限描述等信息。
·roles:存储角色信息的表格,用于存储角色信息的lD、角色名称、角色描述等信息。
·tenant_capacity:存储租户容量信息的表格,用于存储租户容量的lD、租户名称、最大容量等信息。
·tenant_info:存储租户信息的表格,用于存储租户信息的D、租户名称、租户描述等信息。
·users:存储用户信息的表格,用于存储用户信息的ID、用户名、密码、角色等信息。
创建三个Nacos节点
nacos1:8848->8848
nacos2:8849->8848
nacos3:8850->8848
创建nacos1的脚本
export CNAME=nacos1
docker rm -f ${CNAME}
docker volume rm -f ${CNAME}-logs
docker volume create ${CNAME}-logs
docker run -d --name ${CNAME} \
--network=bdg-nacos-cluster --restart=always \
--hostname=${CNAME} \
-e PREFER_HOST_MODE=hostname \
-e NACOS_SERVERS="nacos1:8848 nacos2:8848 nacos3:8848" \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=mysql8 \
-e MYSQL_SERVICE_DB_NAME=nacos_config \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=KMxklzx99# \
-e NACOS_AUTH_ENABLE=true \
-e NACOS_AUTH_IDENTITY_KEY=2222 \
-e NACOS_AUTH_IDENTITY_VALUE=2xxx \
-e NACOS_AUTH_TOKEN=SecretKey012345678901234567890123456789012345678901234567890123456789 \
-v ${CNAME}-logs:/home/nacos/logs \
-p 8848:8848 -p 9848:9848 -d \
nacos/nacos-server:v2.3.2
创建nacos2的脚本
export CNAME=nacos2
docker rm -f ${CNAME}
docker volume rm -f ${CNAME}-logs
docker volume create ${CNAME}-logs
docker run -d --name ${CNAME} \
--network=bdg-nacos-cluster --restart=always \
--hostname=${CNAME} \
-e PREFER_HOST_MODE=hostname \
-e NACOS_SERVERS="nacos1:8848 nacos2:8848 nacos3:8848" \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=mysql8 \
-e MYSQL_SERVICE_DB_NAME=nacos_config \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=root \
-e NACOS_AUTH_ENABLE=true \
-e NACOS_AUTH_IDENTITY_KEY=2222 \
-e NACOS_AUTH_IDENTITY_VALUE=2xxx \
-e NACOS_AUTH_TOKEN=SecretKey012345678901234567890123456789012345678901234567890123456789 \
-v ${CNAME}-logs:/home/nacos/logs \
-p 8849:8848 -p 9849:9848 -d \
nacos/nacos-server:v2.3.2
创建nacos3的脚本
export CNAME=nacos3
docker rm -f ${CNAME}
docker volume rm -f ${CNAME}-logs
docker volume create ${CNAME}-logs
docker run -d --name ${CNAME} \
--network=bdg-nacos-cluster --restart=always \
--hostname=${CNAME} \
-e PREFER_HOST_MODE=hostname \
-e NACOS_SERVERS="nacos1:8848 nacos2:8848 nacos3:8848" \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=mysql8 \
-e MYSQL_SERVICE_DB_NAME=nacos_config \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=root \
-e NACOS_AUTH_ENABLE=true \
-e NACOS_AUTH_IDENTITY_KEY=2222 \
-e NACOS_AUTH_IDENTITY_VALUE=2xxx \
-e NACOS_AUTH_TOKEN=SecretKey012345678901234567890123456789012345678901234567890123456789 \
-v ${CNAME}-logs:/home/nacos/logs \
-p 8850:8848 -p 9850:9848 -d \
nacos/nacos-server:v2.3.2
访问http://主机ip:8848/nacos 用户名: nacos 密码: nacos
安装成功。