前言
关于集群的概念以及集群很分布式的关系或者区别,请各位自行百度,道理大家都懂,只要能理解、知道是怎么回事就行。
注:杨千嬅-2019世界巡回演唱会-天津站:2019-12-29,天津体育馆(舒服哦!)
准备
1、准备两个 springboot 项目,端口自定义,笔者这里都是 8081
2、这两个 springboot 项目添加两个测试接口,接口都为 /test/hello,且接口返回结果为
第一个:Welcome to service one!
第二个:Welcome to service two!
3、服务器,确保服务器安装 docker、nginx等相关配置,有兴趣的同学可戳这里
https://blog.youkuaiyun.com/XGLLHZ/article/details/103005816
正文
1、首先将两个项目部署到服务器,部署方法戳这里:https://blog.youkuaiyun.com/XGLLHZ/article/details/103045580,部署完成后查看是否启动成功
docker ps #查看正常运行的容器列表
若启动正常,则会看到容器端口分别为 3301、3302 的两个容器,先忽略掉端口为 10031 的容器
2、配置 nginx,拉取到 nginx 镜像后先不要创建 nginx 容器,先配置镜像的 nginx.conf文件,然后利用 nginx 镜像启动容器并且挂载 nginx.conf 和 default.conf 文件(实际上是用我们创建的 nginx 配置文件覆盖掉了 nginx 镜像中的配置文件,因为如果要操作镜像中的配置文件则需要进入镜像中,比较麻烦,所以我们将其拿出来)
拉取 nginx 镜像
docker search nginx #查找 nginx 相关的镜像列表
docker pull nginx:latest #拉取 nginx 镜像
以终端的方式打开镜像
docker run -i -t nginx /bin/bash #以终端的方式打开镜像容器
ls -l #查看镜像内的文件
在 etc 中找到 nginx 的两个配置文件(为什么是两个:因为在 nginx.conf 配置文件中有一行代码,它指向了default.conf,所以有两个)
cat /etc/nginx/nginx.conf #查看 ningx.conf 中的文件
cat /etc/nginx/conf.d/default.conf #查看 default.conf 中的文件
然后将这两个文件中的内容考出来
然后在根目录下创建配置文件(这个随意,但是在哪儿要知道),笔者这里创建的是 config/nginx,里面包含了两个文件,分别是 nginx.conf 和 default.conf,然后将刚才拷贝出来的两个分别粘贴到创建的两个文件夹内。
接下来就是创建 nginx 容器了
docker run --name nginx -d -p 10031:80
-v /config/nginx/conf/nginx.conf:/etc/nginx/nginx.conf
-v /config/nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf
nginx
# 创建的 nginx 容器端口号是 10031,名称是 nginx
# 然后挂载了两个刚才创建的文件
# 基础镜像是 nginx
然后查看 刚才创建的 nginx 容器是否正常启动
接下来就是集群了。打开 nginx 的配置文件,进行配置
vim default.conf #编辑 default.conf 配置文件
# 以下为修改的部分
# 集群服务组 3301、3302分别为两个 springboot 项目所在的容器端口号,
weight 为权重,越大,处理请求所分配的次数就越多
upstream springboots {
server 服务器外网 ip:3301 weight=1;
server 服务器外网 ip:3302 weight=1;
}
server {
listen 80; #nginx监听端口
server_name 服务器外网 ip; # 服务名为服务器外网 ip,如果有域名则为域名
#charset koi8-r;
#access_log /var/log/nginx/host.access.log main;
location / {
proxy_pass http://springboots; #反向代理地址
}
然后重启 nginx、两个项目所在的容器
测试:
访问: 服务器外网ip:10031/api/test/hello
第一次访问:
第二次访问:
然后,就可以开始分布式集群了!!!