这里记录一下使用docker部署nacos伪集群的过程。
为什么说是伪集群呢?很简单,家里条件没那么富裕,就一台服务器。我在一台服务器上使用docker部署三个nacos服务,所以是伪集群。
一:创建nacos专用网络
docker network create my_network
二:创建数据库nacos
-- ----------------------------
-- Table structure for config_info
-- ----------------------------
DROP TABLE IF EXISTS `config_info`;
CREATE TABLE `config_info` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT 'id',
`data_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'data_id',
`group_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT 'group_id',
`content` longtext CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'content',
`md5` varchar(32) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT 'md5',
`gmt_create` datetime NOT NULL DEFAULT current_timestamp COMMENT '创建时间',
`gmt_modified` datetime NOT NULL DEFAULT current_timestamp COMMENT '修改时间',
`src_user` text CHARACTER SET utf8 COLLATE utf8_bin NULL COMMENT 'source user',
`src_ip` varchar(50) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT 'source ip',
`app_name` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT 'app_name',
`tenant_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT '' COMMENT '租户字段',
`c_desc` varchar(256) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT 'configuration description',
`c_use` varchar(64) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT 'configuration usage',
`effect` varchar(64) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT '配置生效的描述',
`type` varchar(64) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT '配置的类型',
`c_schema` text CHARACTER SET utf8 COLLATE utf8_bin NULL COMMENT '配置的模式',
`encrypted_data_key` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT '密钥',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE INDEX `uk_configinfo_datagrouptenant`(`data_id` ASC, `group_id` ASC, `tenant_id` ASC) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 20 CHARACTER SET = utf8 COLLATE = utf8_bin COMMENT = 'config_info' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for config_info_aggr
-- ----------------------------
DROP TABLE IF EXISTS `config_info_aggr`;
CREATE TABLE `config_info_aggr` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT 'id',
`data_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'data_id',
`group_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'group_id',
`datum_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'datum_id',
`content` longtext CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT '内容',
`gmt_modified` datetime NOT NULL COMMENT '修改时间',
`app_name` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT 'app_name',
`tenant_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT '' COMMENT '租户字段',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE INDEX `uk_configinfoaggr_datagrouptenantdatum`(`data_id` ASC, `group_id` ASC, `tenant_id` ASC, `datum_id` ASC) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_bin COMMENT = '增加租户字段' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for config_info_beta
-- ----------------------------
DROP TABLE IF EXISTS `config_info_beta`;
CREATE TABLE `config_info_beta` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT 'id',
`data_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'data_id',
`group_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'group_id',
`app_name` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT 'app_name',
`content` longtext CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'content',
`beta_ips` varchar(1024) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT 'betaIps',
`md5` varchar(32) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT 'md5',
`gmt_create` datetime NOT NULL DEFAULT current_timestamp COMMENT '创建时间',
`gmt_modified` datetime NOT NULL DEFAULT current_timestamp COMMENT '修改时间',
`src_user` text CHARACTER SET utf8 COLLATE utf8_bin NULL COMMENT 'source user',
`src_ip` varchar(50) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT 'source ip',
`tenant_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT '' COMMENT '租户字段',
`encrypted_data_key` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT '密钥',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE INDEX `uk_configinfobeta_datagrouptenant`(`data_id` ASC, `group_id` ASC, `tenant_id` ASC) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_bin COMMENT = 'config_info_beta' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for config_info_tag
-- ----------------------------
DROP TABLE IF EXISTS `config_info_tag`;
CREATE TABLE `config_info_tag` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT 'id',
`data_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'data_id',
`group_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'group_id',
`tenant_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT '' COMMENT 'tenant_id',
`tag_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'tag_id',
`app_name` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT 'app_name',
`content` longtext CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'content',
`md5` varchar(32) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT 'md5',
`gmt_create` datetime NOT NULL DEFAULT current_timestamp COMMENT '创建时间',
`gmt_modified` datetime NOT NULL DEFAULT current_timestamp COMMENT '修改时间',
`src_user` text CHARACTER SET utf8 COLLATE utf8_bin NULL COMMENT 'source user',
`src_ip` varchar(50) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT 'source ip',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE INDEX `uk_configinfotag_datagrouptenanttag`(`data_id` ASC, `group_id` ASC, `tenant_id` ASC, `tag_id` ASC) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_bin COMMENT = 'config_info_tag' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for config_tags_relation
-- ----------------------------
DROP TABLE IF EXISTS `config_tags_relation`;
CREATE TABLE `config_tags_relation` (
`id` bigint NOT NULL COMMENT 'id',
`tag_name` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'tag_name',
`tag_type` varchar(64) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT 'tag_type',
`data_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'data_id',
`group_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'group_id',
`tenant_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT '' COMMENT 'tenant_id',
`nid` bigint NOT NULL AUTO_INCREMENT COMMENT 'nid, 自增长标识',
PRIMARY KEY (`nid`) USING BTREE,
UNIQUE INDEX `uk_configtagrelation_configidtag`(`id` ASC, `tag_name` ASC, `tag_type` ASC) USING BTREE,
INDEX `idx_tenant_id`(`tenant_id` ASC) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_bin COMMENT = 'config_tag_relation' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for group_capacity
-- ----------------------------
DROP TABLE IF EXISTS `group_capacity`;
CREATE TABLE `group_capacity` (
`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`group_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '' COMMENT 'Group ID,空字符表示整个集群',
`quota` int UNSIGNED NOT NULL DEFAULT 0 COMMENT '配额,0表示使用默认值',
`usage` int UNSIGNED NOT NULL DEFAULT 0 COMMENT '使用量',
`max_size` int UNSIGNED NOT NULL DEFAULT 0 COMMENT '单个配置大小上限,单位为字节,0表示使用默认值',
`max_aggr_count` int UNSIGNED NOT NULL DEFAULT 0 COMMENT '聚合子配置最大个数,,0表示使用默认值',
`max_aggr_size` int UNSIGNED NOT NULL DEFAULT 0 COMMENT '单个聚合数据的子配置大小上限,单位为字节,0表示使用默认值',
`max_history_count` int UNSIGNED NOT NULL DEFAULT 0 COMMENT '最大变更历史数量',
`gmt_create` datetime NOT NULL DEFAULT current_timestamp COMMENT '创建时间',
`gmt_modified` datetime NOT NULL DEFAULT current_timestamp COMMENT '修改时间',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE INDEX `uk_group_id`(`group_id` ASC) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_bin COMMENT = '集群、各Group容量信息表' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for his_config_info
-- ----------------------------
DROP TABLE IF EXISTS `his_config_info`;
CREATE TABLE `his_config_info` (
`id` bigint UNSIGNED NOT NULL COMMENT 'id',
`nid` bigint UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'nid, 自增标识',
`data_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'data_id',
`group_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'group_id',
`app_name` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT 'app_name',
`content` longtext CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'content',
`md5` varchar(32) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT 'md5',
`gmt_create` datetime NOT NULL DEFAULT current_timestamp COMMENT '创建时间',
`gmt_modified` datetime NOT NULL DEFAULT current_timestamp COMMENT '修改时间',
`src_user` text CHARACTER SET utf8 COLLATE utf8_bin NULL COMMENT 'source user',
`src_ip` varchar(50) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT 'source ip',
`op_type` char(10) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT 'operation type',
`tenant_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT '' COMMENT '租户字段',
`encrypted_data_key` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT '密钥',
PRIMARY KEY (`nid`) USING BTREE,
INDEX `idx_gmt_create`(`gmt_create` ASC) USING BTREE,
INDEX `idx_gmt_modified`(`gmt_modified` ASC) USING BTREE,
INDEX `idx_did`(`data_id` ASC) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 194 CHARACTER SET = utf8 COLLATE = utf8_bin COMMENT = '多租户改造' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for permissions
-- ----------------------------
DROP TABLE IF EXISTS `permissions`;
CREATE TABLE `permissions` (
`role` varchar(50) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'role',
`resource` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'resource',
`action` varchar(8) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'action',
UNIQUE INDEX `uk_role_permission`(`role` ASC, `resource` ASC, `action` ASC) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_bin ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for roles
-- ----------------------------
DROP TABLE IF EXISTS `roles`;
CREATE TABLE `roles` (
`username` varchar(50) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'username',
`role` varchar(50) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'role',
UNIQUE INDEX `idx_user_role`(`username` ASC, `role` ASC) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_bin ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for tenant_capacity
-- ----------------------------
DROP TABLE IF EXISTS `tenant_capacity`;
CREATE TABLE `tenant_capacity` (
`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`tenant_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '' COMMENT 'Tenant ID',
`quota` int UNSIGNED NOT NULL DEFAULT 0 COMMENT '配额,0表示使用默认值',
`usage` int UNSIGNED NOT NULL DEFAULT 0 COMMENT '使用量',
`max_size` int UNSIGNED NOT NULL DEFAULT 0 COMMENT '单个配置大小上限,单位为字节,0表示使用默认值',
`max_aggr_count` int UNSIGNED NOT NULL DEFAULT 0 COMMENT '聚合子配置最大个数',
`max_aggr_size` int UNSIGNED NOT NULL DEFAULT 0 COMMENT '单个聚合数据的子配置大小上限,单位为字节,0表示使用默认值',
`max_history_count` int UNSIGNED NOT NULL DEFAULT 0 COMMENT '最大变更历史数量',
`gmt_create` datetime NOT NULL DEFAULT current_timestamp COMMENT '创建时间',
`gmt_modified` datetime NOT NULL DEFAULT current_timestamp COMMENT '修改时间',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE INDEX `uk_tenant_id`(`tenant_id` ASC) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_bin COMMENT = '租户容量信息表' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for tenant_info
-- ----------------------------
DROP TABLE IF EXISTS `tenant_info`;
CREATE TABLE `tenant_info` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT 'id',
`kp` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'kp',
`tenant_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT '' COMMENT 'tenant_id',
`tenant_name` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT '' COMMENT 'tenant_name',
`tenant_desc` varchar(256) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT 'tenant_desc',
`create_source` varchar(32) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT 'create_source',
`gmt_create` bigint NOT NULL COMMENT '创建时间',
`gmt_modified` bigint NOT NULL COMMENT '修改时间',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE INDEX `uk_tenant_info_kptenantid`(`kp` ASC, `tenant_id` ASC) USING BTREE,
INDEX `idx_tenant_id`(`tenant_id` ASC) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8 COLLATE = utf8_bin COMMENT = 'tenant_info' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for users
-- ----------------------------
DROP TABLE IF EXISTS `users`;
CREATE TABLE `users` (
`username` varchar(50) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'username',
`password` varchar(500) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'password',
`enabled` tinyint(1) NOT NULL COMMENT 'enabled',
PRIMARY KEY (`username`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_bin ROW_FORMAT = Dynamic;
SET FOREIGN_KEY_CHECKS = 1;
先放一下官方网站地址:nacos.io/docs/v2.3/q…
具体你可以参考一下官网的部署以及对参数的解释。
docker run -d \
-p 17848:7848 \
-p 18848:8848 \
-p 19848:9848 \
-p 19849:9849 \
-e NACOS_AUTH_ENABLE=true \
-e JVM_XMS=128m \
-e JVM_XMX=128m \
-e JVM_XMN=128m \
-e PREFER_HOST_MODE=ip \
-e MODE=cluster \
-e NACOS_SERVER_PORT=8848 \
-e NACOS_SERVERS="172.18.0.3 172.18.0.2 172.18.0.4" \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=1.15.157.156 \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD='xxx' \
-e MYSQL_SERVICE_DB_NAME=nacos_config \
-e MYSQL_SERVICE_DB_PARAM='characterEncoding=utf8&connectTimeout=10000&socketTimeout=30000&autoReconnect=true&useSSL=false' \
-e NACOS_SERVER_IP=172.18.0.2 \
-e NACOS_AUTH_IDENTITY_KEY=2222 \
-e NACOS_AUTH_IDENTITY_VALUE=2xxx \
-e NACOS_AUTH_TOKEN=SecretKey012345678901234567890123456789012345678901234567890123456789 \
-v /opt/docker/nacos/nacos-one/data:/home/nacos/data \
-v /opt/docker/nacos/nacos-one/logs:/home/nacos/logs \
--privileged=true \
--restart=always \
--name nacos-one \
--net=nacos-net \
nacos/nacos-server:v2.3.2
docker run -d \
-p 27848:7848 \
-p 28848:8848 \
-p 29848:9848 \
-p 29849:9849 \
-e NACOS_AUTH_ENABLE=true \
-e JVM_XMS=128m \
-e JVM_XMX=128m \
-e JVM_XMN=128m \
-e PREFER_HOST_MODE=ip \
-e MODE=cluster \
-e NACOS_SERVER_PORT=8848 \
-e NACOS_SERVERS="172.18.0.3 172.18.0.2 172.18.0.4" \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=1.15.157.156 \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD='xxx' \
-e MYSQL_SERVICE_DB_NAME=nacos_config \
-e MYSQL_SERVICE_DB_PARAM='characterEncoding=utf8&connectTimeout=10000&socketTimeout=30000&autoReconnect=true&useSSL=false' \
-e NACOS_SERVER_IP=172.18.0.3 \
-e NACOS_AUTH_IDENTITY_KEY=2222 \
-e NACOS_AUTH_IDENTITY_VALUE=2xxx \
-e NACOS_AUTH_TOKEN=SecretKey012345678901234567890123456789012345678901234567890123456789 \
-v /opt/docker/nacos/nacos-two/data:/home/nacos/data \
-v /opt/docker/nacos/nacos-two/logs:/home/nacos/logs \
--privileged=true \
--restart=always \
--name nacos-two \
--net=nacos-net \
nacos/nacos-server: v2.3.2
docker run -d \
-p 37848:7848 \
-p 38848:8848 \
-p 39848:9848 \
-p 39849:9849 \
-e NACOS_AUTH_ENABLE=true \
-e JVM_XMS=128m \
-e JVM_XMX=128m \
-e JVM_XMN=128m \
-e PREFER_HOST_MODE=ip \
-e MODE=cluster \
-e NACOS_SERVER_PORT=8848 \
-e NACOS_SERVERS="172.18.0.3 172.18.0.2 172.18.0.4" \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=1.15.157.156 \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD='xxx' \
-e MYSQL_SERVICE_DB_NAME=nacos_config \
-e MYSQL_SERVICE_DB_PARAM='characterEncoding=utf8&connectTimeout=10000&socketTimeout=30000&autoReconnect=true&useSSL=false' \
-e NACOS_SERVER_IP=172.18.0.4 \
-e NACOS_AUTH_IDENTITY_KEY=2222 \
-e NACOS_AUTH_IDENTITY_VALUE=2xxx \
-e NACOS_AUTH_TOKEN=SecretKey012345678901234567890123456789012345678901234567890123456789 \
-v /opt/docker/nacos/nacos-three/data:/home/nacos/data \
-v /opt/docker/nacos/nacos-three/logs:/home/nacos/logs \
--privileged=true \
--restart=always \
--name nacos-three \
--net=nacos-net \
nacos/nacos-server:v2.3.2
参数说明:
| 参数 | 说明 |
|---|---|
| -d | 支持后台运行模式 |
| -p 8848:8848 | 把容器内的端口8848挂载到宿主机8848上面 |
| -p 9848:9848 | 把容器内的端口9848挂载到宿主机9848上面 |
| -e NACOS_AUTH_ENABLE=true | 开启 Nacos server 的注册鉴权 |
| -e JVM_XMS=128m | 为jvm启动时分配的内存 |
| -e JVM_XMX=128m | 为jvm运行过程中分配的最大内存 |
| -e JVM_XMN=128m | 为jvm设置年轻代的大小 |
| -e PREFER_HOST_MODE=ip | 是否支持hostname,可选项:hostname/ip,默认值ip |
| -e MODE=cluster | 集群模式或者单独模式, 可选项:cluster/standalone,默认值cluster |
| -e NACOS_SERVER_PORT=8848 | nacos服务端口 |
| -e NACOS_SERVERS="192.168.3.216:8848 192.168.3.217:8848 192.168.3.218:8848" | nacos集群地址 |
| -e SPRING_DATASOURCE_PLATFORM=mysql | 以mysql为nacos做数据持久化 |
| -e MYSQL_SERVICE_HOST=192.168.3.215 | mysql地址 |
| -e MYSQL_SERVICE_PORT=3306 | mysql访问地址 |
| -e MYSQL_SERVICE_USER=root | mysql账号 |
| -e MYSQL_SERVICE_PASSWORD=root | mysql密码 |
| -e MYSQL_SERVICE_DB_NAME=nacos_config | mysql使用库 |
| -e MYSQL_SERVICE_DB_PARAM='characterEncoding=utf8&connectTimeout=10000&socketTimeout=30000&autoReconnect=true&useSSL=false' | mysql常用连接参数 |
| -e NACOS_SERVER_IP=192.168.3.218 | nacos单机注册地址 |
| -v /usr/local/software/nacos/logs:/home/nacos/logs | 挂在nacos运行日志 |
| --privileged=true | 使用root权限运行容器 |
| --restart=always | 容器自动运行 |
| --name nacos3 | 容器名字 |
| -e NACOS_AUTH_IDENTITY_KEY | 表示 Nacos 认证身份的键。当启用认证功能时,需要使用身份键和身份值进行身份验证。身份键可以是用户名、应用程序名称或任何其他标识符。 |
| -e NACOS_AUTH_IDENTITY_VALUE | 表示 Nacos 认证身份的值。当启用认证功能时,需要使用身份键和身份值进行身份验证。身份值可以是用户名、应用程序名称或任何其他与身份键相对应的值。 |
| -e NACOS_AUTH_TOKEN | 表示 Nacos 的认证令牌。当启用认证功能时,需要使用认证令牌进行身份验证。如果未提供正确的认证令牌,将无法访问 Nacos 的管理接口和配置信息。(建议使用随机生成的字符串作为认证令牌,并且确保它足够长和复杂,以提高安全性。) |
| nacos/nacos-server:2.3.2 | 使用docker镜像 |
至此,nacos的三集群就已经部署完成了。
但是,有一个小小的问题,docker这个命令有点low。下面我尝试了一下docker-compose.yml
四:docker-compose.yml
Docker-compose.yml其实很简单,就是将上边的docker命令按照docker-compose的语法写一下即可。
这里不需要先创建网卡network
1:nacos-compose-one节点
Docker-compose.yml
version: "3.8"
services:
nacos-compose-one:
container_name: nacos-compose-one # 容器名称
image: "nacos/nacos-server:v2.3.2" # 镜像名称
restart: on-failure:3 # 重启策略
ports: # 端口映射
- "17848:7848"
- "18848:8848"
- "19848:9848"
- "19849:9849"
environment: # 环境变量(这里边的值不能用引号来包裹,否则会报错)
- TZ=Asia/Shanghai # 时区
- MODE=cluster # 集群模式
- PREFER_HOST_MODE=ip # 优先使用ip
- NACOS_SERVER_PORT=8848 # 容器端口
- NACOS_SERVERS=172.40.0.3 172.40.0.2 172.40.0.4 # 集群地址
- MYSQL_SERVICE_HOST=1.15.157.156 # 数据库地址
- MYSQL_SERVICE_DB_NAME=nacos # 数据库名称
- MYSQL_SERVICE_PORT=3306 # 数据库端口
- MYSQL_SERVICE_USER=root # 数据库用户名
- MYSQL_SERVICE_PASSWORD=zishang1021!@# # 数据库密码
- MYSQL_SERVICE_DB_PARAM=characterEncoding=utf8&connectTimeout=10000&socketTimeout=30000&autoReconnect=true&useSSL=false # 数据库连接参数
- JVM_XMS=128m # jvm初始内存
- JVM_XMX=128m # jvm最大内存
- JVM_XMN=128m # jvm young空间
- NACOS_AUTH_ENABLE=true # 是否开启权限控制
- SPRING_DATASOURCE_PLATFORM=mysql # 数据库类型
- NACOS_SERVER_IP=172.40.0.2 # nacos服务IP
- NACOS_AUTH_IDENTITY_KEY=2222 # 认证key
- NACOS_AUTH_IDENTITY_VALUE=2xxx # 认证value
- NACOS_AUTH_TOKEN=SecretKey012345678901234567890123456789012345678901234567890123456789 # 认证token
volumes: # 持久化数据
- /opt/docker/nacos/nacos-compose-one/data:/home/nacos/data
- /opt/docker/nacos/nacos-compose-one/logs:/home/nacos/logs
networks: # 网络
nacos-network: # 网络
ipv4_address: 172.40.0.2 # ip
# 保证nacos集群服务在同一个网段
networks: # 网络
nacos-network: # 网卡名称
ipam: # ipam
driver: default # 驱动:默认
config: # 配置
- subnet: 172.40.0.0/16 # 子网
2:nacos-compose-two节点
Docker-compose.yml
version: "3.8"
services:
nacos-compose-two:
container_name: nacos-compose-two
image: "nacos/nacos-server:v2.3.2"
restart: on-failure:3
ports:
- "27848:7848"
- "28848:8848"
- "29848:9848"
- "29849:9849"
environment:
- TZ=Asia/Shanghai
- MODE=cluster
- PREFER_HOST_MODE=ip
- NACOS_SERVER_PORT=8848
- NACOS_SERVERS=172.40.0.3 172.40.0.2 172.40.0.4
- MYSQL_SERVICE_HOST=1.15.157.156
- MYSQL_SERVICE_DB_NAME=nacos
- MYSQL_SERVICE_PORT=3306
- MYSQL_SERVICE_USER=root
- MYSQL_SERVICE_PASSWORD=zishang1021!@#
- MYSQL_SERVICE_DB_PARAM=characterEncoding=utf8&connectTimeout=10000&socketTimeout=30000&autoReconnect=true&useSSL=false
- JVM_XMS=128m
- JVM_XMX=128m
- JVM_XMN=128m
- NACOS_AUTH_ENABLE=true
- SPRING_DATASOURCE_PLATFORM=mysql
- NACOS_SERVER_IP=172.40.0.2
- NACOS_AUTH_IDENTITY_KEY=2222
- NACOS_AUTH_IDENTITY_VALUE=2xxx
- NACOS_AUTH_TOKEN=SecretKey012345678901234567890123456789012345678901234567890123456789
volumes:
- /opt/docker/nacos/nacos-compose-two/data:/home/nacos/data
- /opt/docker/nacos/nacos-compose-two/logs:/home/nacos/logs
networks: # 网络
one_nacos-network: # 网卡名称
ipv4_address: 172.40.0.3 # 网卡IP
networks: # 网络
one_nacos-network: # 网卡名称
external: true # 是否外部网络
子节点主要关注一下网卡部分即可。one_nacos-network:网卡是上一个docker-compose中创建的。别问我怎么知道的。问就是我查看的。都是坑。
当然,你要是在一个docker-compose中运行三个nacos服务网络设置就使用如下的配置即可:
version: "3.8"
services:
nacos-compose-one:
container_name: nacos-compose-one # 容器名称
networks: # 网络
nacos-network: # 网络
ipv4_address: 172.40.0.2 # ip
nacos-compose-two:
container_name: nacos-compose-two # 容器名称
networks: # 网络
nacos-network: # 网络
ipv4_address: 172.40.0.3 # ip
# 保证nacos集群服务在同一个网段
networks: # 网络
nacos-network: # 网卡名称
ipam: # ipam
driver: default # 驱动:默认
config: # 配置
- subnet: 172.40.0.0/16 # 子网
运行命令:
docker compose up -d
运行成功之后,如下图所示:
以上大概就是docker部署nacos集群的基本流程。有docker命令,还有docker-compose,用那个都可以,看你自己的喜好。
20250428更新:
集群部署如果报错,就换一个IP,比如当前IP是172.40.0.2,启动报错,换成172.40.2.5,可能就不错报错了。
目前使用的docker-compose.yml如下:
version: "3.8"
# 共享环境变量配置
x-env: &env
# 数据库配置(生产建议使用云数据库)
SPRING_DATASOURCE_PLATFORM: mysql
MYSQL_SERVICE_HOST: 8.155.40.76
MYSQL_SERVICE_PORT: "3306"
MYSQL_SERVICE_DB_NAME: nacos
MYSQL_SERVICE_USER: root
MYSQL_SERVICE_PASSWORD: zishang1021!@#
MYSQL_SERVICE_DB_PARAM: characterEncoding=utf8&connectTimeout=3000&socketTimeout=5000&autoReconnect=true&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
MYSQL_SERVICE_DRIVER_CLASS_NAME: com.mysql.cj.jdbc.Driver
# 集群基础配置
MODE: cluster
# MODE: standalone
PREFER_HOST_MODE: ip
NACOS_SERVER_PORT: 8848
TZ: Asia/Shanghai
# NACOS_SERVERS: "nacos-node1:8848 nacos-node2:8848 nacos-node3:8848"
NACOS_SERVERS: 172.40.0.5 172.40.0.4 172.40.0.3
# 安全配置
NACOS_AUTH_ENABLE: "true"
NACOS_AUTH_IDENTITY_KEY: 2222
NACOS_AUTH_IDENTITY_VALUE: 2xxx
NACOS_AUTH_TOKEN: SecretKey012345678901234567890123456789012345678901234567890123456789
# 资源限制
JVM_XMS: 64m
JVM_XMX: 64m
JVM_XMN: 64m
# 配置网卡,集群尽可能使用一块网卡,内网通讯
networks:
nacos-network:
ipam:
driver: default
config:
- subnet: 172.40.0.0/24
# 配置容器
services:
nacos-compose-one:
container_name: nacos-compose-one
image: "nacos/nacos-server:v2.3.2"
restart: on-failure:3
ports:
- "7848:7848"
- "8848:8848"
- "9848:9848"
- "9849:9849"
environment:
<<: *env
# 节点特定配置
NACOS_SERVER_IP: 172.40.0.5
volumes:
- /opt/docker/nacos/nacos-compose-one/data:/home/nacos/data
- /opt/docker/nacos/nacos-compose-one/logs:/home/nacos/logs
networks:
nacos-network:
ipv4_address: 172.40.0.5
nacos-compose-two:
container_name: nacos-compose-two
image: "nacos/nacos-server:v2.3.2"
restart: on-failure:3
ports:
- "17848:7848"
- "18848:8848"
- "19848:9848"
- "19849:9849"
environment:
<<: *env
# 节点特定配置
NACOS_SERVER_IP: 172.40.0.3
volumes:
- /opt/docker/nacos/nacos-compose-two/data:/home/nacos/data
- /opt/docker/nacos/nacos-compose-two/logs:/home/nacos/logs
networks:
nacos-network:
ipv4_address: 172.40.0.3
有好的建议,请在下方输入你的评论。