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

結果以下,能夠看到請求發送到了不一樣節點上:

相關文章
相關標籤/搜索