nginx+docker同一服务器上部署多个docker实现负载均衡

时间:2022-07-22 21:51:18

在提到负载均衡的时候,大多数人都是想着几台服务器甚至几十台服务器组成一个群组

也就是横向拓展服务器来实现负载均衡吧

但是还有一种情况是纵向拓展

也就是当你的项目在一台服务器上占用的资源很少,其实是可以在同一台服务器上部署多个项目来实现负载均衡的

这里利用nginx+docker来实现同一台服务器实现负载均衡

这里用的服务器是Linux centos

一,搭建nginx

这个步骤比较简单,可以自己百度一下,也可以参考我写的另外一篇博客

http://blog.csdn.net/wsbgmofo/article/details/78771255

二,创建一个docker项目

1,搭建docker环境,直接yum install docker

2,创建本地项目

这里用java写的一个小程序,分别输入以下内容,分别打成2个jar包

jar包1:

nginx+docker同一服务器上部署多个docker实现负载均衡

jar包2:

nginx+docker同一服务器上部署多个docker实现负载均衡

然后把这2个jar包上传到服务器

3,在你存放项目的路径创建一个名为Dockerfile的文件

vim Dockerfile

在文件里输入以下内容

#基础镜像
FROM java:8
#把你的项目jar包引入到容器的root目录下
ADD jar包1.jar /root
#项目的启动方式
ENTRYPOINT ["java","-jar","/root/jar包1.jar"]

这里例子比较简单,所以Dockerfile的语句比较少

4,创建镜像

docker build -t docker1 .

创建成功后,再把文件里的jar包1.jar换成jar包2.jar

这样就创建了2个镜像

可以先运行镜像,然后访问下看看效果

docker run -d -p 8005:7000 docker1

docker run -d -p 8006:7000 docker2

然后浏览器输入ip:端口访问,如下图

nginx+docker同一服务器上部署多个docker实现负载均衡

nginx+docker同一服务器上部署多个docker实现负载均衡

三,修改nginx配置文件

1,在nginx的conf目录下找到nginx.conf进行编辑,如下图

nginx+docker同一服务器上部署多个docker实现负载均衡

修改监听端口,自定义

新增框起来的内容,upstream里面的内容是你同一台服务器上部署的多个docker的IP和端口

2,启动nginx并输入IP和nginx的端口,效果如下图

nginx+docker同一服务器上部署多个docker实现负载均衡

nginx+docker同一服务器上部署多个docker实现负载均衡

当其中一个docker容器挂掉的时候,nginx就不会再分配给那个容器了,当所有docker容器都挂掉了你的服务才无法继续访问

说到这里也有人会问如果是直接服务器挂掉了呢

确实会有这种情况发生,所以要根据实际情况来决定采用几台服务器,然后在这些服务器上部署多个docker容器就好了

这样至少能保证一台服务器挂了还会有其他服务器可以继续访问,至于要多少服务器就根据实际的业务情况来考虑