配置多mesos-master環境實戰
阿新 • • 發佈:2018-08-21
可能 公有 work clas configure linu arc 套件 centos Apache Mesos概述
Apache Mesos是一款基於多資源調度的開源集群管理套件,使容錯和分布式系統更加容易使用實現,采用Master/Slave結構簡化設計,將Master盡可能輕量級,進保存了Mesos Slave的狀態信息
常見集群管理工具
工具 | 特點 | 優勢 |
---|---|---|
Apache Mesos | 需要獨立部署mesos-slave進程;依賴framework的功能;可管理docker容器;成本較高 | 應為經過許多互聯網公司的大規模實踐,穩定性具有保障 |
Docker Swarm | Docker 官方群集工具,需要Docker deamon 啟用tcp端口學習;Swarm的命令兼容Docker;學習成本非常低 | 公有雲環境Machine 和 Swarm 搭配使用效率更高 |
Google Kubernetes | 完全DOcker化的管理工具,功能叠代非常快;群集管理能力比mesos稍差 | 功能模塊集成度高 |
Apache Mesos工作原理
Apache Mesos配置實戰
實驗環境:
實驗環境 | IP地址 | 內核版本3.10以上 |
---|---|---|
master | 192.168.10.157 | 3.10.0-693.el7.x86_64 |
master1 | 192.168.10.132 | 3.10.0-693.el7.x86_64 |
master2 | 192.168.10.133 | 3.10.0-693.el7.x86_64 |
slave1 | 192.168.10.135 | 3.10.0-693.el7.x86_64 |
slave2 | 192.168.10.134 | 3.10.0-693.el7.x86_64 |
安裝Apache Mesos
1:配置Java環境
tar zxvf jdk-8u91-linux-x64.tar.gz -C /usr/local/ cd /usr/local mv jdk1.8.0_91/ java #在/etc/profile配置環境變量 vim /etc/profile 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 //加載立即生效
2:安裝相關環境
(1)安裝開發工具
yum groupinstall -y "Development Tools"
//安裝開發工具的時候可能會出現沒有相關的軟件包這時候要根據報錯提示先安裝相關依賴包
(2)添加Apache-maven源
wget http://repos.fedorapeople.org/repos/dchen/apache-maven/epel-apache-maven.repo -O /etc/yum.repos.d/epel-apache-maven.repo
(3)安裝相關依賴包
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
(4)配置WANdiscoSVN網絡源
vim /etc/yum.repos.d/wandisco-svn.repo
[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
3:配置Mesos環境變量
vim /etc/profile
export MESOS_NATIVE_JAVA_LIBRARY=/usr/local/lib/libmesos.so
export MESOS_NATIVE_LIBRARY=/usr/local/lib/libmesos.so
source /etc/profile
4:構建Mesos
編譯安裝Mesos
wget http://www.apache.org/dist/mesos/0.25.0/mesos-0.25.0.tar.gz //下載軟件包
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
由於安裝mesos用時較長,而實驗每臺主機都需安裝mesos,所以建議克隆虛擬機
配置多臺mesos-master
hostnamectl set-hostname master //修改主機名
#在hosts文件裏面寫入三臺master 兩臺slave的主機IP地址
vim /etc/hosts
192.168.10.157 master
192.168.10.132 master1
192.168.10.133 master2
192.168.10.135 slave1
192.168.10.134 slave2
#可以直接用scp發送至另外四臺服務器
scp /etc/profile 192.168.10.132:/etc/profile //其他主機類似
#建立軟連接
ln -sf /root/mesos-0.25.0/build/bin/mesos-slave.sh /usr/sbin/mesos-slave
mesos-slave配置
此前應已經安裝完mesos,並修改了主機名和/etc/hosts文件
ln -sf /root/mesos-0.25.0/build/bin/mesos-slave.sh /usr/sbin/mesos-slave
//建立軟鏈接
//安裝docker並開啟
yum install docker -y
systemctl start docker.servicev #運行
systemctl enable docker.service #開機自啟動
配置多mesos-master環境
在三個Mesos-master節點上安裝Zookeeper
tar zxvf zookeeper-3.4.6.tar.gz -C /home/q/
cd /home/q/zookeeper-3.4.6/conf/
mv zoo_sample.cfg 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.157:2888:3888
server.2=192.168.10.132:2888:3888
server.3=192.168.10.133:2888:3888
#按照zoo.cfg配置文件的swerver1、2、3修改每臺master的myid
//在master主機上操作(/opt/home/zookeeper-3.4.6/中)
mkdir data datalog
echo 1 > data/myid
cat data/myid
//在master1主機上操作(/opt/home/zookeeper-3.4.6/中)
mkdir data datalog
echo 2 > data/myid
cat data/myid
//在master2主機上操作(/opt/home/zookeeper-3.4.6/中)
mkdir data datalog
echo 3 > data/myid
cat data/myid
啟動zookeeper
//在master主機上啟動服務
./bin/zkServer.sh start conf/zoo.cfg
//查看zookeeper狀態
./bin/zkServer.sh status
//在master1主機上啟動服務
./bin/zkServer.sh start conf/zoo.cfg
//查看zookeeper狀態
./bin/zkServer.sh status
//在master2主機上啟動服務
./bin/zkServer.sh start conf/zoo.cfg
//查看zookeeper狀態
./bin/zkServer.sh status
啟動master服務
先啟動leader服務器上的zookeeper,這是采用雙選舉機制先zookeeper選舉出個leader然後mesos第一臺啟動默認就是leader
//master1
mesos-master --work_dir=/opt/home/mesos/data --log_dir=/opt/home/mesos/logs --no-hostname_lookup --ip=0.0.0.0 --zk=zk://192.168.10.132:2181/mesos --quorum=2
//master
mesos-master --work_dir=/opt/home/mesos/data --log_dir=/opt/home/mesos/logs --no-hostname_lookup --ip=0.0.0.0 --zk=zk://192.168.10.157:2181/mesos --quorum=2
//master2
mesos-master --work_dir=/opt/home/mesos/data --log_dir=/opt/home/mesos/logs --no-hostname_lookup --ip=0.0.0.0 --zk=zk://192.168.10.133:2181/mesos --quorum=2
啟動mesos-slave
slave1
mesos-slave --containerizers="mesos,docker" --work_dir=/opt/home/mesos/data --log_dir=/opt/home/mesos/logs --master=zk://192.168.10.157:2181,192.168.10.132:2181,192.168.10.133:2181/mesos --no-hostname_lookup --ip=0.0.0.0
slave2
mesos-slave --containerizers="mesos,docker" --work_dir=/opt/home/mesos/data --log_dir=/opt/home/mesos/logs --master=zk://192.168.10.157:2181,192.168.10.132:2181,192.168.10.133:2181/mesos --no-hostname_lookup --ip=0.0.0.0
此時用網頁訪問http://192.168.10.132:5050
若訪問的IP不是leader的IP則會向leaderIP跳轉
兩臺從服務器的信息
配置多mesos-master環境實戰