馬拉松是一個生產級的容器編排平臺,用於中間層的數據中心操做系統(DC/OS)和Apache Mesos.爲部署提供提供REST API服務,有受權和SSL、配置約束,經過HAProxy實現服務發現和負載平衡。java
Apache Mesos
Apache Mesos 是一款基於多資源(內存、CPU、磁盤、端口等)調度的開源羣集管理套件,能時容錯和分佈式關係系統更加容易使用。
Apache Mesos 採用了Master/Slave 結構來簡化設計,將Master 作的儘量輕量級別僅保存了各類計算框架(Framework)和Mesos Slace 的狀態詳細。Mesos Master 充當與全局資源調度角色,採用某種策略算法將摸一個Slace上的空閒資源來分配給某一個Framewok 並且種Framework 則是經過本身的調度器向Master註冊進行接入。 pythonzookeeper
zookeeper 是一個開遠市分佈式應用協調服務能夠爲分佈式應用提一致性服務,提供的功能包裹:配置維護,域名服務,分佈式同步。組服務等。
zookeeper 的目標就是講複雜易出錯的關鍵服務進行分裝,提供給用戶使用性能高效功效穩定簡單易用的操做系統
linux
主機名 | 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臺服務器執行算法
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 建立文件 運行任意網段進行訪問
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/目錄後在進行配置zookeeperdocker
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 序列
apache
#在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
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/