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.pswp.cn/web/95275.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/95275.shtml
英文地址,請注明出處:http://en.pswp.cn/web/95275.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

DevOps 詳解:文化、實踐與工具鏈

目錄一、DevOps 定義與核心目標二、DevOps 關鍵原則與實踐1. 持續集成(CI,Continuous Integration)2. 持續交付(CD,Continuous Delivery)3. 持續部署(Continuous Deployment)4. 監控…

人工智能之數學基礎:常用的連續型隨機變量的分布

本文重點 本文將介紹概率中非常重要的連續型隨機變量的分布,主要有均勻分布、指數分布、正態分布 均勻分布 若隨機變量X的概率密度為: 如果概率密度函數如上所示,則稱X服從區間[ a, b]上的均勻分布,記作X~U[a,b] 均勻分布的概率密度函數的計算如下: 指數分布 指數分布…

【開題答辯全過程】以 校園幫幫團跑腿系統的設計與實現為例,包含答辯的問題和答案

個人簡介一名14年經驗的資深畢設內行人,語言擅長Java、php、微信小程序、Python、Golang、安卓Android等開發項目包括大數據、深度學習、網站、小程序、安卓、算法。平常會做一些項目定制化開發、代碼講解、答辯教學、文檔編寫、也懂一些降重方面的技巧。感謝大家的…

Milvus 向量數據庫開發實戰指南

Milvus向量數據庫是什么?-CSDN博客 一、核心概念解析 1.1 基礎概念 1.1.1 Bitset(位集) 高效的數據表示方式,使用位數組替代傳統數據類型 默認情況下,位值根據特定條件設置為 0 或 1 1.1.2 通道機制 PChannel&am…

vcruntime140.dll丟失解決辦法

解決辦法 安裝Microsoft Visual C Redistributable https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist?viewmsvc-170

LabVIEW實現跨 VI 簇按鈕控制功能

?在 LabVIEW 開發場景中,常需實現不同 VI 間的交互操作。本功能借助 VI Server 技術,突破 VI 邊界,實現對目標 VI 中簇內按鈕控件的屬性讀取與控制,為多 VI 協同、對VI里已經實現的功能,可以在其他VI中直接使用&#…

JS箭頭函數

JavaScript 的箭頭函數 (Arrow Function) 是 ES6 (ECMAScript 2015) 引入的一種重要的函數語法特性,它用更簡潔的方式定義函數,并改變了 this 的綁定行為。 箭頭函數和傳統函數的主要區別:特性箭頭函數傳統函數語法更簡潔,省略 fu…

linux內核 - 文件系統相關的幾個概念介紹

介紹文件系統之前,先了解下存儲管理的幾個概念:1. 硬盤:是最底層的存儲介質,比如 /dev/sda, /dev/nvme0n1. 一個物理硬盤就是一個塊設備,未經處理是只能順序讀寫二進制數據。 2. 分區:就是在硬盤上劃分出不…

邊緣計算(Edge Computing)+ AI:未來智能世界的核心引擎

邊緣計算(Edge Computing) AI:未來智能世界的核心引擎 文章目錄邊緣計算(Edge Computing) AI:未來智能世界的核心引擎摘要什么是邊緣計算?為什么需要邊緣計算?1. 延遲問題2. 帶寬壓力…

計算機視覺與深度學習 | ORB-SLAM3算法原理與Matlab復現指南

文章目錄 一、算法核心原理 1.1 系統架構概述 1.2 數學模型基礎 1.2.1 狀態估計框架 1.2.2 視覺-慣導融合模型 1.3 關鍵創新點 二、關鍵模塊實現細節 2.1 ORB特征提取與匹配 2.2 地圖初始化 2.3 視覺-慣導融合 2.4 回環檢測與優化 三、Matlab復現思路 3.1 系統模塊劃分 3.2 核心…

分布式光伏模式怎么選?從 “憑經驗” 到 “靠數據”,iSolarBP 幫你鎖定最優解

iSolarBP-陽光新能源旗下分布式光伏光儲智能評估設計軟件 iSolarBP是陽光新能源打造的分布式光伏/光儲項目智能設計平臺。提供無人機自動勘測、3D建模、高精度發電仿真、光儲容量優化與經濟分析一站式服務,助力開發者提升效率、降低成本和優化投資收益。https://iso…

MATLAB R2010b系統環境(四)MATLAB幫助系統

一、幫助命令MATLAB幫助命令包括help、lookfor以及模糊查詢。1.1 help命令在命令窗口中直接輸入help或help加函數名。(1)help:顯示當前幫助系統中所包含的所有項目,即搜索路徑中所有的目錄名稱,如下圖:&…

“便農惠農”智慧社區系統(代碼+數據庫+LW)

摘要 隨著城市化進程加速和信息技術快速發展,傳統社區管理模式已難以滿足現代社區高效管理和居民多元化服務需求。為解決社區管理中的信息孤島問題、提升服務效率并增強居民生活體驗,本文設計并實現了一套基于Spring Boot框架的智慧社區管理系統。該系統…

智慧金融服務平臺問題剖析與改進策略

智慧金融服務平臺問題剖析與改進策略 在數字化浪潮的推動下,智慧金融服務平臺蓬勃發展,為用戶帶來了便捷的金融服務體驗。然而,隨著用戶數量的不斷增加和業務的日益復雜,平臺也暴露出一些問題,其中數據準確性不足、異常…

【Vue2?】Vue2 入門之旅(三):數據與方法

在前兩篇文章中,我們學習了 Vue 的基礎和模板語法。本篇我們將深入 數據與方法,理解 data、methods、computed、watch 的作用和區別。 目錄 datamethodscomputedwatch小結 data Vue 實例中的 data 是數據源,模板會自動響應其中的變化。 &l…

自動化測試時,chrome瀏覽器啟動后閃退的問題

之前運行的好好的,最近再次練習時發現會閃退,然后發現是驅動版本老的問題 (1)下載與之匹配的驅動器版本 Chrome for Testing availability 找到與Chrome版本前3位相同的目錄,下載對應系統的壓縮包 (2&am…

Dynamics 365 XrmToolBox工具之Clone Field Definitions

好久沒有分享XrmToolBox的組件了,今天要分享的是下圖中這個組件在建實體的時候,我們經常會碰到實體間一些字段存在重復,或者都可以直接復制黏貼加一些少量修改就可以生成第二個實體,但如果僅從D365本身來說,要做到復制…

UBUNTU之Onvif開源服務器onvif_srvd:1、編譯

下載源碼 編譯時會下載東西,有可能需要VPN。 https://github.com/KoynovStas/onvif_srvd https://github.com/KoynovStas/onvif_srvd/tags 解壓準備工作 sudo apt install -y flex bison byacc make cmake m4# for support encryption and WS-Security # 在低版…

深度學習跨領域應用探索:從技術落地到行業變革

深度學習不再是實驗室里的 “高精尖技術”,而是滲透到各行各業的 “效率引擎”。它憑借強大的數據擬合與特征提取能力,在計算機視覺、自然語言處理、金融風控等領域打破傳統技術瓶頸,甚至催生出全新的業務模式。本文將深入不同行業場景&#…

計算機網絡:數據庫(sqlite3)

一、常用的數據庫ORACLE&#xff08;大型&#xff09;、Mysal&#xff08;開源常用&#xff09;、SQL server、Access、Sybse、Windows NT二、sqlite3&#xff08;一&#xff09;特性&#xff1a;<1>零配置&#xff0c;無需安裝和配置<2>儲存在單一磁盤文件中的一個…