基于docker+nginx搭建到nacos集群的艰难之旅
1.搭建环境介绍
简介:适用于初学者将容器和微服务知识的整合练手,考虑到学习成本,前期只有一台云服务器(ECS)
如果环境不同请谨慎借鉴,可能涉及到的配置不同会导致搭建过程失败。
腾讯云服务器一台(2核4G)
docker环境(安装教程-->)
nginx镜像(说明:nginx是用容器运行起来的)
nacos集群(说明:是在ECS上运行起来具有3个节点的集群)
2.nacos集群搭建
1.前置条件:nacos集群是微服务的服务注册和配置中心,一些动态配置肯定是需要保存到持久化介质上的(本例中是一台mysql服务器)
2.到阿里巴巴nacos官网下载nacos的centos版本的tar包(地址:链接:https://pan.baidu.com/s/1im-nqLZKdY3hpPm9DFm5Kw 提取码:su06),然后上传ECS服务器/usr/software目录下进行解压,结果如图
tar -zxvf nacos-server-1.1.4.tar.gz
解压后目录结构如下
3.进入conf目录修改集群配置和数据库配置 注意习惯:修改前先备份文件
在conf目录下的application.properties文件末尾加上数据库配置如下,如下图
spring.datasource.platform=mysql db.num=1 db.url.0=jdbc:mysql://mysql-IP:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true db.user=root db.password=123456
接着修改cluster.conf文件,如下图 注意:此处如果是同一台ECS服务器上使用不同端口搭建的nacos集群,配置的是服务器的公网IP或者是使用hostname -i显示的ip地址(本次是127.0.0.1)
***.***.***.***:8847 ***.***.***.***:8848 ***.***.***.***:8849
4.修改nacos的启动脚本支持以不同的端口号启动,并且可以适当将以集群启动的JVM配置调下点(默认是-Xms 2g -Xmm2g -Xmn1g),否则有可能出现集群启动很慢或者启动不了的情况注意习惯:修改前先备份文件
以及配置文件末尾处
4.分别以三个配置的端口启动nacos集群
./startup -p 8847 ./startup -p 8848 ./startup -p 8849
5.测试发现三台nacos集群均能访问了
3.nginx配置以及反向代理设置
1.从docker Hub拉去nginx镜像
docker pull nginx
2.暂时先运行nginx容器(-p命令将容器的80端口映射到宿主机的8060端口)
docker run -d --name mynginx -p 8060:80 nginx
3.已交互式命令进入nginx容器里面,查看nginx内部重要的配置文件的挂载路径
docker exec -it nginx /bin/bash
/etc/nginx/nginx.conf 是容器内部 nginx.conf 文件的路径
/etc/nginx/conf.d/default.conf 是容器内部 default.conf 文件的路径
/usr/share/nginx/html 是nginx启动默认html文件的路径
/var/log/nginx 是nginx的访问日志
知道了容器内文件的位置,在启动容器时可以将文件挂载到宿主机上便于修改
4.在宿主机的 /data目录下创建 三个目录用于挂载以上文件(注意挂载前还需要将容器内的已有配置复制到本地)
mkdir -p ./mydata/nginx/{conf.d,html,logs}
docker cp nginx:/etc/nginx/nginx.conf ./ dokcer cp nginx:/etc/nginx/conf.d/default.conf ./conf.d/
结果如下图
5.关闭并删除上面运行的nginx容器,然后重新启动容器
docker stop nginx docker rm nginx
docker run -d --name nginx -p 8060:80 -v /data/mydata/nginx/nginx.conf:/etc/nginx/nginx.conf -v /data/mydata/nginx/logs:/var/log/nginx -v /data/mydata/nginx/conf.d:/etc/nginx/conf.d -v /data/mydata/nginx/html:/usr/share/nginx/html --privileged=true nginx
6.修改宿主机上nginx的配置文件conf.d目录下的defaul.conf,如下图,然后重启容器,然后可以使用8060端口直接访问nacos集群了
docker restart nginx
修改:经过测试,此处的nginx的upstream配置成服务器的内网地址也是可以的,相应地,nacos集群配置文件cluster.conf的ip也是服务器的内网ip