??欢迎来到我的CSDN主页!??
?我是君易--鑨,一个在CSDN分享笔记的博主。??
?推荐给大家我的博客专栏《Docker之Dockerfile构建镜像》。??
?如果感觉还不错的话请给我关注加三连吧!??
前言
在上一期的博客分享中我们分享了有关Nginx的安装和使用,当然我们知道上一期的博客分享的是使用Nginx实现负载均衡。本期的博客文章基于上一期的Docker之Nginx安装的基础上,本期的博客分享是安装使用nacos.
一、nacos服务部署
1. 配置其数据库
我们需要将之前的数据库的容器去除掉,重新新建一个数据库容器用于nacos服务部署。我们先在mysql下创建一个script文件夹
我们创建一个对应的数据库容器。输入下述指令:
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 \-d mysql/mysql-server:5.7
我们这个数据库容器没有指定使用的网络,默认指定在bridge网桥网络模式中运行。 我们切换到script文件夹下,我们将要执行的数据库脚本复制到该文件目录下。
我们然后进入到我们的数据库容器中,创建一个nacos服务的数据库,并且执行对应的数据库语句。
2. 配置nacos容器
2.1 下载nacos镜像
我们首先下载我们nacos服务所需要的镜像文件夹
docker pull nacos/nacos-server //下载镜像文件
2.2 运行nacos容器
首先我们要对其数据库进行授权
grant all on *.* to root@'%' identified by '123456'
我们运行一个容器启动nacos
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
我们重新启动一下我们数据库容器,然后查看我们的nacos服务的容器是否成功启动。
指令:
docker restart 数据库容器名
docker logs 容器名
记得开放我们的防火墙端口号
指令:
firewall-cmd --zone=public --add-port=8848/tcp //开放端口号
firewall-cmd --zone=public --list-ports //查看端口
firewall-cmd --reload //刷新防火墙状态
我们登陆进入界面,账号和密码都是nacos
我们到配置管理中的配置列表随便添加一个配置用于我们测试。
我们切入到我们的数据库容器中我们进行查看nacos数据库中的config_info表
有数据说明我们的持久化成功的, 我们接下来将nacos容器去除掉,重新创建一个,再在我们的网页上访问。
二、集群部署nacos
在执行命令之前先执行一个操作,因为我们的数据库容器和将要创建的nacos容器的网络不一样,因此让数据库容器对连接nacos的网络
docker network connect mynet m1
接下来我们创建对应的nacos集群容器,指令如下
docker run -itd \-e PREFER_HOST_MODE=ip \-e MODE=cluster \-e NACOS_SERVER="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 \--name nacos01 \ --net mynet \--ip 172.20.0.101 \--restart=always \nacos/nacos-server
我们查看一下nacos01的日志文件。
我们删除掉该容器重新创建一个有映射端口的容器,创建之前去除之前的nacos容器。
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 nacos01 \--net mynet \--ip 172.20.0.101 \--restart=always \nacos/nacos-server
我们在网页上进行访问8848。
我们将另外两台也运行出来。
docker run -itd \-e PREFER_HOST_MODE=ip \-e MODE=cluster \-e NACOS_SERVERS="172.20.0.101: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 \--name nacos02 \--net mynet \--ip 172.20.0.102 \--restart=always \nacos/nacos-serverdocker run -itd \-e PREFER_HOST_MODE=ip \-e MODE=cluster \-e NACOS_SERVERS="172.20.0.101:8848 172.20.0.102: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 \--name nacos03 \--net mynet \--ip 172.20.0.103 \--restart=always \nacos/nacos-server
我们再去网页进行刷新查看。
我们只有第一台的端口映射出来了,只有第一台在工作。 接下来我们进行部署Nginx容器。首先新建对应的文件夹。
指令:
mkdir -p nginx
cd nginx/
mkdir conf.d
我们在该文件目录下进行创建一个配置文件,配置我们的集群
upstream nacosList { server nacos01:8848 weight=1; server nacos02:8848 weight=1; server nacos03:8848 weight=1; } 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; } }
接下来就是创建我们Nginx负载均衡的容器
docker run -itd \--name nginx \-v /soft/nginx/conf.d:/etc/nginx/conf.d \-p 80:80 \--net mynet \nginx
我们在页面上直接访问http://www.zkingedu.com/nacos
如果一致刷新没有变化,其实已经实现了负载均衡了。如果想要刷新有变化的话就在创建集群nacos时使用容器名。
??本期的博客分享到此结束??
??各位老铁慢慢消化??
??下期博客博主会带来新货??
?三连加关注,阅读不迷路 !?