Docker安裝Nacos容器并根據(jù)Nginx實(shí)現(xiàn)負(fù)載均衡
前言
安裝之前我們需要準(zhǔn)備一個(gè)mysql,當(dāng)前安裝方式是將數(shù)據(jù)持久化到數(shù)據(jù)庫(kù)中的,這里的部署先是單機(jī)模式后面再講集群模式
一、Nacos單機(jī)模式
1、MySQL容器安裝
1.1.創(chuàng)建mysql需要的掛載目錄
拉取mysql
docker pull mysql:5.7
mysql需要一個(gè)my.cnf的配置文件,目前我們還沒有所以需要在宿主機(jī)上創(chuàng)建一個(gè)將該文件放入到目錄中并且將我們的sql腳本放入到script文件中
mkdir -p /mysql/{conf,data,script}

將我們的my.cnf文件放入到conf文件夾下,將sql腳本放入到script文件夾下


1.2.創(chuàng)建并運(yùn)行mysql容器
為了讓我們的容器之間可以相互訪問,所以我們創(chuàng)建一個(gè)網(wǎng)絡(luò)
docker network create --subnet 172.18.0.0/16 --gateway 172.18.1.1 net
現(xiàn)在創(chuàng)建容器就需要為它指定我們的自定義網(wǎng)絡(luò)
docker run \ --name m1 \ -v /mysql/conf/my.cnf:/etc/my.cnf \ -v /mysql/data:/var/lib/mysql \ -v /mysql/script:/script \ --privileged=true \ -e MYSQL_ROOT_PASSWORD=123456 \ --net net \ --ip 172.18.0.1 \ -d mysql/mysql-server:5.7

1.3.創(chuàng)建遠(yuǎn)程連接用戶并執(zhí)行sql腳本
進(jìn)入我們的mysql容器進(jìn)行登錄
docker exec -it m1 bash mysql -uroot -p

創(chuàng)建所需的數(shù)據(jù)庫(kù)或者使用遠(yuǎn)程工具連接創(chuàng)建一下也可以,我這里就一張表就不那么麻煩了
create database nacos;

因?yàn)榍懊孀隽四夸洅燧d所以容器也會(huì)有這個(gè)腳本,切換到剛創(chuàng)建的數(shù)據(jù)庫(kù)中執(zhí)行sql
use nacos; source /script/nacos-mysql.sql;

現(xiàn)在查看一下就會(huì)有很多的數(shù)據(jù)表了

最后我們現(xiàn)在需要一個(gè)賬戶進(jìn)行遠(yuǎn)程連接所以創(chuàng)建一個(gè)賬戶并賦予權(quán)限
grant all on *.* to root@'%' identified by '密碼'

沒有問題退出后記得重啟一下docker restart m1
2、Nacos容器安裝
2.1.創(chuàng)建Nacos并啟動(dòng)
首先我們需要拉取一個(gè)Nacos的鏡像
docker pull nacos/nacos-server
運(yùn)行并啟動(dòng)Nacos
docker run -itd \ -e PREFER_HOST_MODE=ip \ -e MODE=standalone \ -e SPRING_DATASOURCE_PLATFORM=mysql \ -e MYSQL_SERVICE_HOST=172.18.0.1 \ -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 \ --net net \ --ip 172.18.0.2 \ nacos/nacos-server
注意:這里的MYSQL打頭的配置都是填寫我們剛剛m1容器的信息
2.2.開放防火墻端口
①開放端口
firewall-cmd --zone=public --add-port=8848/tcp --permanent
②刷新防火墻
firewall-cmd --reload

2.3.查看數(shù)據(jù)庫(kù)有無(wú)數(shù)據(jù)
首先在瀏覽器訪問一下我們的Nacos,查看是否可以訪問

如果可以訪問再查看相應(yīng)的數(shù)據(jù)庫(kù),現(xiàn)在是沒有數(shù)據(jù)的

我們?cè)趎acos配置中心隨便創(chuàng)作一個(gè)數(shù)據(jù)再來(lái)查看一下就會(huì)有數(shù)據(jù)了,說(shuō)明我們的nacos已經(jīng)完全生效了。


二、Nacos集群模式
先將我們剛剛所創(chuàng)建的nacos容器給刪除掉
docker rm -f nacos
1.創(chuàng)建集群Nacos
docker run -itd \ -e PREFER_HOST_MODE=ip \ -e MODE=cluster \ -e NACOS_SERVERS="172.18.0.3:8848 172.18.0.4:8848" \ -e SPRING_DATASOURCE_PLATFORM=mysql \ -e MYSQL_SERVICE_HOST=172.18.0.1 \ -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 nacos01 \ --restart=always \ --net net \ --ip 172.18.0.2 \ nacos/nacos-server
指定Nacos為集群模式cluster并設(shè)置除自己以外的Nacos地址
這時(shí)候我們?cè)L問nacos可以看到這里的模式也變成了cluster

現(xiàn)在我們將剩下的兩臺(tái)nacos容器搞出來(lái)
docker run -itd \ -e PREFER_HOST_MODE=ip \ -e MODE=cluster \ -e NACOS_SERVERS="172.18.0.2:8848 172.18.0.4:8848" \ -e SPRING_DATASOURCE_PLATFORM=mysql \ -e MYSQL_SERVICE_HOST=172.18.0.1 \ -e MYSQL_SERVICE_PORT=3306 \ -e MYSQL_SERVICE_DB_NAME=nacos \ -e MYSQL_SERVICE_USER=root \ -e MYSQL_SERVICE_PASSWORD=123456 \ --name nacos02 \ --restart=always \ --net net \ --ip 172.18.0.3 \ nacos/nacos-server
docker run -itd \ -e PREFER_HOST_MODE=ip \ -e MODE=cluster \ -e NACOS_SERVERS="172.18.0.2:8848 172.18.0.3:8848" \ -e SPRING_DATASOURCE_PLATFORM=mysql \ -e MYSQL_SERVICE_HOST=172.18.0.1 \ -e MYSQL_SERVICE_PORT=3306 \ -e MYSQL_SERVICE_DB_NAME=nacos \ -e MYSQL_SERVICE_USER=root \ -e MYSQL_SERVICE_PASSWORD=123456 \ --name nacos03 \ --restart=always \ --net net \ --ip 172.18.0.4 \ nacos/nacos-server
看似我有三臺(tái)nacos容器實(shí)際上我們只有一臺(tái),因?yàn)橹挥幸慌_(tái)進(jìn)行了端口映射

2.負(fù)載均衡Nacos
創(chuàng)建nginx的配置文件目錄并將配置文件放入
mkdir -p /soft/nginx/conf.d

upstream nacosList {
server nacos01:8848 weight=1;
server nacos02:8848 weight=2;
server nacos03:8848 weight=2;
}
server {
listen 80;
server_name www.zkingedu.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;
}
}創(chuàng)建nginx容器
docker run -itd \ --name nginx \ -v /soft/nginx/conf.d:/etc/nginx/conf.d \ -p 80:80 \ --net net \ --ip 172.18.0.5 \ nginx
現(xiàn)在我們?cè)L問一下看看

可以看到我們?nèi)サ袅硕丝谔?hào)8848,證明我們現(xiàn)在是通過(guò)nginx負(fù)載均衡進(jìn)行訪問的
三、注意事項(xiàng)
我們?cè)诎l(fā)布配置的時(shí)候可能會(huì)出現(xiàn)以下情況


建表SQL語(yǔ)句應(yīng)查看對(duì)應(yīng)Nacos Server的tag版本,我用的是1.4.0的SQL所以產(chǎn)生問題。
按照官方文檔重新建表,或直接補(bǔ)全列:
-- config_info 表 alter table config_info add encrypted_data_key varchar(255); -- his_config_info 表 alter table his_config_info add encrypted_data_key varchar(255);
到此這篇關(guān)于Docker安裝Nacos容器并根據(jù)Nginx實(shí)現(xiàn)負(fù)載均衡的文章就介紹到這了,更多相關(guān)Docker Nacos負(fù)載均衡內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- docker安裝nginx實(shí)現(xiàn)對(duì)springboot項(xiàng)目的負(fù)載均衡的操作方法
- docker swam集群如何實(shí)現(xiàn)負(fù)載均衡
- docker搭建nginx實(shí)現(xiàn)負(fù)載均衡的示例代碼
- 基于Docker部署Tomcat集群、 Nginx負(fù)載均衡的問題小結(jié)
- docker swarm外部驗(yàn)證負(fù)載均衡時(shí)不生效的解決方案
- Docker Nginx容器和Tomcat容器實(shí)現(xiàn)負(fù)載均衡與動(dòng)靜分離操作
- 使用Docker Compose 實(shí)現(xiàn)nginx負(fù)載均衡的方法步驟
- 詳解Docker Swarm服務(wù)發(fā)現(xiàn)和負(fù)載均衡原理
- 詳解利用nginx和docker實(shí)現(xiàn)一個(gè)簡(jiǎn)易的負(fù)載均衡
- Docker部署tenine實(shí)現(xiàn)后端應(yīng)用的高可用與負(fù)載均衡(推薦)
相關(guān)文章
詳解docker 容器不自動(dòng)退出結(jié)束運(yùn)行的方法
本文主要簡(jiǎn)單介紹 docker 容器與前置進(jìn)程的關(guān)系,以及如何編寫 Dockerfile/docker-compose.yml 優(yōu)雅的讓容器可以常駐運(yùn)行。具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-01-01
Docker?部署?vue?項(xiàng)目的詳細(xì)流程
使用Docker配合Nginx部署Vue3項(xiàng)目涉及多個(gè)步驟:首先安裝Nginx,然后創(chuàng)建掛載目錄及配置文件;接著打包Vue項(xiàng)目并上傳至服務(wù)器;最后創(chuàng)建Dockerfile,構(gòu)建鏡像并啟動(dòng)容器,部署完成后,通過(guò)IP訪問應(yīng)用以驗(yàn)證是否成功2024-09-09
yum下載rpm以及相關(guān)依賴的方式離線安裝docker
今天小編就為大家分享一篇關(guān)于yum下載rpm以及相關(guān)依賴的方式離線安裝docker,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2018-12-12
Docker部署MySQL主從復(fù)制的實(shí)現(xiàn)
本文主要介紹了Docker部署MySQL主從復(fù)制的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-10-10
Docker報(bào)錯(cuò)denied:requested access to the r
這篇文章主要為大家介紹了Docker報(bào)錯(cuò)denied:requested access to the resource is denied解決方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-06-06
Docker底層技術(shù)Namespace Cgroup應(yīng)用詳解
在本篇文章里小編給大家整理的是關(guān)于Docker底層技術(shù)Namespace Cgroup應(yīng)用的相關(guān)知識(shí)點(diǎn),需要的朋友們學(xué)習(xí)下。2019-10-10
docker-compose如何單獨(dú)更新某個(gè)服務(wù)
這篇文章主要介紹了docker-compose如何單獨(dú)更新某個(gè)服務(wù)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-05-05
docker部署fastapi的實(shí)現(xiàn)步驟
本文主要介紹了docker部署fastapi的實(shí)現(xiàn)步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03

