Nacos服务注册中心
什么是Nacos?
一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。一、安装配置Nacos
单机部署使用nacos包,群集部署使用docker。
1.单机部署Nacos
★单机准备工作★
安装包:nacos-server-2.2.2.tar.gz
nacos官网地址:https://nacos.io/zh-cn/index.html
安装好jdk环境(需要1.8以上的)
[root@test ~]# java -version
java version "1.8.0_333"
Java(TM) SE Runtime Environment (build 1.8.0_333-b02)
Java HotSpot(TM) 64-Bit Server VM (build 25.333-b02, mixed mode)
搭建好mysql,创建好nacos库以及nacos所需要的账号的密码
create database nacos character set utf8 collate utf8_bin;
grant all privileges on nacos.* to nacos@% identified by 'nacos123456.';
安装部署Nacos
1.解压nacos包
tar zxf nacos-server-2.2.2.tar.gz
2.导入nacos初始化的sql文件到nacos库
sql文件在conf/mysql-schema.sql
mysql -uroot -p123456 nacos < mysql-schema.sql
3.配置nacos的配置文件以mysql为数据源
vim conf/application.properties
-------------------------------------
spring.datasource.platform=mysql
### Count of DB:
db.num=1
### Connect URL of DB:
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=nacos
db.password.0=nacos123456.
4.启动服务,脚本在bin/startup.sh
./startup.sh -m standalone
5.访问nacos管理页面,默认端口为8848
访问地址为:\http://127.0.0.1:8848/nacos(如下图所示)

2.docker部署Nacos群集
★群集部署准备工作★
nacos镜像:nacos/nacos-server:latest
mysql镜像:mysql:5.7.44
安装好docker环境以及所需要的docker镜像
docker version
[root@server]~# docker images |egrep 'nacos|mysql'
nacos/nacos-server latest d3063c1db2bb 7 weeks ago 820MB
mysql 5.7.44 5107333e08a8 5 months ago 501MB
创建所需docker网络
docker network create -d bridge nacos
部署mysql和nacos群集
编写docker compose(如下所示)
# docker-compose.yaml
version: '3'
services:
mysql-nacos:
image: mysql:5.7.44
container_name: mysql
restart: unless-stopped
ports:
- 3306:3306
command: --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci --explicit_defaults_for_timestamp=true --lower_case_table_names=1 --max_allowed_packet=128M
environment:
- "TZ=Asia/Shanghai"
- "MYSQL_ROOT_PASSWORD=WC85roj5IfwOhIEK"
- "MYSQL_DATABASE=nacos"
- "MYSQL_USER=nacos"
- "MYSQL_PASSWORD=3VHHbpPQa6b1o0i5"
volumes:
- "./mysql/data:/var/lib/mysql"
- "./mysql/init:/docker-entrypoint-initdb.d"
nacos-1:
hostname: nacos-1
image: nacos/nacos-server:latest
ports:
- "7848:7848"
- "8848:8848"
- "9848:9848"
- "9849:9849"
volumes:
# - /etc/localtime:/etc/localtime:ro
- ./logs/nacos1:/home/nacos/logs
#- ./conf:/home/nacos/conf
environment:
- MODE=cluster
- "NACOS_SERVERS=nacos-1:8848 nacos-2:8848 nacos-3:8848"
- JVM_XMS=256m
- JVM_XMX=512m
- PREFER_HOST_MODE=hostname
- SPRING_DATASOURCE_PLATFORM=mysql
- MYSQL_SERVICE_HOST=mysql-nacos
- MYSQL_SERVICE_PORT=3306
- MYSQL_SERVICE_USER=nacos
- MYSQL_SERVICE_PASSWORD=3VHHbpPQa6b1o0i5
- MYSQL_SERVICE_DB_NAME=nacos
- MYSQL_SERVICE_DB_PARAM=characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false&allowPublicKeyRetrieval=true
- NACOS_AUTH_IDENTITY_KEY=test
- NACOS_AUTH_IDENTITY_VALUE=Tr+mspxuzWBLC80StngpwUr6e13KwpBkMq4v6ab+Cu8=
- NACOS_AUTH_TOKEN=SecretKey012345678901234567890123456789012345678901234567890123456789
depends_on:
- mysql-nacos
restart: always
nacos-2:
hostname: nacos-2
image: nacos/nacos-server:latest
ports:
- "7858:7848"
- "8858:8848"
- "9858:9848"
- "9859:9849"
volumes:
# - /etc/localtime:/etc/localtime:ro
- ./logs/nacos2:/home/nacos/logs
#- ./conf:/home/nacos/conf
environment:
- MODE=cluster
- "NACOS_SERVERS=nacos-1:8848 nacos-2:8848 nacos-3:8848"
- JVM_XMS=256m
- JVM_XMX=512m
- PREFER_HOST_MODE=hostname
- SPRING_DATASOURCE_PLATFORM=mysql
- MYSQL_SERVICE_HOST=mysql-nacos
- MYSQL_SERVICE_PORT=3306
- MYSQL_SERVICE_USER=nacos
- MYSQL_SERVICE_PASSWORD=3VHHbpPQa6b1o0i5
- MYSQL_SERVICE_DB_NAME=nacos
- MYSQL_SERVICE_DB_PARAM=characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false&allowPublicKeyRetrieval=true
- NACOS_AUTH_IDENTITY_KEY=test
- NACOS_AUTH_IDENTITY_VALUE=Tr+mspxuzWBLC80StngpwUr6e13KwpBkMq4v6ab+Cu8=
- NACOS_AUTH_TOKEN=SecretKey012345678901234567890123456789012345678901234567890123456789
depends_on:
- mysql-nacos
restart: always
nacos-3:
hostname: nacos-3
image: nacos/nacos-server:latest
ports:
- "7868:7848"
- "8868:8848"
- "9868:9848"
- "9869:9849"
volumes:
# - /etc/localtime:/etc/localtime:ro
- ./logs/nacos3:/home/nacos/logs
#- ./conf:/home/nacos/conf
environment:
- MODE=cluster
- "NACOS_SERVERS=nacos-1:8848 nacos-2:8848 nacos-3:8848"
- JVM_XMS=256m
- JVM_XMX=512m
- PREFER_HOST_MODE=hostname
- SPRING_DATASOURCE_PLATFORM=mysql
- MYSQL_SERVICE_HOST=mysql-nacos
- MYSQL_SERVICE_PORT=3306
- MYSQL_SERVICE_USER=nacos
- MYSQL_SERVICE_PASSWORD=3VHHbpPQa6b1o0i5
- MYSQL_SERVICE_DB_NAME=nacos
- MYSQL_SERVICE_DB_PARAM=characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false&allowPublicKeyRetrieval=true
- NACOS_AUTH_IDENTITY_KEY=test
- NACOS_AUTH_IDENTITY_VALUE=Tr+mspxuzWBLC80StngpwUr6e13KwpBkMq4v6ab+Cu8=
- NACOS_AUTH_TOKEN=SecretKey012345678901234567890123456789012345678901234567890123456789
depends_on:
- mysql-nacos
restart: always
networks:
default:
name: nacos
external: true
启动并导入所需初始化数据
docker compose up -d
mysql -unacos -p3VHHbpPQa6b1o0i5 nacos < mysql-schema.sql
测试阶段
访问任何一个节点地址即可,访问http://127.0.0.1:8848/nacos,在群集管理里面可以查看节点信息(如下图所示)

我们创建一个配置测试一下


创建成功之后我们去mysql查看数据
SELECT data_id,group_id,content,gmt_create,gmt_modified,c_desc,type FROM config_info;
可以发现数据已经写进mysql(如下图所示)

我们换成nacos-2节点也就是本地的8858端口访问,发现也有显示创建的配置(如下图所示)

这里说明我们部署Nacos群集成功!!!