013 测试 docker swarm 请求分发

1 准备jar包

    写一个简单的springboot项目,提供一个接口,当访问此接口时,返回当前容器IP,仍是贴一下代码地址:https://github.com/995586041/jenkins.gitjava

@RequestMapping("/ip")
	public String getIp() throws UnknownHostException {
		System.out.println("log:------------>ip");
		String ip = InetAddress.getLocalHost().getHostAddress();
		return "您访问的IP是:"+ip;
	}

    打包成jar,假设为 ip.jar 在下面使用python

2 制做测试镜像

    如今已经有了jre8基础镜像以及测试jar包,若是没有jre8基础镜像,想办法搞一个,上篇文章有介绍怎么本身制做一个,而后在这个基础上制做出一个新的镜像:git

    所需文件:github

    Dockerfileweb

FROM jre8
MAINTAINER goldleaf
ADD ./ip.jar /root/ip.jar
# RUN 构建镜像过程当中触发 
# CMD 镜像启动后触发
CMD java -jar /root/ip.jar

    制做镜像ipwebspring

docker build -t ipweb .

    咱们是在swarm集群的的某个节点上制做的镜像,当create项目的时候,镜像所在的机器能找到镜像能够正常启动,可是其余节点并无相应镜像,而后节点就会去仓库找,确定也是找不到的,因此咱们应该经制做好的镜像push到私有仓库里面,而后全部节点去私有仓库pull镜像,这样就能够了docker

    push镜像到私有仓库:浏览器

registry:192.168.20.200        
master:  192.168.20.201  
slave02: 192.168.20.202
slave02: 192.168.20.203
# 从新打tag
docker tag ipweb 192.168.20.200:5000/ipweb
# push到仓库
docker push

3 启动镜像

    3.1 启动:springboot

docker service create -p 8085:8080 --replicas 3 --name ipweb --network central 192.168.20.200:5000/ipweb

    3.2 查看服务bash

docker service ls

docker service ps ipweb

4 访问测试

    前台访问主节点:http://192.168.20.201:8085/ip,直接在浏览器看返回的IP,须要一直刷,才可能看到不一样IP,由于每次请求可能都发到同一个容器里,我这里用python模拟发送http请求:

import requests

url = 'http://192.168.20.201:8083/ip'

n = 0
while n < 30:
    response = requests.get(url)
    print(response.content.decode())
    n = n + 1

结果以下,能够看到请求发送到了不一样节点上:

相关文章
相关标签/搜索