什么是Nacos?
Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。
Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。
Nacos官网资料
开始从Docker搭建
克隆nacos-docker 目前最行版为1.3.2
git clone https://github.com/nacos-group/nacos-docker.git
进入项目目录
cd nacos-docer
tree . -L 2
root@JesseHuan:~/dev/nacos-docker# tree . -L 2
.
|-- build # nacos 镜像制作的源码
| |-- bin
| |-- conf
| |-- Dockerfile
| `-- init.d
|-- changlog
|-- env # docker compose 环境变量文件 docker-compose -e 配置的变量可以写到对应的.env里面
| |-- mysql.env
| |-- nacos-embedded.env
| |-- nacos-hostname.env
| |-- nacos-ip.env
| `-- nacos-standlone-mysql.env
|-- example # docker-compose编排例子
| |-- cluster-embedded.yaml # 集群-内置嵌入式数据库
| |-- cluster-hostname.yaml # 集群-主机名 使用mysql
| |-- cluster-ip.yaml # 集群-使用IP 同样是mysql
| |-- cluster-logs
| |-- init.d
| |-- mysql
| |-- prometheus
| |-- standalone-derby.yaml # 单机-内置嵌入式数据库derby
| |-- standalone-mysql-5.7.yaml # 单机-mysql5.7
| `-- standalone-mysql-8.yaml # 单机-mysql8
|-- README.md
`-- README_ZH.md
本次用cluster-hostname.yaml 搭建一个nacos集群,所以看下里面写了些什么 cat example/cluster-hostname.yaml
version: "3"
services:
nacos1:
hostname: nacos1
container_name: nacos1
image: nacos/nacos-server:latest
volumes:
- ./cluster-logs/nacos1:/home/nacos/logs # 配置nacos1的日志,需要自己创建目录
- ./init.d/custom.properties:/home/nacos/init.d/custom.properties
ports:
- "8848:8848"
- "9555:9555"
env_file:
- ../env/nacos-hostname.env # 这里可以添加很多环境变量
restart: always
depends_on:
- mysql
nacos2:
hostname: nacos2
image: nacos/nacos-server:latest
container_name: nacos2
volumes:
- ./cluster-logs/nacos2:/home/nacos/logs # 配置nacos2的日志,需要自己创建目录
- ./init.d/custom.properties:/home/nacos/init.d/custom.properties
ports:
- "8849:8848"
env_file:
- ../env/nacos-hostname.env
restart: always
depends_on:
- mysql
nacos3:
hostname: nacos3
image: nacos/nacos-server:latest
container_name: nacos3
volumes:
- ./cluster-logs/nacos3:/home/nacos/logs # 配置nacos3的日志,需要自己创建目录
- ./init.d/custom.properties:/home/nacos/init.d/custom.properties
ports:
- "8850:8848"
env_file:
- ../env/nacos-hostname.env
restart: always
depends_on:
- mysql
mysql:
container_name: mysql
image: nacos/nacos-mysql:5.7
env_file:
- ../env/mysql.env
volumes:
- ./mysql:/var/lib/mysql
ports:
- "3306:3306"
创建三个nacos日志文件夹 因为这里没有
mkdir -p example/cluster-logs/nacos1
mkdir -p example/cluster-logs/nacos2
mkdir -p example/cluster-logs/nacos3
由于我这里运行nacos集群的主机配置比较低为G4560+8GB
,所以我配置下虚拟机大小 vim env/nacos-hostname.env
#nacos dev env
PREFER_HOST_MODE=hostname
NACOS_SERVERS=nacos1:8848 nacos2:8848 nacos3:8848
MYSQL_SERVICE_HOST=mysql
MYSQL_SERVICE_DB_NAME=nacos_devtest
MYSQL_SERVICE_PORT=3306
MYSQL_SERVICE_USER=nacos
MYSQL_SERVICE_PASSWORD=nacos
# 添加如下内容
JVM_XMS=768m
JVM_XMX=768m
JVM_XMN=384m
环境变量详情
运行命令启动集群docker-compose -f example/cluster-hostname.yaml up
我的主机性能比较差,需要等一会儿
Starting mysql ... done
Starting nacos3 ... done
Starting nacos1 ... done
Starting nacos2 ... done
Attaching to mysql, nacos3, nacos1, nacos2
mysql | WARNING: no logs are available with the 'db' log driver
nacos3 | WARNING: no logs are available with the 'db' log driver
nacos1 | WARNING: no logs are available with the 'db' log driver
nacos2 | WARNING: no logs are available with the 'db' log driver
访问 http://localhost:8848/nacos
如果没有结果可以再等会儿。
默认用户名和密码都为nacos