1. 程式人生 > >Marathon+Mesos+Docker部署

Marathon+Mesos+Docker部署

中心 devel ear master search pre 穩定 config 3.4

Marathon

馬拉松是一個生產級的容器編排平臺,用於中間層的數據中心操作系統(DC/OS)和Apache Mesos.為部署提供提供REST API服務,有授權和SSL、配置約束,通過HAProxy實現服務發現和負載平衡。

Apache Mesos

Apache Mesos 是一款基於多資源(內存、CPU、磁盤、端口等)調度的開源群集管理套件,能時容錯和分布式關系系統更加容易使用。
Apache Mesos 采用了Master/Slave 結構來簡化設計,將Master 做的盡可能輕量級別僅保存了各種計算框架(Framework)和Mesos Slace 的狀態詳細。Mesos Master 充當與全局資源調度角色,采用某種策略算法將摸一個Slace上的空閑資源來分配給某一個Framewok 而且種Framework 則是通過自己的調度器向Master註冊進行接入。

zookeeper

zookeeper 是一個開遠市分布式應用協調服務可以為分布式應用提一致性服務,提供的功能包裹:配置維護,域名服務,分布式同步。組服務等。
zookeeper 的目標就是講復雜易出錯的關鍵服務進行分裝,提供給用戶使用性能高效功效穩定簡單易用的操作系統
技術分享圖片

部署環境

主機名 IP地址 安裝包
master 192.168.10.38 jdk-8u91-linux-x64.tar.gz mesos-0.25.tar.gz zookeeper-3.4.6.tar.gz marathon-0.15.2.tar.gz
master1 192.168.10.41 jdk-8u91-linux-x64.tar.gz mesos-0.25.tar.gz zookeeper-3.4.6.tar.gz
masert2 192.168.10.39 jdk-8u91-linux-x64.tar.gz mesos-0.25.tar.gz zookeeper-3.4.6.tar.gz
slaver1 192.168.10.42 jdk-8u91-linux-x64.tar.gz mesos-0.25.tar.gz docker
slaver2 192.168.10.46 jdk-8u91-linux-x64.tar.gz mesos-0.25.tar.gz docker

配置部署

cat /etc/redhat-release   //查看Linux版本
uname -r   //查看內核版本(需要內核3.10以上)
tar zxvf jdk-8u91-linux-x64.tar.gz -C /usr/local/ 解壓jdk包

mv jdk1.8.0_91/ java

vim /etc/profile  #配置JAVA環境
export JAVA_HOME=/usr/local/java
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/tools.jar
source/etc/profile #立即生效

yum groupinstall -y "Development Tools" #安裝開發工具

wget http://repos.fedorapeople.org/repos/dchen/apache-maven/epel-apache-maven.repo -O /etc/yum.repos.d/epel-apache-maven.repo #添加apache-maven#為Mesos提供項目管理和構建自動換工具的支持

yum install -y apache-maven python-devel zlib-devel libcurl-devel openssl-devel cyrus-sasl-devel cyrus-sasl-md5 apr-devel apr-util-devel subversion-devel #添加依賴包

vim /etc/yum.repos.d/wandisco-svn.repo #配置WANdiscoSVN網絡源

[WANdiscoSVN]
name=WANdisco SVN Repo 1.9
enabled=1
baseurl=http://opensource.wandisco.com/centos/7/svn-1.9/RPMS/$basearch/
gpgcheck=1
gpgkey=http://opensource.wandisco.com/RPM-GPG-KEY-WANdisco

vim /etc/profile #配置Mesos環境變量

export MESOS_NATIVE_JAVA_LIBRARY=/usr/local/lib/libmesos.so
export MESOS_NATIVE_LIBRARY=/usr/local/lib/libmesos.so

source /etc/profile

wget http://mirrors.cnnic.cn/apache/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz
#下載地址使用迅雷添加鏈接從http復制到結尾在迅雷下載鏈接粘貼

wget http://www.apache.org/dist/mesos/0.25.0/mesos-0.25.0.tar.gz
#下載地址使用迅雷添加鏈接從http復制到結尾在迅雷下載鏈接粘貼

tar zxvf mesos-0.25.0.tar.gz -C /opt/
mv mesos-0.25.0/ /root/
cd /root/mesos-0.25.0
mkdir build
cd build/
../configure 

make              //等待時間長(在線狀態)
make check
make install

systemctl stop firewalld.service 關閉防火墻 
systemctl disable firewalld.service 實現開機不啟動
setenforce 0 

以上操作在剩下的4臺服務器執行

配置mesos-master

hostnamectl set-hostname master  #設置主機名稱
hostnamectl set-hostname master1 #設置主機名稱
hostnamectl set-hostname master2 #設置主機名稱
vim /etc/hosts (所有主機)
192.168.10.38 master
192.168.10.41 master1
192.168.10.39 master2
192.168.10.42 slave
192.168.10.46 slave1
重啟服務器
scp /etc/hosts 192.168.10.15:/etc/hosts  #推送hosos文件到所有主機上並且修改對應的主機名稱
ln -sf /root/mesos-0.25.0/build/bin/mesos-master.sh /usr/sbin/mesos-master
mesos-master --work_dir=/home/q/mesos/data --log_dir=/home/q/mesos/logs --no-hostname_lookup --ip=0.0.0.0  創建文件 運行任意網段進行訪問

技術分享圖片

配置mesos-slave

hostnamectl set-hostname slave  #修改主機名
hostnamectl set-hostname slave1  #修改主機名
cat /erc/hosos  #由於在單臺mesos推送來的配置文件
192.168.10.38 master
192.168.10.41 master1
192.168.10.39 master2
192.168.10.42 slave
192.168.10.46 slave1
ln -sf /root/mesos-0.25.0/build/bin/mesos-slave.sh /usr/sbin/mesos-slave   #創建軟連接方便使用命名
yum install docker -y   #安轉docker
systemctl start docker.service
systemctl enable docker.service
mesos-slave --containerizers="mesos,docker" --work_dir=/home/q/mesos/data --log_dir=/home/q/mesos/logs --master=192.168.10.38:5050 --no-hostname_lookup --ip=0.0.0.0 創建文件 指向master 運行任意網段進行訪問

當三臺mesos服務器運行啟動mesos-master 後生在home目錄下創建了q/目錄後在進行配置zookeeper

配置zookeeper

tar zxvf zookeeper-3.4.6.tar.gz -C /home/q/
# 當三臺mesos服務器運行啟動mesos-master後生在home目錄下創建了q/目錄後在進行配置zookeeper

cd zookeeper-3.4.6/
mv conf/zoo_sample.cfg conf/zoo.cfg
vim zoo.cfg #修改主配置文件
dataDir=/home/q/zookeeper-3.4.6/data   #修改位置 數據存放位置
dataLogDir=/home/q/zookeeper-3.4.6/datalog  #數據日誌文件
server.1=192.168.10.38:2888:3888  #指定三臺master服務器 信息交換端口 選舉端口
server.2=192.168.10.41:2888:3888
server.3=192.168.10.39:2888:3888

傳輸給其他master並且在/home/q/zookeeper-3.4.6 下創建 創建數據存放日誌和數據日誌文件和server 序列
技術分享圖片
技術分享圖片


#在master主機上操作(/home/q/zookeeper-3.4.6/中)
mkdir data datalog 
echo 1 > data/myid server 序列
cat data/myid

#在master1主機上操作(/home/q/zookeeper-3.4.6/中)
mkdir data datalog 
echo 2 > data/myid
cat data/myid 

#在master2主機上操作(/home/q/zookeeper-3.4.6/中)
mkdir data datalog 
echo 3 > data/myid
cat data/myid

#在master主機上啟動服務
./bin/zkServer.sh start conf/zoo.cfg 

#在master1主機上啟動服務
./bin/zkServer.sh start conf/zoo.cfg

#在master2主機上啟動服務
./bin/zkServer.sh start conf/zoo.cfg

#查看leader
./bin/zkServer.sh status

[root@master zookeeper-3.4.6]# ./bin/zkServer.sh start conf/zoo.cfg 
JMX enabled by default
Using config: conf/zoo.cfg
Starting zookeeper ... STARTED
[root@master zookeeper-3.4.6]# ./bin/zkServer.sh status #查看狀態
JMX enabled by default
Using config: /home/q/zookeeper-3.4.6/bin/../conf/zoo.cfg
Mode: follower

[root@master1 zookeeper-3.4.6]# ./bin/zkServer.sh start conf/zoo.cfg 
JMX enabled by default
Using config: conf/zoo.cfg
Starting zookeeper ... STARTED
[root@master1 zookeeper-3.4.6]# ./bin/zkServer.sh status #產看狀態
JMX enabled by default
Using config: /home/q/zookeeper-3.4.6/bin/../conf/zoo.cfg
Mode: leader   #此時192.168.10.41 就被選舉為老大

[root@master2 zookeeper-3.4.6]# ./bin/zkServer.sh start conf/zoo.cfg
JMX enabled by default
Using config: conf/zoo.cfg
Starting zookeeper ... STARTED
[root@master2 zookeeper-3.4.6]# ./bin/zkServer.sh status #查看狀態
JMX enabled by default
Using config: /home/q/zookeeper-3.4.6/bin/../conf/zoo.cfg
Mode: standalone

#master
mesos-master --work_dir=/home/q/mesos/data --log_dir=/home/q/mesos/logs --no-hostname_lookup --ip=0.0.0.0 --zk=zk://192.10.38:2181/mesos --quorum=2

#master1
mesos-master --work_dir=/home/q/mesos/data --log_dir=/home/q/mesos/logs --no-hostname_lookup --ip=0.0.0.0 --zk=zk://192.10.175.41:2181/mesos --quorum=2

#master2
mesos-master --work_dir=/home/q/mesos/data --log_dir=/home/q/mesos/logs --no-hostname_lookup --ip=0.0.0.0 --zk=zk://192.168.10.39:2181/mesos --quorum=2

#slave
mesos-slave --containerizers="mesos,docker" --work_dir=/home/q/mesos/data --log_dir=/home/q/mesos/logs --master=zk://192.168.10.38:2181,192.168.10.41:2181,192.168.10.39:2181/mesos --no-hostname_lookup --ip=0.0.0.0

技術分享圖片
技術分享圖片
技術分享圖片

部署Marathon


wget http://downloads.mesosphere.com/marathon/v0.15.2/marathon-0.15.2.tgz
#下載地址使用迅雷添加鏈接從http復制到結尾在迅雷下載鏈接粘貼
tar zxvf marathon-0.15.2.tgz -C /home/q/

./bin/start --hostname 192.168.175.132 --master zk://192.168.10.38:2181,192.168.10.41:2181,192.168.10.39:2181/mesos --http_address 0.0.0.0

測試
http://192.168.10.42:8080/

技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片

Marathon+Mesos+Docker部署