DC/OS安裝部署詳解
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
- 1
- 2
- 3
並重啟將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
- 1
- 2
- 3
- 4
- 5
改變配置後需要執行systemctl daemon-reload
命令使配置生效;
這時便可以啟動docker了,如下:
systemctl start docker
systemctl enable docker
- 1
- 2
最後,執行docker info
命令檢視是否正常安裝docker,並且儲存用的是overlay,正確情況時顯示如下圖
8. 安裝dcos
- 在boot節點上下載dcos的installer:dcos_generate_config.sh(大約726MB),同時在與dcos_generate_config.sh檔案同級目錄下新建genconf目錄,我是在/home/dcos目錄下建的
mkdir -p genconf
cd genconf 在genconf中新建一個ip-detect檔案,用於探測叢集中節點的ip,我使用的檔案內容為
#!/bin/bash echo $(ip addr s | grep inet | grep 10.107 | awk -F' ' '{print $2}'| awk -F'/' '{print $1}')
- 1
- 2
- 3
- 4
- 5
這裡不能寫錯,因為該檔案內容最終會被拷貝到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"
- 1
- 2
- 3
- 4
- 在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 - 將SSH key拷貝的genconf目錄,具體命令為
cp /root/.ssh/id_rsa genconf/ssh_key && chmod 0600 genconf/ssh_key
- 執行
bash dcos_generate_config.ee.sh --genconf
命令建立安裝檔案,並提取出為叢集提供檔案的docker容器,執行完這一步後dcos下的目錄結構如下圖: - 執行
bash dcos_generate_config.ee.sh --install-prereqs
安裝dcos需要的依賴環境。但是,如果叢集沒有聯網,那麼在執行此命令前需要首先在master和agent節點上執行yum install -y tar xz unzip curl ipset
安裝依賴,否則會出錯。這一步執行成功後螢幕輸出如下圖,其中提示的紅色的錯誤是由於叢集沒有聯網導致的,可以直接忽略。 - 檢測各節點是否已達到了安裝部署dcos的全部要求
bash dcos_generate_config.ee.sh --preflight
,boot節點會檢查其他節點的系統環境符不符合安裝要求,是不是有配置錯誤,或者缺包、版本不對等問題。執行成功後證明各機器達到了部署dcos的要求,螢幕輸出如下,其中紅色錯誤依舊是未聯網導致的,可以忽略。 - 正式安裝
bash dcos_generate_config.ee.sh --deploy
,在上一步環境檢查順利通過以後,執行deploy,其實就是從boot節點把安裝映象下發到各個節點而已,上一步沒問題這一步一般也不會出錯。執行成功後證明各機器已經成功安裝dcos,螢幕輸出如下圖,紅色錯誤依舊忽略。 - 確保服務啟動並且正常執行
bash dcos_generate_config.ee.sh --postflight
,這步其實就是boot去各個節點把docker映象拉起來,DCOS的那些元件像mesos master 、slave 、marathon、mesos-dns等都是執行在docker裡,另外具體配置資訊也是boot節點通過環境變數這種方式幫你注入進去,這一步一般也不會出現問題。執行成功後dcos服務已經啟動,螢幕輸出如下圖,護色錯誤依舊忽略。 - dcos服務監控
監控dcos服務的網址為http://<master-public-ip>:8181/exhibitor/v1/ui/index.html
,如下圖所示,當Hostname前面的圓形的狀態圖示為綠色時,代表DC/OS的介面已經可用了 - 登陸DC/OS
登陸DC/OS系統的介面為http://<public-master-ip>/
,登陸後介面如下圖
注意:如果安裝過程中出現錯誤需重新安裝的話,需要清除已經安裝的檔案。具體做法是新建一個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/