Docker-Swarm部署說明

步驟一

在每台即將成為集群的一份子的機器安裝docker-engine
有幾台機器就做幾遍,不然就寫script
ps:如果本來就有機器在跑docker就不用了在安裝docker-engine了齁(應該沒這麼傻吧)


  1. 準備好機器並且安裝 docker-engine
  2. 參考官網說明https://docs.docker.com/engine/installation/linux/ubuntulinux/
  3. 建立一個帳號可以讓docker無密碼執行sudo命令,編輯/etc/sudoers

      vim /etc/sudoers
    
    • user01 ALL=(ALL) NOPASSWD: ALL
    • %sudo ALL=(ALL) NOPASSWD: ALL
  4. 建立和機器間ssh免密碼

     ssh-copy-id xxx@domain
    

步驟二

安裝 Swarm-Manager 拜託他來管理下集群


  1. 打開 terminal, ssh進去準備要當 Swarm Manager 的機器
  • 拉一個 swarm image回來並且執行

     > docker run --rm swarm create  
     > docker run -d swarm manage  -H tcp://0.0.0.0:2376  token://4bad18083ae90e28c07e830b25071a70
    

    留意最後一行給的token,否則用下面這個命令查詢

     > docker-machine inspect -f "{{.Config.Cmd}}" `{swarm manager名稱}`
    
  • exit 可以滾出來了

    > exit
    
  • 創建集群管理者 Swarm Manager

    > docker-machine create --swarm --swarm-discovery token://{剛剛給的token} --swarm-master -d {看你想要加入哪一種的driver,virtalbox|generic...etc} --generic-ip-address {機器IP} --generic-ssh-user "{步驟一設定的使用者}” {幫Swarm Manager取個名字吧}
    

    Docker支援的Driver類型共有14種, 橫跨了實體機器,VM,IaaS和PaaS Service
    小弟不才只有試過virtualbox和generic兩種

步驟三

把一些Node加入集群吧


  1. 打開Terminal

      > docker-machine create -d {看你想要加入哪一種的driver,virtalbox|generic...etc} --swarm --swarm-discovery token://{剛剛給的token} {幫node取個名字}
    
  2. 就這樣結束!

  3. 好拉沒有拉, 可以docker-machine ls一下看看大家是不是都是健康的running
  4. 把terminal環境指向Swarm-Manager吧

      >eval $(docker-machine env --swarm {你的Swarm Manager叫啥?})
    
  5. 看一下節點的資訊

      >docker info
    
  6. 如果有出現pending就代表可能有問題

    • 網路通不通
    • ssh通不通
    • ssh-copy-id沒
    • sudo passwordless沒
    • 這邊試過讓一台實體機帶著一些虛擬機(boot2docker)做集群,但遇到了一些NAT的問ㄉ題就沒有解決了,機器會pending
    • boot2docker起來的vm 網路預設會使用NAT,node在NAT中沒有routing可以送keepalive的packet給maanger,但其實再建立個routing就可以了,怕麻煩的話又真要使用boot2docker的話就再手動改成bridge mode,手動改下網路設定就可以解決了(好像也沒比較省事)
    • 但boot2docker就真的是玩玩而已,之前發現mount起來的folder,host在reboot後就消失了~ XD

以上的設定我這邊是用4個node(包含manager)用兩台ubuntu 14.04和兩台centos7搭起來的,除了前面說到的問題,目前還算正常,等準備要進production stage再來做一次測試,後續再update囉

results matching ""

    No results matching ""