詳解Docker中的nacos集群部署方式
前言
Nacos 是一個(gè)開(kāi)源的注冊(cè)中心和配置中心,用于實(shí)現(xiàn)微服務(wù)架構(gòu)中的服務(wù)發(fā)現(xiàn)、服務(wù)治理和動(dòng)態(tài)配置管理。在 Docker 中使用 Nacos,你可以通過(guò)拉取官方提供的 Docker 鏡像并運(yùn)行容器的方式來(lái)快速部署
一.Nacos鏡像拉取及獨(dú)立模式
鏡像拉取命令詳解:
當(dāng)前命令為創(chuàng)建Nacos容器(沒(méi)有Nacos鏡像會(huì)自動(dòng)拉取Nacos鏡像)
docker run
: 運(yùn)行一個(gè) Docker 容器的命令。
-itd
: 這是參數(shù)的一部分,其中:
-i
: 保持標(biāo)準(zhǔn)輸入(stdin)打開(kāi)。
-t
: 為容器分配一個(gè)偽終端(pseudo-TTY)。
-d
: 在后臺(tái)運(yùn)行容器,并返回容器 ID。
-e PREFER_HOST_MODE=ip
: 設(shè)置環(huán)境變量PREFER_HOST_MODE
的值為ip
,表示使用 IP 模式。
-e MODE=standalone
: 設(shè)置環(huán)境變量MODE
的值為standalone
,表示以獨(dú)立模式運(yùn)行 Nacos。
-e SPRING_DATASOURCE_PLATFORM=mysql
: 設(shè)置環(huán)境變量SPRING_DATASOURCE_PLATFORM
的值為mysql
,指定 Nacos 使用 MySQL 數(shù)據(jù)庫(kù)作為存儲(chǔ)后端。
-e MYSQL_SERVICE_HOST=172.17.0.2
: 設(shè)置環(huán)境變量MYSQL_SERVICE_HOST
的值為 MySQL 服務(wù)的主機(jī) IP 地址。
-e MYSQL_SERVICE_PORT=3306
: 設(shè)置環(huán)境變量MYSQL_SERVICE_PORT
的值為 MySQL 服務(wù)的端口號(hào)。
-e MYSQL_SERVICE_DB_NAME=nacos
: 設(shè)置環(huán)境變量MYSQL_SERVICE_DB_NAME
的值為 MySQL 數(shù)據(jù)庫(kù)的名稱,這里為nacos
。
-e MYSQL_SERVICE_USER=root
: 設(shè)置環(huán)境變量MYSQL_SERVICE_USER
的值為 MySQL 連接的用戶名,這里為root
。
-e MYSQL_SERVICE_PASSWORD=123456
: 設(shè)置環(huán)境變量MYSQL_SERVICE_PASSWORD
的值為 MySQL 連接的密碼,這里為123456
。
-p 8848:8848
: 將容器內(nèi)部的 8848 端口映射到主機(jī)的 8848 端口,允許通過(guò)主機(jī)訪問(wèn) Nacos。
--name nacos
: 為容器指定一個(gè)名稱,這里為nacos
。
--restart=always
: 設(shè)置容器總是在停止時(shí)自動(dòng)重啟。
nacos/nacos-server
: 指定要運(yùn)行的 Docker 鏡像,這里是 Nacos 官方提供的nacos-server
鏡像。這個(gè)命令的目的是在 Docker 中啟動(dòng)一個(gè) Nacos 服務(wù),配置使用 MySQL 數(shù)據(jù)庫(kù)作為后端存儲(chǔ),并且在容器內(nèi)部的 8848 端口上提供服務(wù)
docker run -itd \ -e PREFER_HOST_MODE=ip \ -e MODE=standalone \ -e SPRING_DATASOURCE_PLATFORM=mysql \ -e MYSQL_SERVICE_HOST=172.17.0.2 \ -e MYSQL_SERVICE_PORT=3306 \ -e MYSQL_SERVICE_DB_NAME=nacos \ -e MYSQL_SERVICE_USER=root \ -e MYSQL_SERVICE_PASSWORD=123456 \ -p 8848:8848 \ --name nacos \ --restart=always \ nacos/nacos-server
拉取鏡像后我們需要開(kāi)放8848端口,并刷新防火墻規(guī)則
開(kāi)放端口
firewall-cmd --zone=public --add-port=8080/tcp --permanent
刷新防火墻規(guī)則
firewall-cmd --reload
同時(shí)我們可以通過(guò)查看防火墻開(kāi)放端口列表是否開(kāi)啟
查看防火墻開(kāi)放端口列表
firewall-cmd --zone=public --list-ports
當(dāng)我們進(jìn)入到nacos內(nèi)網(wǎng)控制臺(tái)說(shuō)明NACOS創(chuàng)建成功了
二.Nacos集群部署
對(duì)比上面我們使用的是獨(dú)立模式(standalone
),當(dāng)我們需要將獨(dú)立模式改成集群模式時(shí),要將環(huán)境遍歷MODE設(shè)置為cluster
1.搭建集群
docker network create --subnet=172.20.0.1/16 my_net
為原有Mysql容器再連接一個(gè)網(wǎng)絡(luò)
my_net為自定義網(wǎng)絡(luò)名 m1為容器名
docker network connect my_net m1
當(dāng)我們?yōu)閙1連接上網(wǎng)絡(luò)后,它不僅擁有原有的網(wǎng)段還有剛剛連接的網(wǎng)段
創(chuàng)建集群部署容器
docker run -itd \ -e PREFER_HOST_MODE=ip \ -e MODE=cluster\ -e NACOS_SERVERS="172.20.0.102:8848 172.20.0.103:8848" \ -e SPRING_DATASOURCE_PLATFORM=mysql \ -e MYSQL_SERVICE_HOST=m1 \ -e MYSQL_SERVICE_PORT=3306 \ -e MYSQL_SERVICE_DB_NAME=nacos \ -e MYSQL_SERVICE_USER=root \ -e MYSQL_SERVICE_PASSWORD=123456 \ -p 8848:8848 \ --name nacos2 \ --net my_net \ --ip 172.20.0.101 \ --restart=always \ nacos/nacos-server
為測(cè)試完成集群部署,我們只需要將容器名--name 容器名和網(wǎng)段ip進(jìn)行修改,分別創(chuàng)建三臺(tái)nacos
雖然我們的三臺(tái)nacos搭建完成了,但是我們只有一個(gè)或者兩個(gè)容器能運(yùn)行,所以要完成多臺(tái)同時(shí)運(yùn)行,還是要借助nginx實(shí)現(xiàn)負(fù)載均衡
2.Nginx實(shí)現(xiàn)負(fù)載均衡
在我們的工作目錄中創(chuàng)建Niginx目錄及所需文件夾
mkdir -p nginx/{conf.d} cd /nginx/conf.d
新建default.conf 配置文件放在conf.d目錄中
upstream nacosList { server nacos1:8848 weight=1; server nacos2:8848 weight=1; server nacos3:8848 weight=1; } server { listen 80; server_name www.ChatYULin.com; location / { root /etc/nginx/html/; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } location /nacos { proxy_pass http://nacosList; } location /nacos { rewrite ^/api/(.*)$ /$1 break; proxy_pass http://tomcatList; proxy_redirect default; } }
創(chuàng)建nginx容器
docker run -itd \ --name nginx \ -v /soft/nginx/conf.d:/etc/nginx/conf.d \ -p 80:80 \ --net my_net \ nginx
進(jìn)入到我們本機(jī)的C:\Windows\System32\drivers\etc目錄下
找到Host打開(kāi)進(jìn)行修改你要映射的域名
輸入你的虛擬機(jī)IP以及域名
當(dāng)我們創(chuàng)建并運(yùn)行完nginx容器后利用可以使用自定義域名訪問(wèn)到說(shuō)明我們的域名映射和nginx容器已完成
我們登錄到nacos中,看到三臺(tái)容器同時(shí)運(yùn)行時(shí)就說(shuō)明完成負(fù)載均衡了
報(bào)錯(cuò)解決
這個(gè)報(bào)錯(cuò)解釋為數(shù)據(jù)源配置出錯(cuò),也就是我們?cè)谂渲脭?shù)據(jù)庫(kù)時(shí)要與Nacos配置對(duì)應(yīng),多半存在與網(wǎng)段問(wèn)題,我們可以通過(guò)命令查看nacos/mysql容器網(wǎng)段是否一致
docker inspect 容器名
Nacos網(wǎng)段必須要與Mysql網(wǎng)段一致
在我配置MySQL容器時(shí)因?yàn)闆](méi)有去指定網(wǎng)段而是默認(rèn)使用網(wǎng)橋模式,而我的Nacos容器指定網(wǎng)段為172.17.0.2,但是在這之前我還有一個(gè)容器占用了當(dāng)前網(wǎng)段,所以我使用配置Nacos的網(wǎng)段為172.17.0.3配置信息不一致,導(dǎo)致我的Nacos配置的數(shù)據(jù)源一直是之前的MySQL容器所以一直報(bào)錯(cuò)
解決措施
解決思路:兩者要在同一個(gè)網(wǎng)段
1.自定義網(wǎng)絡(luò)為MySQL容器指定網(wǎng)段
2.為Nacos容器指定網(wǎng)段
3.像nacos集群一樣創(chuàng)建自定義網(wǎng)絡(luò)然后連接MySQL容器
到此這篇關(guān)于詳解Docker中的nacos集群部署的文章就介紹到這了,更多相關(guān)Docker nacos集群部署內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
教你使用Docker搭建gitlab社區(qū)漢化版的詳細(xì)過(guò)程
很多朋友不太清楚使用Docker搭建gitlab社區(qū)漢化版的過(guò)程,總是容易出現(xiàn)錯(cuò)誤,今天小編抽空給大家分享使用Docker搭建gitlab社區(qū)漢化版的詳細(xì)過(guò)程,一起看看吧2021-09-09Docker 部署開(kāi)源遠(yuǎn)程桌面工具RustDesk的使用
本文介紹了RustDesk開(kāi)源遠(yuǎn)程桌面工具的Docker部署使用方法,支持自建服務(wù)器,可實(shí)現(xiàn)安全私密的遠(yuǎn)程控制電腦,具有一定的參考價(jià)值,感興趣的可以了解一下2024-10-10docker: invalid reference format.問(wèn)題
這篇文章主要介紹了docker: invalid reference format.問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01docker啟動(dòng)mysql并映射數(shù)據(jù)目錄(含備份腳本)
本文主要介紹了docker啟動(dòng)mysql并映射數(shù)據(jù)目錄(含備份腳本),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-01-01Docker安裝oracle數(shù)據(jù)庫(kù)最新版教程
這篇文章主要介紹了如何在Docker中安裝和配置Oracle?11g數(shù)據(jù)庫(kù),包括安裝Docker、拉取Oracle鏡像、創(chuàng)建容器、進(jìn)入容器配置、設(shè)置環(huán)境變量、創(chuàng)建軟連接、修改用戶密碼、重啟數(shù)據(jù)庫(kù)以及使用Navicat進(jìn)行連接測(cè)試,需要的朋友可以參考下2025-02-02基于alpine用dockerfile創(chuàng)建的tomcat鏡像的實(shí)現(xiàn)
這篇文章主要介紹了基于alpine用dockerfile創(chuàng)建的tomcat鏡像的實(shí)現(xiàn),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-12-12