2017年4月14日 星期五

Docker Swarm Cluster 及 WEB Load Balance 應用

操作主機 (CentOS 7):
docker1    192.168.60.201    #master + node 及 swarm management
docker2    192.168.60.202
docker3    192.168.60.203

三台全裝
yum install -y docker

master 執行
docker run --rm swarm create

會出現一串 Cluster ID 記下來,因為每次執行都會再產生不同的 cluster id。

node 執行
docker run -d swarm join --addr=192.168.60.201:2375 token://07956fde8d6cd1363d5ca0e3a403b136
docker run -d swarm join --addr=192.168.60.202:2375 token://07956fde8d6cd1363d5ca0e3a403b136
docker run -d swarm join --addr=192.168.60.203:2375 token://07956fde8d6cd1363d5ca0e3a403b136

node 執行
vi /etc/sysconfig/docker
OPTIONS='-H 0.0.0.0:2375 -H unix:///var/run/docker.sock'
systemctl restart docker.service

master 執行
2375 port 己經被 docker 使用,所以必須使用其他的 port 來管理 docker:

docker run -t -p 2376:2375 -t swarm manage token://07956fde8d6cd1363d5ca0e3a403b136

正常應出現三台 join 主機的訊息,按 Ctrl + C 跳脫

確認 join 主機
docker run --rm swarm list token://07956fde8d6cd1363d5ca0e3a403b136
docker -H 192.168.60.201:2376 info


主機重開機時,如果沒有設定讓 Container 隨主機開機啟動,都要手動啟動它。
利用下列指令 update 讓 Container 隨主機啟動:
查看 Container ID:
docker ps -a

update container:
docker update --restart=always Container_ID


測試:
1.master 本機執行(不是在 master 的 docker container 裡)
安裝 Nginx 套件:
yum install -y epel-release
yum install -y nginx

將下列程式碼加入 /etc/nginx/nginx.conf 中:

upstream nodes {
    server 192.168.60.203:8080 weight=1; #權重 = 1
    server 192.168.60.202:8080 weight=2; #權重 = 2
    server 192.168.60.201:8080 weight=3; #權重 = 3
}

server {
    listen 80;

    location / {
        proxy_pass http://nodes;
    }
}

2.master 從 docker.io PULL 測試網頁 image 裝到 node 上(有幾台 node 就執行幾次。我也不確定要這麼做嗎!!!!! 但我執行兩次只有兩台有 PULL。發現後再執行一次,三台 node 就都有 PULL 測試網頁了)

docker -H :2375 run -d -p 8080:80 cijie/haproxy-web-example:1.0.0

3.打開瀏覽器,輸入 master IP,就可看到 Container 的 ID 切換
http://192.168.60.201





沒有留言:

張貼留言

OCS Inventory 匯出資料到 Google 試算表(依電腦設備類型)

OCS Inventory 匯出到 Google 試算表的程式是從網路上其他高手分享出來( 參考資料出處 ),並依個人需求調整。 如要取用請注意,因程式是用 python 寫的,程式段落可能會移位導致無法正常運作。 下列程式調整SELECT電腦 設備類型 為Noteboo...