Nacos 集群搭建 Docker版

本文详述了如何在Docker环境下搭建Nacos集群,包括创建自定义网络、配置Mysql数据库、准备Nacos配置文件及发布Nacos镜像实例。通过设置静态IP、网络连接、数据库配置和环境变量,确保Nacos集群的稳定运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Nacos集群搭建

环境说明:由于资源有限,Nacos集群Demo是在一台虚拟机上完成的。采用Docker搭建。总共3台Nacos实例和1台Mysql实例。为了让四台应用同处一个网段下面。用docker创建一个网络,并将四个应用放到该网络中。Naocs单节点时,默认使用的是内置的数据库Derby。所以单台Nacos可以不用配置外置数据库。而集群Nacos需要保证一致性,所有的nacos使用的配置和数据必须一直,所以需要外置数据库,而Nacos官方推荐Mysql数据库。如果已安装Mysql,则创建nacos数据库,并导入官方建表sql即可。

搭建过程主要参照docker 部署 nacos 集群

1.创建自定义网卡:

docker network create --driver bridge --subnet 172.18.0.0/16 myNetwork

说明:

--subnet	# 指定子网,IP从子网下 1 开始分配,例如该例网段为172.18.X.X,IP从172.18.0.1开始分配
myNetwork 	# 为创建的网络的名称

2.搭建Mysql数据库

镜像准备

docker pull mysql

创建容器

docker run -d \
--network myNetwork --ip 172.18.0.3 \
--name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql

// 搭建完毕后需要导入nacos的数据库

nacos 数据库 : nacos/nacos-mysql.sql at develop · alibaba/nacos · GitHub

创建一个数据库nacos_config,然后将此sql导入到数据库中执行。详细Sql 也可参见附件A

# 创建数据库
create database nacos_config
use nacos_config

3.Nacos配置文件准备

镜像准备:

docker pull nacos/nacos-server

获取配置文件:

// 先创建一个普通的nacos容器,然后从里面把配置拷到宿主机,便于之后集群时做映射,用同一份配置文件

mkdir -p /usr/local/nacos/conf
mkdir -p /usr/local/nacos/logs/nacos-server-18848
mkdir -p /usr/local/nacos/logs/nacos-server-18849
mkdir -p /usr/local/nacos/logs/nacos-server-18850

docker run -d --name=nacos -p 8848:8848 nacos/nacos-server
docker cp nacos:/home/nacos/conf /usr/local/nacos/conf
docker stop nacos && docker rm nacos

4.Nacos镜像实例1发布

docker run -d \
--network myNetwork --ip 172.18.0.4 --name nacos-server-18848 \
-e MODE=cluster \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=172.18.0.3 \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=123456 \
-e MYSQL_SERVICE_DB_NAME=nacos_config \
-e NACOS_SERVER_PORT=8848 \
-e NACOS_SERVERS="172.18.0.4:8848 172.18.0.5:8848 172.18.0.6:8848" \
-e NACOS_SERVER_IP=172.18.0.4 \
-e JVM_XMS=256m -e JVM_XMX=512m  \
-v /usr/local/nacos/logs/nacos-server-18848:/home/nacos/logs \
-v /usr/local/nacos/conf:/home/nacos/conf \
-p 18848:8848 \
nacos/nacos-server

配置说明:

--network myNetwork		# 将容器挂载在myNetwork网络下
--ip 172.18.0.4			# 设置静态IP,防止容器采用DHCP更改IP
-e MYSQL_SERVICE_DB_NAME=nacos_config # 设置nacos的数据库的库名,这个需要去找nacos提供的sql并导入数据库,否则报错
-e NACOS_SERVERS="172.18.0.4:8848 172.18.0.5:8848 172.18.0.6:8848"		# Nacos 集群节点的IP端口
-e NACOS_SERVER_IP=172.18.0.4 		# 当前Nacos的IP (最好固定,否则多网卡容易出问题)

总体映射关系如下:

172.18.0.1:18848 -> 172.18.0.4:8848    # 宿主机IP:端口  ->  容器IP:端口
172.18.0.1:18849 -> 172.18.0.5:8848
172.18.0.1:18850 -> 172.18.0.6:8848
172.17.0.1 == 172.18.0.1   #一台机器有多个IP,这两个IP相等的意思是他们是同一台机器

// nacos镜像实例2、3依此类推

docker run -d \
--network myNetwork --ip 172.18.0.5 --name nacos-server-18849 \
-e MODE=cluster \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=172.18.0.3 \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=123456 \
-e MYSQL_SERVICE_DB_NAME=nacos_config \
-e NACOS_SERVER_PORT=8848 \
-e NACOS_SERVERS="172.18.0.4:8848 172.18.0.5:8848 172.18.0.6:8848" \
-e NACOS_SERVER_IP=172.18.0.5 \
-e JVM_XMS=256m -e JVM_XMX=512m  \
-v /usr/local/nacos/logs/nacos-server-18849:/home/nacos/logs \
-v /usr/local/nacos/conf:/home/nacos/conf \
-p 18849:8848 \
nacos/nacos-server
docker run -d \
--network myNetwork --ip 172.18.0.6 --name nacos-server-18850 \
-e MODE=cluster \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=172.18.0.3 \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=123456 \
-e MYSQL_SERVICE_DB_NAME=nacos_config \
-e NACOS_SERVER_PORT=8848 \
-e NACOS_SERVERS="172.18.0.4:8848 172.18.0.5:8848 172.18.0.6:8848" \
-e NACOS_SERVER_IP=172.18.0.6 \
-e JVM_XMS=256m -e JVM_XMX=512m  \
-v /usr/local/nacos/logs/nacos-server-18850:/home/nacos/logs \
-v /usr/local/nacos/conf:/home/nacos/conf \
-p 18850:8848 \
nacos/nacos-server

// 至此,Nacos集群应该就已启动完毕,进入Nacos集群页面可看到有三个节点。

附件:

A. Nacos数据库 sql

/*
 * Copyright 1999-2018 Alibaba Group Holding Ltd.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

/******************************************/
/*   数据库全名 = nacos_config   */
/*   表名称 = config_info   */
/******************************************/
CREATE TABLE `config_info` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
  `data_id` varchar(255) NOT NULL COMMENT 'data_id',
  `group_id` varchar(255) DEFAULT NULL,
  `content` longtext NOT NULL COMMENT 'content',
  `md5` varchar(32) 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 COMMENT 'source user',
  `src_ip` varchar(50) DEFAULT NULL COMMENT 'source ip',
  `app_name` varchar(128) DEFAULT NULL,
  `tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',
  `c_desc` varchar(256) DEFAULT NULL,
  `c_use` varchar(64) DEFAULT NULL,
  `effect` varchar(64) DEFAULT NULL,
  `type` varchar(64) DEFAULT NULL,
  `c_schema` text,
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值