1. 程式人生 > >Docker swarm搭建叢集以及實現負載均衡

Docker swarm搭建叢集以及實現負載均衡

Docker swarm

Swarm 是 Docker 公司在 2014 年 12 月初發布的一套較為簡單的工具,用來管理 Docker 叢集,它將一群 Docker 宿主機變成一個單一的,虛擬的主機。Swarm 使用標準的 Docker API介面作為其前端訪問入口,換言之,各種形式的 Docker Client(docker client in go, docker_py,docker 等)均可以直接與 Swarm 通訊。Swarm 幾乎全部用 Go 語言來完成開發。
Swarm deamon 只是一個排程器(Scheduler)加路由器(router),Swarm 自己不執行容器,它只是接受 docker 客戶端傳送過來的請求,排程適合的節點來執行容器,這意味著,即使Swarm 由於某些原因掛掉了,叢集中的節點也會照常執行,當 Swarm 重新恢復執行之後,它會收集重建叢集資訊

Swarm 的結構圖

這裡寫圖片描述

實驗環境

系統:rhel7
server1 172.25.41.11
server2 172.25.41.12
server3 172.25.41.13
物理機 172.25.41.250

一·搭建叢集

三臺主機都需要安裝

[[email protected] ~]# ls
docker-engine-17.03.1.ce-1.el7.centos.x86_64.rpm
docker-engine-selinux-17.03
.1.ce-1.el7.centos.noarch.rpm [[email protected] ~]# yum install -y * [[email protected] ~]# systemctl start docker [email protected] ~]# yum install -y bash-* #下載後需要退出再次登陸 [[email protected] images]# ssh [email protected]
[[email protected] ~]# docker swarm init 
Swarm initialized: current node (297
d6raqk1k6wv9b9totipqw6) is now a manager. To add a worker to this swarm, run the following command: docker swarm join \ --token SWMTKN-1-2ygj71qpcyda7k802zu0adgk6ly8z3e80jyd0bcxg3g9ajhnl9-bh2zozew8cg76t0i6jscn9dgb \ 172.25.41.11:2377 To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

這裡寫圖片描述

[root@server2 ~]# docker swarm join \
> --token SWMTKN-1-2ygj71qpcyda7k802zu0adgk6ly8z3e80jyd0bcxg3g9ajhnl9-bh2zozew8cg76t0i6jscn9dgb \
> 172.25.41.11:2377

[root@server3 ~]# docker swarm join \
> --token SWMTKN-1-2ygj71qpcyda7k802zu0adgk6ly8z3e80jyd0bcxg3g9ajhnl9-bh2zozew8cg76t0i6jscn9dgb \
> 172.25.41.11:2377

這裡寫圖片描述
這裡寫圖片描述

[root@server1 ~]# docker node ls

這裡寫圖片描述

三臺主機都需要新增解析

[root@server1 ~]# vim /etc/hosts
172.25.41.250   westos.org
[root@foundation41 westos.org]# cd /tmp/docker/
[root@foundation41 docker]# pwd
/tmp/docker
[root@foundation41 docker]# docker run -d --restart=always --name registry -v `pwd`/certs:/certs -e REGISTRY_HTTP_ADDR=0.0.0.0:443 -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt  -e REGISTRY_HTTP_TLS_KEY=/certs/domain.key -p 443:443  registry:2
[root@foundation41 docker]# docker ps -a
[root@foundation41 docker]# cd /etc/docker/
[root@foundation41 docker]# scp -r certs.d/  [email protected]:/etc/docker/
[root@foundation41 docker]# scp -r certs.d/ [email protected]:/etc/docker/
[root@foundation41 docker]# scp -r certs.d/ [email protected]:/etc/docker/
[root@foundation41 docker]# docker push westos.org/nginx

這裡寫圖片描述

[root@server1 ~]# docker pull westos.org/nginx
[root@server1 ~]# docker service create --name nginx --publish 80:80 --replicas 3 westos.org/nginx
#在manager節點部署nginx服務,服務數量為3個,公開指定埠是8080對映容器80,使用nginx映象
[root@server1 ~]# docker service ls
[root@server1 westos.org]# docker service ps nginx 

這裡寫圖片描述

[root@server1 westos.org]# docker service scale nginx=6
[root@server1 westos.org]# docker service ps nginx
# 實現負載均衡

這裡寫圖片描述

網頁訪問會發現實現負載均衡
這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述

【物理機】

[root@foundation41 docker]# docker load -i visualizer.tar 
[root@foundation41 docker]# docker images
[root@foundation41 docker]# docker tag dockersamples/visualizer westos.org/visualizer
[root@foundation41 docker]# docker push westos.org/visualizer

這裡寫圖片描述

【server1】

root@server1 westos.org]# docker service create  --name=viz  --publish=8080:8080/tcp  --constraint=node.role==manager  --mount=type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock  westos.org/visualizer
[root@server1 westos.org]# docker service ls

這裡寫圖片描述

網頁訪問:172.25.41.11:8080
這裡寫圖片描述

[root@server1 ~]# docker service scale nginx=3
[root@server1 ~]# docker service ps nginx       
[root@server1 ~]# docker ps       
[root@server1 ~]# echo server1 > index.html
[root@server1 ~]# docker container cp index.html nginx.5.alzrk6pwrp5cwkkhwxaeon92c:/usr/share/nginx/html

這裡寫圖片描述

【server2】

[root@server2 ~]# docker ps
[root@server2 ~]# echo server2 > index.html
[root@server2 ~]# docker container cp index.html nginx.4.fbvrxu0hq4392ghog1fdwjw4t:/usr/share/nginx/html

這裡寫圖片描述

【server3】

[root@server3 ~]# echo server3 > index.html
[root@server3 ~]# docker ps
[root@server3 ~]# docker container cp index.html nginx.2.85yy62a6253peqjx2vyobnuzc:/usr/share/nginx/html

這裡寫圖片描述

在物理機測試,是否實現負載均衡

[[email protected] docker]# for i in {1..10}; do curl 172.25.41.11;done

這裡寫圖片描述

滾動更新

物理機
root@foundation41 docker]# docker tag rhel7:v1 westos.org/rhel7:v1
[root@foundation41 docker]# docker push westos.org/rhel7:v1 
server1
[root@server1 ~]# docker service scale nginx=30
[root@server1 ~]# docker service update --image westos.org/rhel7:v1 --update-parallelism 3 --update-delay 10s nginx

這裡寫圖片描述

[root@server1 ~]# docker service ps nginx

這裡寫圖片描述

相關推薦

Docker swarm搭建叢集以及實現負載均衡

Docker swarm Swarm 是 Docker 公司在 2014 年 12 月初發布的一套較為簡單的工具,用來管理 Docker 叢集,它將一群 Docker 宿主機變成一個單一的,虛擬的主機。Swarm 使用標準的 Docker API介面作為

架構之路:nginx與IIS服務器搭建集群實現負載均衡(二)

原創 not c盤 鏈接 發布 原創文章 hang 實戰 負載均衡 【前言】 在《架構之路:nginx與IIS服務器搭建集群實現負載均衡(一)》中小編簡單的講解了Nginx的原理!俗話說:光說不練假把式。接下來,小編就和大家一起來做個小Demo來體會一下Nginx的

架構之路:nginx與IIS服務器搭建集群實現負載均衡(三)

blog 存儲 bsp 知識 exe ESS 步驟 校驗 con 參考網址:https://blog.csdn.net/zhanghan18333611647/article/details/50811980 【前言】 在《架構之路:nginx與IIS服務器搭建集群

搭建服務器集群——Windows7系統中nginx與IIS服務器搭建集群實現負載均衡

文件 優化 安裝 ngnix nginx 忽略 總結 器) image 分布式,集群,雲計算機、大數據、負載均衡、高並發······當耳邊響起這些詞時,做為一個菜鳥程序猿無疑心中會激動一番(

Docker swarm叢集實現負載均衡

實驗環境: server1:172.25.40.11 swarm server2:172.25.40.12 node server3:172.25.40.13 node 搭建叢集 【server1】 [[email protected] ~]#

搭建linux伺服器叢集,簡單實現,負載均衡,動靜分離,資料主從複製,分散式快取,共享session回話。

負載均衡方案: nignx  應用層負載均衡      優點:配置簡單 缺點:均衡效能一般 有流量消耗  基於反向代理 LVS    網路層負載均衡 優點:配置複雜 缺點:作

docker工具之構建叢集實現負載均衡

構建叢集 實驗環境:rhel7.3 test1: 172.25.52.11 主節點 test2: 172.25.52.22 輔節點 test3: 172.25.52.33 輔節點 實驗: (1).搭建實驗環境 做此實驗的前提是真機已經完成了證

rsync實現負載均衡叢集檔案同步,搭建線上測試部署環境

此次測試使用三臺伺服器,CentOS7(1511)版本: 192.168.254.1  web伺服器+線上測試環境+源站 192.168.254.2  web伺服器 192.168.254.3  web伺服器 其中2 3 伺服器作為叢集中的web伺服器,對外開放,是負

nginx+tomcat實現負載均衡以及session共享(linux centos7環境)

processes 解壓 smo eve cti 下載 gen cli -c 一、nginx的安裝 1.準備三份tomcat tomcat1 設置端口 8080 tomcat2 設置端口 8081 tomcat3 設置端口 8082 2. 下載nginx 3. 解壓到/ho

把AspDotNetCoreMvc程序運行在Docker上-part4:實現負載均衡

dash run ner 網絡 endpoint width idg 識別 nginx 在上一part《把AspDotNetCoreMvc程序運行在Docker上-part3:使用獨立的存儲容器》,我們利用MySql容器和Volume實現了真正意義上的數據存儲。整個結

tomcat部署簡述以及與nginx實現負載均衡

index.jsp bbb tom prop mark 修改 安裝 htm mode 1.安裝jdk環境[root@hyj ~]# yum -y install java-1.8.0-openjdk java-1.8.0-openjdk-devel//查看安裝的版本[roo

Expand the scale swarm 副本增減實現負載均衡

creat stat 啟動 指定 ger 一個 update 實現 分配 #創建好了swarm集群後,我們可以部署一個httpd應用來了解工作情況;#執行以下命令來部署應用: docker service create --name web_server httpd --n

2、Tomcat叢集,並用Nginx實現負載均衡(win環境)

1、Tomcat的配置 1、系統環境變數配置: 首先要實現Tomcat的叢集就得擁有多個tomcat,所以我在本地電腦下載了兩個Tomcat,我這裡使用的是Tomcat7,當然,配置與Tomcat的版本沒多大關係~ 下載之後我們先來配置好環境變數: 在我們的系統變數中增加上

Linux下Nginx實現負載均衡 Nginx學習系列之搭建環境

關於在本地虛擬機器(VMware 14)下安裝Linux同時安裝Nginx,請參考Nginx學習系列之搭建環境 1、啟動Nginx 在Nginx安裝成功的前提下,啟動Nginx 已root模式登陸(許可權需要),接著找到Nginx的安裝目錄,啟動Nginx,並且指定Nginx啟動所需的配置檔案,該檔

ngnix實現負載均衡以及反像代理

    本篇文章也不講什麼是負載均衡和反像代理了,就講怎麼配置把,,,  1.ngnix實現反向代理  找到ngnix名為ngnix.conf的配置檔案,我這裡使用的是xftp 集成了notepad++,所以我改檔案就使用編

tomcat+apache實現負載均衡叢集

1,使用負載均衡叢集原因 當開發一個流量小,併發量不大的系統的時候,負載均衡叢集沒什麼大的意義。反之則意義重大。 使用apache+tomcat配置負載均衡叢集流程如下:使用者傳送請求到Web伺服器(也就是apache) apache 根據定義規則進行http轉發到不同的tomcat伺服器

Docker compose(多容器架構實現負載均衡

一、基本知識 Docker Compose 將所管理的容器分為三層,工程(project),服務(service)以及容器(contaienr)。Docker Compose 執行的目錄下的所有檔案(docker-compose.yml, extends 檔案或環境變數檔案等)組成一

階段總結——用虛擬機器搭建一個高可用負載均衡叢集架構

搭建一個高可用負載均衡叢集架構出來,並執行三個站點,具體需求如下。 ------------------------------------------------------------------------------------------ 基礎: 1 設計你認為合理的架構,用visio把架構圖

使用nginx實現負載均衡Docker版本)

現在服務都要處理高併發的問題,如果將服務部署在一臺伺服器上,當很多人同時訪問可能會使伺服器記憶體過高而導致系統崩潰,所以就需要使用負載均衡來減輕伺服器的負擔。通過修改nginx配置可以實現負載均衡。 nginx文件連結:http://www.nginx.cn/doc/ 舉個例子:

使用Docker Swarm搭建分散式爬蟲叢集

在爬蟲開發過程中,你肯定遇到過需要把爬蟲部署在多個伺服器上面的情況。此時你是怎麼操作的呢?逐一SSH登入每個伺服器,使用git拉下程式碼,然後執行?程式碼修改了,於是又要一個伺服器一個伺服器登入上去依次更新? 有時候爬蟲只需要在一個伺服器上面執行,有時候需要在200個伺服器上面執行。你是怎麼快速切換的呢?一個