nacos官网: Redirecting to: https://nacos.io/
-
服务发现和服务健康监测
Nacos 支持基于 DNS 和基于 RPC 的服务发现。服务提供者使用 原生SDK、OpenAPI、或一个独立的Agent TODO注册 Service 后,服务消费者可以使用DNS TODO 或HTTP&API查找和发现服务。
Nacos 提供对服务的实时的健康检查,阻止向不健康的主机或服务实例发送请求。Nacos 支持传输层 (PING 或 TCP)和应用层 (如 HTTP、MySQL、用户自定义)的健康检查。 对于复杂的云环境和网络拓扑环境中(如 VPC、边缘网络等)服务的健康检查,Nacos 提供了 agent 上报模式和服务端主动检测2种健康检查模式。Nacos 还提供了统一的健康检查仪表盘,帮助您根据健康状态管理服务的可用性及流量。
-
动态配置服务
动态配置服务可以让您以中心化、外部化和动态化的方式管理所有环境的应用配置和服务配置。
动态配置消除了配置变更时重新部署应用和服务的需要,让配置管理变得更加高效和敏捷。
配置中心化管理让实现无状态服务变得更简单,让服务按需弹性扩展变得更容易。
Nacos 提供了一个简洁易用的UI (控制台样例 Demo) 帮助您管理所有的服务和应用的配置。Nacos 还提供包括配置版本跟踪、金丝雀发布、一键回滚配置以及客户端配置更新状态跟踪在内的一系列开箱即用的配置管理特性,帮助您更安全地在生产环境中管理配置变更和降低配置变更带来的风险。
-
动态 DNS 服务
动态 DNS 服务支持权重路由,让您更容易地实现中间层负载均衡、更灵活的路由策略、流量控制以及数据中心内网的简单DNS解析服务。动态DNS服务还能让您更容易地实现以 DNS 协议为基础的服务发现,以帮助您消除耦合到厂商私有服务发现 API 上的风险。
Nacos 提供了一些简单的 DNS APIs TODO 帮助您管理服务的关联域名和可用的 IP:PORT 列表.
-
服务及其元数据管理
Nacos 能让您从微服务平台建设的视角管理数据中心的所有服务及元数据,包括管理服务的描述、生命周期、服务的静态依赖分析、服务的健康状态、服务的流量管理、路由及安全策略、服务的 SLA 以及最首要的 metrics 统计数据。
-
下载(github)
-
nacos-server1.4.2.zip( windows部署版)
-
nacos1.4.2.zip (windows源码)
-
nacos-windows单机版
-
将nacos-server1.4.2.zip解压
-
在nacos/bin运行cmd
-
执行startup.cmd -m standalone
-
standalone单机版
-
cluster集群版
-
说明:可以直接修改startup.cmd文件中
set MODE="cluster"
-
#nacos启动方式为:standalone "nacos is starting with standalone" #nacos监听端口8848,web应用根是/nacos 2023-02-27 08:58:27,174 INFO Tomcat started on port(s): 8848 (http) with context path '/nacos' #embedded storage:内置数据库 2023-02-27 08:58:27,178 INFO Nacos started successfully in stand alone mode. use embedded storage
-
测试
http://localhost:8848/nacos
用户名和密码都是:nacos
nacos-docker单机版
https://hub.docker.com/
-
运行容器
docker run --name n1 -e MODE=standalone -p 8848:8848 -d nacos/nacos-server:1.4.2
-
测试
http://192.168.206.130:8848/nacos
nacos-docker-mysql单机版
-
安装mysql
docker run -d --name zking-mysql --network net-ry \ -v /data/mysql/conf/my.cnf:/etc/my.cnf \ -v /data/mysql/data:/var/lib/mysql \ --privileged=true --restart=always \ -e MYSQL_ROOT_PASSWORD=sasa -p 3306:3306 \ mysql/mysql-server:5.7
参考上节内容,需要net-ry网络
-
mysql充许远程连接
# 进入容器 docker exec -it zking-mysql /bin/bash # 登录 mysql -u root -p; # 添加用户并授权 grant all privileges on *.* to root@'%' identified by 'sasa' with grant option; # 刷新权限 flush privileges;
-
创建数据库nacos-config
create database nacos_config;
-
执行nacos源码中nacos-1.4.2\distribution\conf中的nacos-mysql脚本
-
运行nacos容器
docker run -d \-e MODE=standalone \-e SPRING_DATASOURCE_PLATFORM=mysql \-e MYSQL_SERVICE_HOST=zking-mysql \-e MYSQL_SERVICE_PORT=3306 \-e MYSQL_SERVICE_USER=root \-e MYSQL_SERVICE_PASSWORD=sasa \-e MYSQL_SERVICE_DB_NAME=nacos_config \-e MYSQL_DATABASE_NUM=1 \-e NACOS_APPLICATION_PORT=8848 \--restart=always \--network net-ry \--name n2 \-p 8849:8848 \nacos/nacos-server:1.4.2
mysql与nacos在一网络中net-ry中
nacos-docker-mysql集群版
为2与3
准备
环境准备
-
虚拟机内存为2G或更高
-
进入虚拟机之后,使用free查看内存使用情况
-
-
虚拟机处理器
mysql安装
-
下载镜像
docker pull mysql/mysql-server:5.7
不同镜像配置环境可能不同
-
在宿主机中相关目录,用于挂载容器的相关数据
mkdir -p /data/mysql/{conf,data}
-
编写my.cnf配置文件,在/data/mysql/conf目录中 (课件中有该文件,直接上传即可)
[client] default-character-set=utf8[mysql] default-character-set=utf8[mysqld] ##官方的配置 # # Remove leading # and set to the amount of RAM for the most important data # cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%. # innodb_buffer_pool_size = 128M # # Remove leading # to turn on a very important data integrity option: logging # changes to the binary log between backups. # log_bin # # Remove leading # to set options mainly useful for reporting servers. # The server defaults are faster for transactions and fast SELECTs. # Adjust sizes as needed, experiment to find the optimal values. # join_buffer_size = 128M # sort_buffer_size = 2M # read_rnd_buffer_size = 2M skip-host-cache skip-name-resolve datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock secure-file-priv=/var/lib/mysql-files user=mysql# Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid##下面为添加的自定义配置 init_connect='SET collation_connection = utf8_unicode_ci' init_connect='SET NAMES utf8' character-set-server=utf8 collation-server=utf8_unicode_ci skip-character-set-client-handshake # default: sql_mode= STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION # modeified: sql_mode= STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION max_allowed_packet=10M default-time_zone='+8:00' default_authentication_plugin=mysql_native_password
-
创建并启动mysql容器
#格式一 docker run -p 3306:3306 --name zking-mysql -d mysql/mysql-server:5.7 docker logs zking-mysql #格式二 docker run -p 3306:3306 --name zking-mysql -e MYSQL_ROOT_PASSWORD=sasa -d mysql/mysql-server:5.7
了解mysql目录结构
docker run -p 3306:3306 \ --name zking-mysql \ -v /data/mysql/conf/my.cnf:/etc/my.cnf \ -v /data/mysql/data:/var/lib/mysql \ --net=net-test \ --privileged=true \ --restart=always \ -e MYSQL_ROOT_PASSWORD=sasa \ -d mysql/mysql-server:5.7
参数说明: -p 3306:3306:宿主机端口:容器端口
--name mysql:容器名字
-v:挂载宿主机的一个目录, 持久化存储的关键所在,将主机目录挂载到容器对应目录,分别是:配置文件、日志文件、数据文件
-v /data/mysql/conf:/etc/mysql/conf.d -v /data/mysql/logs:/logs -v /data/mysql/data:/var/lib/mysql
--privileged=true:使用该参数,container内的root拥有真正的root权限, 否则,container内的root只是外部的一个普通用户权限
--restart=always:容器自动启动参数,其值可以为[no,on-failure,always] no为默认值,表示容器退出时,docker不自动重启容器 on-failure表示,若容器的退出状态非0,则docker自动重启容器,还可以指定重启次数,若超过指定次数未能启动容器则放弃 always表示,只要容器退出,则docker将自动重启容器
-e MYSQL_ROOT_PASSWORD=sasa:设置root的密码 -d mysql/mysql-server:5.7:后台启动模式及使用的镜像
-
修改mysql允许Navicat远程连接
# 进入容器 docker exec -it zking-mysql /bin/bash # 登录 mysql -u root -p; # 授权 grant all privileges on *.* to root@'%' identified by 'sasa'; # 刷新权限 flush privileges;
创建nacos需要的数据库
-
将3306端口加入防火墙,使用mysql客户端链接数据库
-
创建数据库
CREATE DATABASE IF NOT EXISTS nacos_config DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
-
导入nacos数据(nacos安装目录下 conf目录中有脚本nacos-mysql.sql)
下载nacos镜像
docker pull nacos/nacos-server:1.4.2
创建自定义网络
docker network create mynet --subnet=192.168.0.0/16
获取nginx镜像
docker pull nginx
nacos集群部署
在真实环境下,为了便于主节点选举,通常集群机器通常为奇数台。
将mysql连接到mynet网络
docker network connect mynet zking-mysql --ip 192.168.0.11
此时可以查看mynet网络的具体配置:
docker network inspect mynet
注: 如果mysql容器还没有创建,也可以创建mysql容器时指定网络配置,(上面已经将mysql连接到mynet,所以不用执行此步):
docker run \--name zking-mysql \--net mynet \--ip 192.168.0.11 \-v /data/mysql/conf/my.cnf:/etc/my.cnf \-v /data/mysql/data:/var/lib/mysql \--privileged=true \--restart=always \-e MYSQL_ROOT_PASSWORD=sasa \-d mysql/mysql-server:5.7
nacos集群
-
启动第一个节点nacos节点
docker run -d \--net net-test \--name nacos01 \--hostname nacos01 \-e PREFER_HOST_MODE=hostname \-e MODE=cluster \-e NACOS_SERVERS="nacos01:8848 nacos02:8848 nacos03:8848" \-e SPRING_DATASOURCE_PLATFORM=mysql \-e MYSQL_SERVICE_HOST=zking-mysql \-e MYSQL_SERVICE_PORT=3306 \-e MYSQL_SERVICE_USER=root \-e MYSQL_SERVICE_PASSWORD=sasa \-e MYSQL_SERVICE_DB_NAME=nacos_config \-e MYSQL_DATABASE_NUM=1 \-e NACOS_APPLICATION_PORT=8848 \--restart=always \nacos/nacos-server:1.4.2
配置参考:
name | description | option |
---|---|---|
MODE | cluster模式/standalone模式 | cluster/standalone default cluster |
NACOS_SERVERS | nacos cluster地址 | eg. ip1,ip2,ip3 |
PREFER_HOST_MODE | 是否支持hostname | hostname/ip default ip |
NACOS_SERVER_PORT | nacos服务器端口 | default 8848 |
NACOS_SERVER_IP | 多网卡下的自定义nacos服务器IP | |
SPRING_DATASOURCE_PLATFORM | standalone 支持 mysql | mysql / empty default empty |
MYSQL_MASTER_SERVICE_HOST | mysql 主节点host | |
MYSQL_MASTER_SERVICE_PORT | mysql 主节点端口 | default : 3306 |
MYSQL_MASTER_SERVICE_DB_NAME | mysql 主节点数据库 | |
MYSQL_MASTER_SERVICE_USER | 数据库用户名 | |
MYSQL_MASTER_SERVICE_PASSWORD | 数据库密码 | |
MYSQL_SLAVE_SERVICE_HOST | mysql从节点host | |
MYSQL_SLAVE_SERVICE_PORT | mysql从节点端口 | default :3306 |
MYSQL_DATABASE_NUM | 数据库数量 | default :2 |
JVM_XMS | -Xms | default :2g |
JVM_XMX | -Xmx | default :2g |
JVM_XMN | -Xmn | default :1g |
JVM_MS | -XX:MetaspaceSize | default :128m |
JVM_MMS | -XX:MaxMetaspaceSize | default :320m |
NACOS_DEBUG | 开启远程调试 | y/n default :n |
TOMCAT_ACCESSLOG_ENABLED | server.tomcat.accesslog.enabled | default :false |
-
启动第二个第三个 nacos节点
docker run -d \--net net-test \--name nacos02 \--hostname nacos02 \-e PREFER_HOST_MODE=hostname \-e MODE=cluster \-e NACOS_SERVERS="nacos01:8848 nacos02:8848 nacos03:8848" \-e SPRING_DATASOURCE_PLATFORM=mysql \-e MYSQL_SERVICE_HOST=zking-mysql \-e MYSQL_SERVICE_PORT=3306 \-e MYSQL_SERVICE_USER=root \-e MYSQL_SERVICE_PASSWORD=sasa \-e MYSQL_SERVICE_DB_NAME=nacos_config \-e MYSQL_DATABASE_NUM=1 \-e NACOS_APPLICATION_PORT=8848 \--restart=always \nacos/nacos-server:1.4.2
docker run -d \--net net-test \--name nacos03 \--hostname nacos03 \-e PREFER_HOST_MODE=hostname \-e MODE=cluster \-e NACOS_SERVERS="nacos01:8848 nacos02:8848 nacos03:8848" \-e SPRING_DATASOURCE_PLATFORM=mysql \-e MYSQL_SERVICE_HOST=zking-mysql \-e MYSQL_SERVICE_PORT=3306 \-e MYSQL_SERVICE_USER=root \-e MYSQL_SERVICE_PASSWORD=sasa \-e MYSQL_SERVICE_DB_NAME=nacos_config \-e MYSQL_DATABASE_NUM=1 \-e NACOS_APPLICATION_PORT=8848 \--restart=always \nacos/nacos-server:1.4.2
查看nacos启动信息
docker exec -it nacos01 cat /home/nacos/logs/nacos.log
使用nginx访问集群
-
创建宿主机挂载目录
[root@localhost data]# mkdir -p /data/nginx/{conf,log,html}
-
上传nginx.conf配置文件(在课件中已准备,上传到/data/nginx/conf目录即可)
配置文件内容如下:
worker_processes 1; events {worker_connections 1024; } http {include mime.types;default_type application/octet-stream;sendfile on; keepalive_timeout 65;gzip on;upstream nacos-cluster {server nacos01:8848 weight=1;server nacos02:8848 weight=1;server nacos03:8848 weight=1;} server {listen 80;#监听80端口,可以改成其他端口server_name localhost;#当前服务的域名 #新增2:用于重定向至nacos集群location /nacos {proxy_pass http://nacos-cluster;} location / {root /usr/share/nginx/html;#将要访问的网站的目录try_files $uri $uri/ /index.html;#该句代码是为解决history路由不能跳转的问题,在vue-router官网有介绍} #location ^~/api/ {#^~/api/表示匹配前缀是api的请求,proxy_pass的结尾有/, 则会把/api/*后面的路径直接拼接到后面,即移除api#proxy_pass http://tomcats/;#}} }
-
启动nginx容器:
docker run \--name mynginx \--net mynet \-d -p 80:80 \-v /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \-v /data/nginx/html:/usr/share/nginx/html \--privileged=true \nginx:latest
-
将mynginx同时连接到bridge网络,用于与宿主机通讯
[root@localhost ~]# docker network connect bridge mynginx
-
访问控制台确认部署:
http://192.168.19.10/nacos部署微服务测试
将微服务注册地址改为虚拟机主机地址