nginx+docker同一服务器上部署多个docker实现负载均衡
2018-01-17 18:30
1146 查看
在提到负载均衡的时候,大多数人都是想着几台服务器甚至几十台服务器组成一个群组
也就是横向拓展服务器来实现负载均衡吧
但是还有一种情况是纵向拓展
也就是当你的项目在一台服务器上占用的资源很少,其实是可以在同一台服务器上部署多个项目来实现负载均衡的
这里利用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:
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容器就好了
这样至少能保证一台服务器挂了还会有其他服务器可以继续访问,至于要多少服务器就根据实际的业务情况来考虑
也就是横向拓展服务器来实现负载均衡吧
但是还有一种情况是纵向拓展
也就是当你的项目在一台服务器上占用的资源很少,其实是可以在同一台服务器上部署多个项目来实现负载均衡的
这里利用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:
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容器就好了
这样至少能保证一台服务器挂了还会有其他服务器可以继续访问,至于要多少服务器就根据实际的业务情况来考虑
相关文章推荐
- Docker+Nginx+tomcat实现一个服务器上多个tomcat的负载均衡
- 具有负载均衡功能MySQL服务器集群部署实现
- 部署LAMP+NFS实现双Web服务器负载均衡
- Jenkins-Docker-SpringBoot-java-git-gradle-持续集成与自动部署-实现跨服务器部署
- 具有负载均衡功能的MySQL服务器集群部署及实现
- 具有负载均衡功能MySQL服务器集群部署实现
- 具有负载均衡功能的MySQL服务器集群部署及实现
- 具有负载均衡功能的MySQL服务器集群部署及实现
- 具有负载均衡功能MySQL服务器集群部署实现
- Docker部署nginx实现负载均衡
- 同一个服务器部署多个Tomcat并用Nginx实现负载均衡分担
- nginx部署多个tomcat实现负载均衡
- RHEL 5.4下部署LVS(DR)+keepalived实现高性能高可用负载均衡
- 利用nginx和docker实现一个简单负载均衡
- Tomcat服务器集群与负载均衡实现
- ActiveMQ实现负载均衡+高可用部署方案
- nginx+tomcat集群负载均衡(实现session复制)
- 部署tomcat负载均衡集群,实现节点之间内存中的Session共享。
- jenkins+git实现docker持续部署
- 4000 ActiveMQ实现负载均衡+高可用部署方案