nacos集群安装
架构部署三个节点的nacos集群用nginx做反向代理和负载均衡并且使用MySQL5.7数据库做存储数据库架构为一主一从同时部署prometheus和grafana监控nacos容器集群nacos 客户端与服务端通信需要开放8848和9848两个端口默认A和A1000端口nacos 服务端集群之间通信需要开放7848 8848 9849三个端口默认AA-1000A1001因此 nacos容器1/2/3都需要开放7848 8848 9848 9849 端口安装前准备下载容器镜像和Nacos SQL文件容器镜像#使用以下版本dockerpull nacos/nacos-server:v2.2.2dockerpull mysql:5.7dockerpull nginxdockerpull prom/prometheusdockerpull grafana/grafana:13.0Nacos SQL文件nacos建表文件最好直接到对应版本的主机部署的二进制包里面拿https://www.nacos.io/download/release-history/下载后打开压缩包取出conf文件夹下的mysql-schema.sql文件注意这个文件只建表不建库库需要自己建命名为nacos_config1.创建MySQL挂载目录主从配置mysql_cluster_init.sh!#/bin/bash#创建mysql挂载目录配置日志数据mkdir-p/opt/mysql/master/{conf,logs,data}mkdir-p/opt/mysql/slave/{conf,logs,data}#创建mysql挂载目录初始化数据库mysql-schema.sql复制到这个文件夹下mkdir-p/opt/mysql/initdb#把mysql-schema.sql放进来cpmysql-schema.sql /opt/mysql/initdb#创建主库配置文件my.confcat/opt/mysql/master/conf/my.cnfEOF [mysqld] server-id1 #开启二进制日志 log-binmysql-bin #开启行复制 binlog_formatROW #超过30天的log删除 expire_logs_days7 #忽略 binlog-ignore-dbmysql # 可选只同步指定库 # binlog-do-dbtest_db character-set-serverutf8mb4 collation-serverutf8mb4_general_ci # 性能相关 innodb_flush_log_at_trx_commit1 sync_binlog1 #禁止 MySQL 对客户端连接进行 DNS 反向解析 skip-name-resolve EOF#创建备库配置文件my.cnfcat/opt/mysql/slave/conf/my.cnfEOF [mysqld] server-id2 relay-logrelay-bin read-only1 # 可选 # replicate-do-dbtest_db character-set-serverutf8mb4 collation-serverutf8mb4_general_ci skip-name-resolve EOF安装前准备准备nginx挂载目录和grafana挂载目录#创建nginx挂载目录mkdir-p/opt/nginx/{conf,logs,html}#把nginx默认初始化文件拷出来dockerrun--namec_nginx-p9001:80-dnginxdockercpc_nginx:/etc/nginx/nginx.conf /opt/nginx/conf/nginx.confdockercpc_nginx:/etc/nginx/conf.d /opt/nginx/conf/conf.ddockercpc_nginx:/usr/share/nginx/html /opt/nginx/htmldockerstop c_nginxdockerrmc_nginx#创建grafana挂载目录mkdir-p/opt/grafana/{data,conf}#把grafana默认初始化文件拷出来dockerrun-d--namec_grafana-p3001:3000 grafana/grafana:13.0#/.表示复制目录里的内容而不是目录本身dockercpc_grafana:/etc/grafana/. /opt/grafana/confdockerstop c_nginxdockerrmc_nginx一、docker-compose文件配置注① 把/opt/mysql/initdb挂载到docker-entrypoint-initdb.d下docker mysql会自动读取里面的初始化sql然后在设置的MYSQL_DATABASE: nacos_config库里执行建表和插入数据② 如果需要监控nacos自带prometheus接口需要手动配置暴露端点在三个nacos节点每个节点都配置environment: -management.endpoints.web.exposure.include*cluster-prometheus.yamlversion:3.8services: nginx:image: nginx container_name: nginx ports: -9001:80-1111:1111-2111:2111volumes: - /opt/nginx/conf/nginx.conf:/etc/nginx/nginx.conf - /opt/nginx/conf/conf.d:/etc/nginx/conf.d - /opt/nginx/logs:/var/log/nginx - /opt/nginx/html:/usr/share/nginx/html depends_on: - nacos1 - nacos2 - nacos3 networks: - nacos-net nacos1: hostname: nacos1 container_name: nacos1 image: nacos/nacos-server:v2.2.2 volumes: - ./cluster-logs/nacos1:/home/nacos/logs ports: -7848:7848-8848:8848-9848:9848-9849:9849env_file: - ./nacos-hostname.env environment: -management.endpoints.web.exposure.include* restart: always networks: - nacos-net depends_on: mysql-master: condition: service_healthy nacos2: hostname: nacos2 image: nacos/nacos-server:v2.2.2 container_name: nacos2 volumes: - ./cluster-logs/nacos2:/home/nacos/logs ports: -7850:7848-8849:8848-9850:9848-9851:9849env_file: - ./nacos-hostname.env environment: -management.endpoints.web.exposure.include* restart: always networks: - nacos-net depends_on: mysql-master: condition: service_healthy nacos3: hostname: nacos3 image: nacos/nacos-server:v2.2.2 container_name: nacos3 volumes: - ./cluster-logs/nacos3:/home/nacos/logs ports: -7860:7848-8850:8848-9860:9848-9861:9849env_file: - ./nacos-hostname.env environment: -management.endpoints.web.exposure.include* restart: always networks: - nacos-net depends_on: mysql-master: condition: service_healthy mysql-master: image: mysql:5.7 container_name: mysql-master environment: MYSQL_ROOT_PASSWORD: root123 MYSQL_USER: repl MYSQL_PASSWORD: repl123 MYSQL_DATABASE: nacos_config volumes: - /opt/mysql/initdb:/docker-entrypoint-initdb.d - /opt/mysql/master/conf:/etc/mysql/conf.d - /opt/mysql/master/logs:/logs - /opt/mysql/master/data:/var/lib/mysql ports: -3306:3306networks: - nacos-net restart: always healthcheck: test:[CMD,mysqladmin,ping,-h,localhost]interval: 5s timeout: 10s retries:10mysql-slave: image: mysql:5.7 container_name: mysql-slave environment: MYSQL_ROOT_PASSWORD: root123 MYSQL_DATABASE: nacos_config volumes: - /opt/mysqltest/slave/conf:/etc/mysql/conf.d - /opt/mysqltest/slave/logs:/logs - /opt/mysqltest/slave/data:/var/lib/mysql ports: -3307:3306networks: - nacos-net restart: always depends_on: - mysql-master prometheus: image: prom/prometheus container_name: prometheus volumes: - /opt/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml ports: -9090:9090networks: - nacos-net depends_on: - nginx grafana: image: grafana/grafana:13.0 container_name: grafana volumes: - /opt/grafana/data:/var/lib/grafana - /opt/grafana/conf:/etc/grafana#需要先把/etc/grafana的默认文件拷出来再挂进去不然会抹掉默认文件ports: -3000:3000networks: - nacos-net depends_on: - prometheus networks: nacos-net: driver: bridge二、env文件配置nacos-hostname.envPREFER_HOST_MODEhostnameNACOS_SERVERSnacos1:8848 nacos2:8848 nacos3:8848SPRING_DATASOURCE_PLATFORMmysql#IP设置为主库的容器名称MYSQL_SERVICE_HOSTmysql-master#数据库名为建库的名称nacos_configMYSQL_SERVICE_DB_NAMEnacos_config#端口采用默认主库端口3306MYSQL_SERVICE_PORT3306#root账户MYSQL_SERVICE_USERroot#root密码MYSQL_SERVICE_PASSWORDroot123MYSQL_SERVICE_DB_PARAMcharacterEncodingutf8connectTimeout1000socketTimeout3000autoReconnecttrueuseSSLfalseallowPublicKeyRetrievaltrueNACOS_AUTH_IDENTITY_KEY2222NACOS_AUTH_IDENTITY_VALUE2xxxNACOS_AUTH_TOKENVGhpc0lzTXlDdXN0b21TZWNyZXRLZXkwMTIzNDU2NzgJVM_XMS256MJVM_XMX256MJVM_XMN128MJVM_MS128MJVM_MMS128M三、修改nginx.conf配置修改覆盖原来的默认nginx配置cat/opt/nginx/conf/nginx.confEOF user nginx; worker_processes auto; error_log /var/log/nginx/error.log notice; pid /var/run/nginx.pid; events { worker_connections 1024; } stream{ upstream nacoscluster{ server nacos1:9848; server nacos2:9848; server nacos3:9848; } server{ #nginx监听端口号1000 listen 2111; proxy_pass nacoscluster; } } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; #gzip on; upstream cluster{ server nacos1:8848; server nacos2:8848; server nacos3:8848; } server { listen 80; server_name localhost; location / { root html; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location /50x.html { root html; } } server { listen 1111; server_name localhost; location / { proxy_pass http://cluster; } } } EOF四、监控配置配置prometheus配置文件prometheus.yml#创建prometheus和grafana目录mkdir-p/opt/prometheusmkdir-p/opt/grafana/{data,conf}#需要更改grafana文件夹权限否则容器运行会报错chown-R472:472 /opt/grafana/datachown-R472:472 /opt/grafana/conf#创建配置文件cat/opt/prometheus/prometheus.ymlEOF global: scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute. evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute. # Alertmanager configuration alerting: alertmanagers: - static_configs: - targets: # - alertmanager:9093 # Load rules once and periodically evaluate them according to the global evaluation_interval. rule_files: # - first_rules.yml # - second_rules.yml #任务配置 scrape_configs: - job_name: prometheus # metrics_path defaults to /metrics # scheme defaults to http. static_configs: - targets: [localhost:9090] labels: app: prometheus #nacos监控新增配置 - job_name: docker-nacos metrics_path: /nacos/actuator/prometheus static_configs: - targets: [nacos1:8848] labels: instance_name: nacos-1 rack: rack-a - targets: [nacos2:8848] labels: instance_name: nacos-2 rack: rack-b - targets: [nacos3:8848] labels: instance_name: nacos-3 rack: rack-c EOF五、启动测试#启动docker-compose-fcluster-prometheus.yaml up-d#检查nacos是否成功启动dockerlogs-fnacos1dockerlogs-fnacos2dockerlogs-fnacos3#返回INFO Nacos started successfully in cluster mode. use external storage 说明成功运行#访问dockerip:1111/nacos如10.12.3.161:1111/nacos#检查主库是否正确启动与初始化dockerexec-itmysql-master mysql-uroot-proot123show databases;use nacos_config;show tables;select* fromusers;#检查从库是否正确启动与初始化dockerexec-itmysql-slave mysql-uroot-proot123show databases;use nacos_config;show tables;select* fromusers;测试监控数据端点是否开启访问{目标机IP}/nacos/actuator/prometheus如 http://10.12.3.161:8848/nacos/actuator/prometheus如果能够访问返回数据说明数据端点成功打开测试prometheus是否正常访问{目标机IP}:9090如10.12.3.161:9090测试grafana访问是否正常访问{目标机IP}:3000如10.12.3.161:3000五、配置grafana仪表盘1.新建数据源datasource新建prometheus数据源 指向10.12.3.161:90902.新建dashboard导入dashboard模板nacos官方有给过几个模板下载json文件导入即可https://github.com/nacos-group/nacos-template/blob/master/nacos-grafana-upper-2.4.jsonhttps://github.com/nacos-group/nacos-template/blob/master/nacos-grafana.json

相关新闻

同样是做Agent开发,不同厂的薪资到底能差出多少?

同样是做Agent开发,不同厂的薪资到底能差出多少?

最近AI Agent彻底成了招聘市场的顶流,岗位开得密、薪资喊得高,但真到投递的时候,十个人里有八个心里没底: 同样是做Agent开发,不同厂的薪资到底能差出多少?应届生找实习能拿多少钱?社招3年是什么…

2026/10/23 17:42:26 阅读更多 →
Python 实战:构建水库大坝安全责任人与汛限水位运行状态监测系统

Python 实战:构建水库大坝安全责任人与汛限水位运行状态监测系统

㊗️本期内容已收录至专栏《Python爬虫实战》,持续完善知识体系与项目实战,建议先订阅收藏,后续查阅更方便~ ㊙️本期爬虫难度指数:⭐⭐⭐⭐⭐(专家级) 🉐福利: 一次订阅…

2026/10/23 23:25:44 阅读更多 →
正餐酒楼收银系统选型实测:从包厢挂账到宴席并单,五家主流方案横评

正餐酒楼收银系统选型实测:从包厢挂账到宴席并单,五家主流方案横评

正餐酒楼是餐饮里最重的业态,收银系统的难点从来不在收款:预订能不能和开台打通、包厢服务跟不跟得上、挂账客户月底怎么对账、婚宴寿宴多桌并单怎么不出错。本文以天财商龙、客如云、二维火、美团收银、收钱吧五家为样本,从预订排位、包厢桌…

2026/10/24 8:02:02 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/10/24 11:09:31 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/10/24 17:47:00 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/10/24 18:34:36 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/10/24 9:46:55 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/10/24 3:09:39 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/10/24 21:09:59 阅读更多 →

日新闻

周新闻

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/24 9:15:56 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/24 11:09:35 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/24 5:28:28 阅读更多 →