在提到负载均衡的时候,大多数人都是想着几台服务器甚至几十台服务器组成一个群组java
也就是横向拓展服务器来实现负载均衡吧nginx
可是还有一种状况是纵向拓展docker
也就是当你的项目在一台服务器上占用的资源不多,实际上是能够在同一台服务器上部署多个项目来实现负载均衡的小程序
这里利用nginx+docker来实现同一台服务器实现负载均衡vim
这里用的服务器是Linux centos
centos
一,搭建nginx浏览器
这个步骤比较简单,能够本身百度一下,也能够参考我写的另一篇博客服务器
http://blog.csdn.net/wsbgmofo/article/details/78771255负载均衡
二,建立一个docker项目ui
1,搭建docker环境,直接yum install docker
2,建立本地项目
这里用java写的一个小程序,分别输入如下内容,分别打成2个jar包
jar包1:
jar包2:
而后把这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配置文件
1,在nginx的conf目录下找到nginx.conf进行编辑,以下图
修改监听端口,自定义
新增框起来的内容,upstream里面的内容是你同一台服务器上部署的多个docker的IP和端口
2,启动nginx并输入IP和nginx的端口,效果以下图
当其中一个docker容器挂掉的时候,nginx就不会再分配给那个容器了,当全部docker容器都挂掉了你的服务才没法继续访问
说到这里也有人会问若是是直接服务器挂掉了呢
确实会有这种状况发生,因此要根据实际状况来决定采用几台服务器,而后在这些服务器上部署多个docker容器就行了
这样至少能保证一台服务器挂了还会有其余服务器能够继续访问,至于要多少服务器就根据实际的业务状况来考虑