ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

nacos集群安装

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
返回列表