天天看點

centos7.2安裝dcos

1. 前言

對于容器編排系統,前段時間主要研究kubernetes,現在實驗室要用dcos,是以在實驗室叢集上搭建了該系統,dcos版本為1.8.6。

使用的系統為centos7.2,機器使用情況如下表所示,實驗室叢集沒有聯外網。

機器ip 作用
10.107.18.35 單獨一台boot節點
10.107.19.1 單獨一台master節點
10.107.13.150 4台slave節點
10.107.19.2 4台slave節點
10.107.19.3 4台slave節點
10.107.18.39 4台slave節點

為了避免安裝失敗時需要重新啟動系統,這裡可以在完成第7節,安裝完成docker後将所有機器系統備份,出現問題時将系統還原到備份點。需要主要的是還原後要重新做第5步時間同步。系統備份參考http://blog.csdn.net/yuanfang_way/article/details/54383616

2. 本文分析内容安排

1.關閉firewalld和selinux

2.ssh免密碼登入

3.時間同步

4.安裝overlay子產品

5.安裝docker

6.安裝dcos

3. 關閉firewalld和selinux

  • 所有機器上執行

    systemctl stop firewalld && systemctl disable firewalld

    執行

    firewall-cmd --state

    檢視firewalld是否成功關閉,應該顯示not running
  • 所有機器執行

    setenforce 0

    sed -i s/SELINUX=enforcing/SELINUX=disabled/g /etc/selinux/config

    ,重新開機後輸入

    sestatus

    檢視selinux狀态,此時應該顯示

    disabled

4. ssh免密碼登入

在boot節點上執行

ssh-keygen -t rsa

生成密鑰

執行

ssh-copy-id -i 10.107.x.x

分别将私鑰複制到其他要免密鑰登陸的機器

5. 時間同步

參考http://blog.csdn.net/yuanfang_way/article/details/53959591

6. 安裝overlay子產品

執行指令

tee /etc/modules-load.d/overlay.conf <<-'EOF'
overlay
EOF
           

并重新開機将overlay子產品加載如系統中,并執行

lsmod | grep overlay

檢視是否加載成功,成功應該顯示overlay 42451 0

7. 安裝docker

首先,通過rpm或者yum install的方式安裝docker,在沒網的情況下需要先下載下傳docker安裝相關的rpm包;之後,設定docker的存儲為overlay,具體應該執行如下腳本:

mkdir -p /etc/systemd/system/docker.service.d && tee /etc/systemd/system/docker.service.d/override.conf <<- EOF
[Service]
ExecStart=
ExecStart=/usr/bin/docker daemon --storage-driver=overlay 
EOF
           

改變配置後需要執行

systemctl daemon-reload

指令使配置生效;

這時便可以啟動docker了,如下:

systemctl start docker
systemctl enable docker
           

最後,運作

docker info

指令檢視是否正常安裝docker,并且存儲用的是overlay,正确情況時顯示如下圖

centos7.2安裝dcos

8. 安裝dcos

  1. 在boot節點上下載下傳dcos的installer:dcos_generate_config.sh(大約726MB),同時在與dcos_generate_config.sh檔案同級目錄下建立genconf目錄,我是在/home/dcos目錄下建的

    mkdir -p genconf cd genconf

  2. 在genconf中建立一個ip-detect檔案,用于探測叢集中節點的ip,我使用的檔案内容為
    #!/bin/bash
    
    
    echo $(ip addr s | grep inet | grep  | awk -F' ' '{print $2}'|  awk -F'/' '{print $1}')
               
    這裡不能寫錯,因為該檔案内容最終會被拷貝到master和agent節點的

    /opt/mesosphere/bin/detect_ip

    中,在第9步啟動dcos服務時用來探測ip。如果,寫錯将不能正常啟動叢集,報如下錯誤
    time="2017-01-13T00:57:22+08:00" level=info msg="/opt/mesosphere/etc/endpoints_config.json not found" 
    time="2017-01-13T00:57:22+08:00" level=error msg="Could not detect IP: fork/exec /opt/mesosphere/bin/detect_ip: exec format error" 
    time="2017-01-13T00:57:22+08:00" level=error msg="Could not get mesos node id: Get http://:5051/state: dial tcp :5051: getsockopt: connection refused" 
    time="2017-01-13T00:57:22+08:00" level=fatal msg="Found unhealthy systemd units" 
               
  3. 在genconf中建立config.yaml檔案,用于叢集master以及agent節點的配置,我所用叢集的配置為:

    agent_list: <ul><li>10.107.19.2</li> <li>10.107.19.3</li> <li>10.107.18.39</li> <li>10.107.13.150 auth_enabled: false bootstrap_url: file:///opt/dcos_install_tmp cluster_name: DC/OS exhibitor_storage_backend: static ip_detect_path: genconf/ip-detect master_discovery: static master_list:</li> <li>10.107.19.1 process_timeout: 10000 resolvers:</li> <li>8.8.8.8</li> <li>8.8.4.4 ssh_key_path: genconf/ssh_key ssh_port: 22 ssh_user: root telemetry_enabled: false oauth_enabled: false

  4. 将SSH key拷貝的genconf目錄,具體指令為

    cp /root/.ssh/id_rsa genconf/ssh_key && chmod 0600 genconf/ssh_key

  5. 運作

    bash dcos_generate_config.ee.sh --genconf

    指令建立安裝檔案,并提取出為叢集提供檔案的docker容器,運作完這一步後dcos下的目錄結構如下圖:
    centos7.2安裝dcos
  6. 運作

    bash dcos_generate_config.ee.sh --install-prereqs

    安裝dcos需要的依賴環境。但是,如果叢集沒有聯網,那麼在運作此指令前需要首先在master和agent節點上運作

    yum install -y tar xz unzip curl ipset

    安裝依賴,否則會出錯。這一步運作成功後螢幕輸出如下圖,其中提示的紅色的錯誤是由于叢集沒有聯網導緻的,可以直接忽略。
    centos7.2安裝dcos
  7. 檢測各節點是否已達到了安裝部署dcos的全部要求

    bash dcos_generate_config.ee.sh --preflight

    ,boot節點會檢查其他節點的系統環境符不符合安裝要求,是不是有配置錯誤,或者缺包、版本不對等問題。運作成功後證明各機器達到了部署dcos的要求,螢幕輸出如下,其中紅色錯誤依舊是未聯網導緻的,可以忽略。
    centos7.2安裝dcos
  8. 正式安裝

    bash dcos_generate_config.ee.sh --deploy

    ,在上一步環境檢查順利通過以後,執行deploy,其實就是從boot節點把安裝鏡像下發到各個節點而已,上一步沒問題這一步一般也不會出錯。運作成功後證明各機器已經成功安裝dcos,螢幕輸出如下圖,紅色錯誤依舊忽略。
    centos7.2安裝dcos
  9. 確定服務啟動并且正常運作

    bash dcos_generate_config.ee.sh --postflight

    ,這步其實就是boot去各個節點把docker鏡像拉起來,DCOS的那些元件像mesos master 、slave 、marathon、mesos-dns等都是運作在docker裡,另外具體配置資訊也是boot節點通過環境變量這種方式幫你注入進去,這一步一般也不會出現問題。運作成功後dcos服務已經啟動,螢幕輸出如下圖,護色錯誤依舊忽略。
    centos7.2安裝dcos
  10. dcos服務監控

    監控dcos服務的網址為

    http://<master-public-ip>:8181/exhibitor/v1/ui/index.html

    ,如下圖所示,當Hostname前面的圓形的狀态圖示為綠色時,代表DC/OS的接口已經可用了
    centos7.2安裝dcos
  11. 登陸DC/OS

    登陸DC/OS系統的接口為

    http://<public-master-ip>/

    ,登陸後界面如下圖
    centos7.2安裝dcos

注意:如果安裝過程中出現錯誤需重新安裝的話,需要清除已經安裝的檔案。具體做法是建立一個uninstall.sh檔案,檔案内容如下,将該檔案改為可執行檔案,然後執行即可。

/opt/mesosphere/bin/pkgpanda uninstall && \
rm -rf /opt/mesosphere /var/lib/mesos /var/lib/dcos /var/lib/zookeeper /var/log/mesos /etc/mesosphere /var/lib/mesosphere && \
rm -rf /etc/profile.d/dcos.sh /etc/systemd/journald.conf.d/dcos.conf /etc/systemd/system/dcos-cfn-signal.service /etc/systemd/system/dcos-download.service /etc/systemd/system/dcos-link-env.service /etc/systemd/system/dcos-setup.service /etc/systemd/system/multi-user.target.wants/dcos-setup.service /etc/systemd/system/multi-user.target.wants/dcos.target
           

9. 作者介紹

梁明遠,國防科大并行與分布式計算國家重點實驗室(PDL)應屆研究所學生,14年入學伊始便開始接觸docker,準備在餘下的讀研時間在docker相關開源社群貢獻自己的代碼,畢業後準備繼續從事該方面研究。郵箱:[email protected]

繼續閱讀