基于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