DC/OS專題之安裝部署篇

liumiaocn發表於2016-07-27

DC/OS的三種安裝方式


  • GUI方式
  • CLI命令列方式
  • 高階方式

本文中使用CLI命令列方式進行安裝,同時也會附帶介紹一下另外兩種。

事前準備 :硬體

DC/OS有如下4種方式的安裝:


  • Local
  • Cloud
  • Custom Cloud
  • On-Premises

其中Local是與Vagrant進行結合,官方稱其最少需要16G的記憶體。Cloud和Custom Cloud都是安裝到AWS等雲平臺上。On-Premises的方式可以做自己的DC/OS本地部署。本文采用此種方式進行部署。此種方式目前支援兩種Linux的作業系統,CentOS和CoreOS,本文采用CentOS7.2。所需node數量官方稱至少4臺,每臺最低4G/2CPU的配置。本文僅僅是學習和研究的目的,使用3臺機器,每臺1G/1CPU的配置進行安裝。

事前準備

安裝CentOS, 按照以下標準準備3臺CentOS
核心:>= 3.10
overlayfs啟用
docker使用overlayfs方式安裝
更新到最新的package
關閉selinux和防火牆

3臺機器的主機名(可以自行自由改變)

host131: 192.168.32.131: BootStrap主機,用於安裝
host132: 192.168.32.132: Master
host133: 192.168.32.133: Agent

下載DC/OS安裝檔案

從下面的地址下載的DC/OS的安裝檔案,我使用的是1.7.0的EarlyAccess版本。

https://downloads.dcos.io/dcos/EarlyAccess/dcos_generate_config.sh  

安裝前準備

安裝目錄下需要提前準備的檔案

preparement

安裝準備:下載dcos_generate_config.sh

curl -O https://downloads.dcos.io/dcos/EarlyAccess/dcos_generate_config.sh

安裝準備:準備config.yaml

mkdir genconf
cd genconf
生成DC/OS所需要的config.yaml檔案
以下為本次安裝的例子,可供參照
---
agent_list:
- 192.168.32.133
# Use this bootstrap_url value unless you have moved the DC/OS installer assets.
bootstrap_url: http://192.168.32.131:8848
cluster_name: 'DCOS'
master_discovery: static
master_list:
- 192.168.32.132
resolvers:
- 8.8.4.4
- 8.8.8.8
ssh_port: 22
ssh_user: root

注意點:
以下是config.yaml中必須有的內容
agent_list
master_list
ssh_user
bootstrap_url: http://192.168.32.131:8848,這種寫法是為了master和agent能夠訪問到bootstrap節點
另外,除了Vagrant的Local安裝之外,DC/OS執行起來的最小Node,3臺已經是最少了,要想更少可能會碰到一些麻煩。

安裝準備:ip-detect

ip-detect檔案為了在安裝的過程中能確認到正確唯一的IP地址。
以下為本次安裝的例子,可供參照
#!/usr/bin/env bash
set -o nounset -o errexit
export PATH=/usr/sbin:/usr/bin:$PATH
echo $(ip addr show eth0 | grep -Eo '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' | head -1)

注意點:
在虛擬機器中安裝 或者機器裝有多張網路卡可能會導致上述官方提供的簡單指令碼無法直接使用。如果需要更改,也是eth0的地方改成你自己。 確認方法可以用如下簡單的方法執行一下,如果能夠取得到正確的IP即可。
ip

安裝準備:ssh_key

生成安裝使用者的ssh key,為方便,本文使用root使用者
ssh-keygen

安裝準備:打通ssh通路

使用ssh-copy-id打通ssh通路,安裝過程中需要打通的是bootstrap節點到master和agent的ssh通路。具體使用命令如下:

ssh-copy-id -i 192.168.32.132
ssh-copy-id -i 192.168.32.133

ssh

如果你對ssh的設定很熟悉,完全可以不必使用ssh-copy-id,只需要注意authorized_keys和known_hosts設定好ssh命令列能無需密碼執行即可。DC/OS的安裝的時候會預設的到genconf下面去尋找叫ssh_key的檔案,所以需要把該檔案提前準備好。不然會提示:ssh_key_path: could not find ssh private key: /genconf/ssh_key的錯誤。需要注意的是,使用生成的rsa的祕鑰id_rsa作為安裝時需要使用的key。
key
key的許可權是600,ssh通路設定時候,許可權加大比如設定成666很多時候都回導致不通,這是因為ssh在設計的目的是為了將許可權最小化的思路有關。

Step 1

安裝:生成定製安裝程式

執行命令

dcos_generate_config.sh --genconf

注意:部署到實際環境中希望對使用者動作做進一步限制使用其他使用者是,碰到許可權問題時候加上sudo實施。

執行結果例與分析
[root@host131 dcos]# bash dcos_generate_config.sh --genconf
Extracting image from this script and loading into docker daemon, this step can take a few minutes
dcos-genconf.14509fe1e7899f4395-3a2b7e03c45cd615da.tar
Running mesosphere/dcos-genconf docker with BUILD_DIR set to /root/dcos/genconf

分析:此處會稍微花一點時間,同時Docker需要保證是可用的狀態,因為安裝程式在此處會把mesosphere/dcos-genconf的映象load到docker中
loadimage

====> EXECUTING CONFIGURATION GENERATIONG
省略
Package filename: packages/dcos-config/dcos-config–setup_e51eb828513de2494ec4c1d3ecb8c100f805a098.tar.xz
Generating Bash configuration files for DC/OS
Package filename: packages/dcos-metadata/dcos-metadata–setup_e51eb828513de2494ec4c1d3ecb8c100f805a098.tar.xz
[root@host131 dcos]#
“`
安裝之後的結構
after

Step 2

預安裝所需功能

執行命令:
bash dcos_generate_config.sh –install-prereqs
step2

基本上ssh通路通的話,此處不會有太多問題。不過此種方式官方稱只適合CentOS和RHEL

Step 3

預裝檢查

執行命令:
bash dcos_generate_config.sh –preflight

此處出現最多的問題在於多次安裝,如果已經安裝可能會導致在預裝檢查失敗。這種情況可以使用如下命令進行解除安裝。依然有問題的話手動刪除所有節點安裝過程中安裝的/opt/mesos和/var/lib/zookeeper即可。
bash dcos_generate_config.sh –uninstall

step 3

另外,埠的佔用等等也有可能會產生問題,因為是命令列安裝,可以通過修改步驟1種自動生成出來的genconf/serve/dcos_install.sh來解決,因為在此處所有的port號都hardcoding出來了,可以自行修改以避免衝突,後續的DC/OS在此處一定會有一些更加人性化的改善不至於讓它的使用者去自行修改安裝程式。

Step 4

安裝

執行命令:
bash dcos_generate_config.sh –deploy

這裡寫圖片描述

注意事項:
請務必確保如下兩點:
- firewalld必須關閉
- nginx必須在docker中執行起來

nginx執行命令:

docker run -d -p 8848:80 -v $PWD/genconf/serve:/usr/share/nginx/html:ro nginx
請到genconf的父目錄去執行該命令,否則傳給nginx的Image的-v不正確

使用docker ps確認

這裡寫圖片描述
blob.png

Step 5

確認服務執行狀態

執行命令:
bash dcos_generate_config.sh –postflight

這裡寫圖片描述

Step 4的安裝沒有問題的話,此處基本不會有問題。

Step 6

確認Zookeeper

連線URL:
http://:8181/exhibitor/v1/ui/index.html
這裡寫圖片描述

Step 7

確認DC/OS圖形介面

連線URL:
http:///

此處容易出現的問題點:DC/OS圖形介面無法啟動起來
DC/OS採用Systemd來部署他自己的應用,可以使用如下命令確認和排查問題。
- journalctl -u dcos-mesos-master -b
- systemctl list-unit-files |grep dcos
- systemctl status 服務名稱(結合journalctl查的內容確認)
-
這裡寫圖片描述

Google/Github/Microsoft的任何方式的登陸通過即可,赤裸的植入式廣告.
然後就可以看到DC/OS的介面了

Dashboard

這裡寫圖片描述

Service

這裡寫圖片描述

Nodes

你的DataCenter現在還空空如也
blob.png

System

這裡寫圖片描述
當前有24個Components,都是健康的,unhealthy的是0個,看起來一切正常的樣子

通過Organization的介面新增使用者

這裡寫圖片描述

管理Repositories

這裡寫圖片描述

總結

雖然整體來說安裝稍微繁瑣,並且也有一些小問題,比如port一旦被佔用的話就只好修改安裝檔案,甚至圖形版即使修改也無法繼續,但是由於仍然是Earlyaccess版本,所以還是非常期待其正式版本的釋出.

相關文章