mesos + marathon + docker部署

#mesos + marathon + docker部署java

##架構設計 mesos + marathon均部署在CentOS7上,角色分配以下:python

Name Address OS Role
docker1 10.10.10.11 CentOS7 zookeeper、marathon、mesos-master、mesos-slave、docker server
docker2 10.10.10.12 CentOS7 zookeeper、mesos-slave、docker server

##環境準備 ###修改hosts 將下列內容添加到兩臺服務器的/etc/hosts/文件中git

10.10.10.11 docker1
10.10.10.12 docker2

###安裝依賴github

wget http://repos.fedorapeople.org/repos/dchen/apache-maven/epel-apache-maven.repo -O /etc/yum.repos.d/epel-apache-maven.repo
yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel java-1.8.0-openjdk-headless
yum install -y apache-maven python-devel java-1.7.0-openjdk-devel zlib-devel libcurl-devel openssl-devel cyrus-sasl-devel cyrus-sasl-md5 apr-devel subversion-devel apr-util-devel
yum groupinstall -y "Development Tools"

##zookeeper部署 ###zookeeper配置 通常狀況下,建議zookeeper服務器數量爲奇數,這裏因爲資源有限,用兩臺作演示。web

在兩臺服務器上分別安裝zookeeper在/usr/local/zookeeper-3.4.6目錄下。docker

編輯配置文件/usr/local/zookeeper-3.4.6/conf/zoo.cfg,內容以下:shell

tickTime=2000
initLimit=10
syncLimit=5
dataDir=/usr/local/zookeeper-3.4.6/data
clientPort=2181
server.1=docker1:2888:3888
server.2=docker2:2888:3888

docker1上執行:apache

echo 1 > /usr/local/zookeeper-3.4.6/data/myid

docker2上執行:bootstrap

echo 2 > /usr/local/zookeeper-3.4.6/data/myid

###啓動zookeeper 在兩臺服務器上執行:vim

sh /usr/local/zookeeper-3.4.6/bin/zkServer.sh start

檢查服務運行狀態

/usr/local/zookeeper-3.4.6/bin/zkServer.sh status

##mesos部署 ###下載mesos

wget http://www.apache.org/dist/mesos/0.25.0/mesos-0.25.0.tar.gz
#解壓:
tar -zxf mesos-0.25.0.tar.gz

###安裝

cd /usr/local/mesos-0.25.0/
# Bootstrap
./bootstrap

# Configure and build.
mkdir build
cd build
../configure --with-webui --with-included-zookeeper
make
make install

###啓動腳本

vim /usr/local/mesos-0.25.0/build/mesos.sh

添加下列內容:

#!/bin/bash
cd $(dirname $0)

lan_ip=輸入本機IP地址

log_dir="/apps/mesos/logs"
work_dir="/apps/mesos/master"
master_log="/apps/mesos/mesos-master.log"
slave_log="/apps/mesos/mesos-slave.log"
if [ $# -eq 0 ];then
    echo 'Usage: mesos.sh {start-master|stop-master|restart-master|start-slave|stop-slave|restart-slave}'
    exit 110
fi
case $1 in
    start-master)
        ./bin/mesos-master.sh  --ip=$lan_ip --zk=zk://docker1:2181,docker2:2181/mesos   --work_dir=$work_dir  --log_dir=$log_dir --quorum=1  > $master_log 2>&1 &
        master_pid=`ps aux | grep mesos-master | grep -v grep | awk '{print $2}'`
        echo "masos-master is running, pid is $master_pid "
        ;;
    stop-master)
        master_pid=`ps aux | grep mesos-master | grep -v grep | awk '{print $2}'`
        kill $master_pid
        echo "masos-master is down"
        ;;
    restart-master)
        master_pid=`ps aux | grep mesos-master | grep -v grep | awk '{print $2}'`
        kill $master_pid
        echo "masos-master is stopping"
        sleep 2
        ./bin/mesos-master.sh  --ip=$lan_ip --zk=zk://docker1:2181,docker2:2181/mesos   --work_dir=$work_dir  --log_dir=$log_dir --quorum=1  > $master_log 2>&1 &
        master_pid=`ps aux | grep mesos-master | grep -v grep | awk '{print $2}'`
        echo "masos-master is running, pid is $master_pid "
        ;;
    start-slave)
        ./bin/mesos-slave.sh --ip=$lan_ip --containerizers=mesos,docker --master=zk://docker1:2181,docker2:2181/mesos  --log_dir=$log_dir > $slave_log 2>&1 &
        slave_pid=`ps aux | grep mesos-slave | grep -v grep | awk '{print $2}'`
        echo "masos-slave is running, pid is $slave_pid "
        ;;
    stop-slave)
        slave_pid=`ps aux | grep mesos-slave | grep -v grep | awk '{print $2}'`
        kill $slave_pid
        echo "masos-slave is down"
        ;;
    restart-slave)
        slave_pid=`ps aux | grep mesos-slave | grep -v grep | awk '{print $2}'`
        kill $slave_pid
        echo "masos-slave is stopping"
        sleep 2
        ./bin/mesos-slave.sh --ip=$lan_ip --containerizers=mesos,docker --master=zk://docker1:2181,docker2:2181/mesos  --log_dir=$log_dir > $slave_log 2>&1 &
        slave_pid=`ps aux | grep mesos-slave | grep -v grep | awk '{print $2}'`
        echo "masos-slave is running, pid is $slave_pid "
        ;;
    *)
        echo 'Usage: mesos.sh {start-master|stop-master|restart-master|start-slave|stop-slave|restart-slave}'
        exit 110
esac

###啓動mesos 在docker1上執行:

sh /usr/local/mesos-0.25.0/build/mesos.sh start-master
sh /usr/local/mesos-0.25.0/build/mesos.sh start-slave

docker2上執行:

sh /usr/local/mesos-0.25.0/build/mesos.sh start-slave

###檢測mesos啓動狀態 在瀏覽器打開:http://10.10.10.11:5050,查看服務運行是否正常

##marathon部署 ###下載marathon 下載地址:https://mesosphere.github.io/marathon/ 總提供的URL下載最新版本的marathon到/usr/local/目錄下,並解壓。 ###啓動腳本

vim /usr/local/marathon-0.11.1/marathon.sh
#!/bin/bash
cd $(dirname $0)
if [ $# -eq 0 ];then
    echo 'Usage: marathon.sh {start|stop|restart}'
    exit 110
fi
PID=/apps/marathon/marathon.pid
case $1 in
    start)
        MESOS_NATIVE_JAVA_LIBRARY=/usr/local/mesos-0.25.0/build/src/.libs/libmesos-0.25.0.so   ./bin/start --master zk://docker1:2181,docker2:2181/mesos --zk zk://docker1:2181,docker2:2181/marathon > /niub/marathon/marathon.log 2>&1 &
        echo $! > $PID
        echo "marathon is running,pid is $!"
        ;;
    stop)
        kill `cat $PID`
        if [ $? -eq 0 ];then
            echo "marathon is stopped"
        else
            echo "error,marathon is not stopped"
        fi
        ;;
    restart)
        kill `cat $PID`
        if [ $? -eq 0 ];then
            echo "marathon is stopped"
        else
            echo "error,marathon is not stopped"
        fi
        sleep 3
        MESOS_NATIVE_JAVA_LIBRARY=/usr/local/mesos-0.21/lib/libmesos-0.21.0.so   ./bin/start --master zk://docker1:2181,docker2:2181/mesos --zk zk://docker1:2181,docker2:2181/marathon > /niub/marathon/marathon.log 2>&1 &
        echo $! > marathon.pid
        echo "marathon is running,pid is $!"
        ;;
    *)
        echo 'Usage: marathon.sh {start|stop|restart}'
        exit 110
esac

###啓動marathon

sh /usr/local/marathon-0.11.1/marathon.sh start

###檢測服務運行狀態: URL: http://10.10.10.11:8080

##docker部署 略

相關文章
相關標籤/搜索