当前位置: 首页 > news >正文

docker-nacos-v3

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 统计数据。

  1. 下载(github)

    • nacos-server1.4.2.zip( windows部署版)

    • nacos1.4.2.zip (windows源码)

nacos-windows单机版

  1. 将nacos-server1.4.2.zip解压

  2. 在nacos/bin运行cmd

  3. 执行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
  1. 测试

http://localhost:8848/nacos

用户名和密码都是:nacos

nacos-docker单机版

https://hub.docker.com/

  1. 运行容器

docker run --name n1 -e MODE=standalone -p 8848:8848 -d nacos/nacos-server:1.4.2
  1. 测试

http://192.168.206.130:8848/nacos

nacos-docker-mysql单机版

  1. 安装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网络

  1. 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; 
  1. 创建数据库nacos-config

create database nacos_config;
  1. 执行nacos源码中nacos-1.4.2\distribution\conf中的nacos-mysql脚本

  2. 运行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

准备

环境准备

  1. 虚拟机内存为2G或更高

    • 进入虚拟机之后,使用free查看内存使用情况

  2. 虚拟机处理器

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

配置参考:

namedescriptionoption
MODEcluster模式/standalone模式cluster/standalone default cluster
NACOS_SERVERSnacos cluster地址eg. ip1,ip2,ip3
PREFER_HOST_MODE是否支持hostnamehostname/ip default ip
NACOS_SERVER_PORTnacos服务器端口default 8848
NACOS_SERVER_IP多网卡下的自定义nacos服务器IP
SPRING_DATASOURCE_PLATFORMstandalone 支持 mysqlmysql / empty default empty
MYSQL_MASTER_SERVICE_HOSTmysql 主节点host
MYSQL_MASTER_SERVICE_PORTmysql 主节点端口default : 3306
MYSQL_MASTER_SERVICE_DB_NAMEmysql 主节点数据库
MYSQL_MASTER_SERVICE_USER数据库用户名
MYSQL_MASTER_SERVICE_PASSWORD数据库密码
MYSQL_SLAVE_SERVICE_HOSTmysql从节点host
MYSQL_SLAVE_SERVICE_PORTmysql从节点端口default :3306
MYSQL_DATABASE_NUM数据库数量default :2
JVM_XMS-Xmsdefault :2g
JVM_XMX-Xmxdefault :2g
JVM_XMN-Xmndefault :1g
JVM_MS-XX:MetaspaceSizedefault :128m
JVM_MMS-XX:MaxMetaspaceSizedefault :320m
NACOS_DEBUG开启远程调试y/n default :n
TOMCAT_ACCESSLOG_ENABLEDserver.tomcat.accesslog.enableddefault :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部署微服务测试

将微服务注册地址改为虚拟机主机地址

http://www.xdnf.cn/news/1425835.html

相关文章:

  • 在飞牛构建私有化协作环境GodoOS:集成文档、即时通讯、白板与思维导图!
  • 用只能以关键字指定和只能按位置传入的参数来设计清晰的接口(Effective Python 第25条)
  • Web知识的总结
  • Linux并发与竞争实验
  • Linux 下 MySQL 数据库定时备份脚本与 Crontab 配置
  • RK3588部署yolov8目标检测
  • Redis 的 SDS:像橡皮筋笔记本一样好用的字符串
  • 区块链存证中的隐私保护
  • C++ 用于运行时类型识别的typeinfo库使用指南
  • 基于STICS模型的黄土高原苹果园生态
  • 众擎机器人开源代码解读
  • 从物理模拟器和世界模型中学习具身智能
  • 【算法专题训练】17、双向链表
  • 开源项目硬核应用:AntPathMatcher实战
  • 【文件IO和部分标准IO】输入输出缓冲区和报错
  • 信创之-麒麟v10服务器安装tengine(已完成)
  • 005 从会议全貌到模型本质:会议介绍与语言模型概述的深度融合
  • 电源相关零碎知识总结
  • 深度学习——速问速答
  • shell脚本函数介绍
  • http缓存
  • LobeChat知识库,小团队的选择,理解Embedding与向量数据库的关系
  • 解决Content Security Policy (CSP)问题
  • Java类加载机制
  • 软件使用教程(四):Jupyter Notebook 终极使用指南
  • 【iOS】关键字复习
  • javaScript变量命名规则
  • MySQL基础知识保姆级教程(四)视图与约束
  • Chrome 如何清除浏览器缓存
  • 【开题答辩全过程】以 基于SpringBoot的校园一卡通管理系统的设计与实现为例,包含答辩的问题和答案