Mesos集群编译安装(centos7)
来到官网:http://mesos.apache.org/,选择getting started,选择wget 下载tar包,不用git。
环境准备(官网没说):
一.yum源换成国内的(参考这个网址):http://blog.****.net/lcj200813138020/article/details/46914161
二:升级pytz(解决make时出现的如下报错)
(/usr/bin/mkdir -p python/scheduler/src/mesos/scheduler && cp -pf ../../src/python/scheduler/src/mesos/scheduler/proxy_scheduler.hpp python/scheduler/src/mesos/scheduler/proxy_scheduler.hpp)
test "../.." = ".." || \
(/usr/bin/mkdir -p python/src/mesos && cp -pf ../../src/python/src/mesos/__init__.py python/src/mesos/__init__.py)
Building protobuf Python egg ...
cd ../3rdparty/protobuf-2.6.1/python && \
CC="gcc" \
CXX="g++" \
CFLAGS="-g1 -O0 -Wno-unused-local-typedefs" \
CXXFLAGS="-g1 -O0 -Wno-unused-local-typedefs -std=c++11" \
PYTHONPATH=/root/mesos/build/3rdparty/setuptools-20.9.0 \
/usr/bin/python setup.py build bdist_egg
Traceback (most recent call last):
File "setup.py", line 200, in
"Protocol Buffers are Google's data interchange format.",
File "/usr/lib64/python2.7/distutils/core.py", line 112, in setup
setup_distribution = dist = klass(attrs)
File "/root/mesos/build/3rdparty/setuptools-20.9.0/setuptools/dist.py", line 269, in __init_
self.fetch_build_eggs(attrs['setup_requires'])
File "/root/mesos/build/3rdparty/setuptools-20.9.0/setuptools/dist.py", line 313, in fetch_build_eggs
replace_conflicting=True,
File "/root/mesos/build/3rdparty/setuptools-20.9.0/pkg_resources/__init__.py", line 826, in resolve
dist = best[req.key] = env.best_match(req, ws, installer)
File "/root/mesos/build/3rdparty/setuptools-20.9.0/pkg_resources/__init__.py", line 1085, in best_match
dist = working_set.find(req)
File "/root/mesos/build/3rdparty/setuptools-20.9.0/pkg_resources/__init__.py", line 695, in find
raise VersionConflict(dist, req)
pkg_resources.VersionConflict: (pytz 2012d (/usr/lib/python2.7/site-packages), Requirement.parse('pytz>=2010'))
make[2]: *** [../3rdparty/protobuf-2.6.1/python/dist/protobuf-2.6.1-py2.7.egg] Error 1
make[2]: Leaving directory /root/mesos/build/src'
/root/mesos/build/src'
make[1]: *** [all] Error 2
make[1]: Leaving directory
make: *** [all-recursive] Error 1
解决方法:
先安装pip:
wget "https://pypi.python.org/packages/source/p/pip/pip-1.5.4.tar.gz#md5=834b2904f92d46aaa333267fb1c922bb" --no-check-certificate
tar zxvf pip-1.5.4.tar.gz
cd pip-1.5.4
python setup.py install
(root用户)
pip install pytz --upgrade
(注:我是用的 root用户安装的,其实只要路径指定好,不出现权限问题,不需要root用户也行,我是省事了)
三:按照官网getting started(centos7)编译安装mesos1.4(中间会出现warning,不用管)
首先创建编译目录:mkdir -p /usr/local/mesos/mesos
然后cd /usr/local/mesos
然后 按照官网去wget mesos-1.4.0.tar/gz
剩下的跟着官网走
到../configure 这一步,可以改为../configure --prefix=/usr/local/mesos/mesos,这样手动指定安装目录,避免普通用户安装时出现权限问题。
然后 make 和 make install,如果cpu多的话,可以指定多核运行,make -j4 && make -j4 install (4核)
另外注意make 和make install 运行时间很长,所以用到多核。
然后可以按照官网简单测试,注意: 如果运行mesos-master.sh 和 mesos-slave.sh的时候,ip指定为127.0.0.1,则只能在虚拟机上打开127.0.0.1:5050访问,在windows下输入hostname(eg:slave4:5050),则访问不到,输入具体的ip(eg:192.168.208.184)也不行,因此我们可以在运行时把ip改为192.168.208.184。不能写为slave4,会出错,但是在windos下查看的时候可以用slave4:5050访问到页面。
四:集群配置(单master)
集群:192.168.208.184 运行mesos master,zk
192.168.208.183 运行mesos slave,zk
192.168.208.185 运行mesos slave,zk
1.完全编译好的mesos会有如下目录:
本文编译路径为:/usr/local/mesos/mesos
[[email protected] mesos]# pwd
/usr/local/mesos/mesos
[[email protected] mesos]# ls
bin etc include lib libexec sbin share
查看两个主要目录:sbin etc/mesos
[[email protected] mesos]# cd sbin
[[email protected] sbin]# ls
mesos-agent mesos-master mesos-start-agents.sh mesos-start-masters.sh mesos-stop-agents.sh mesos-stop-masters.sh
mesos-daemon.sh mesos-slave mesos-start-cluster.sh mesos-start-slaves.sh mesos-stop-cluster.sh mesos-stop-slaves.sh
[[email protected] sbin]# cd ..
[[email protected] mesos]# cd etc/mesos/
[[email protected] mesos]# ls
mesos-master-env.sh.template mesos-deploy-env.sh.template mesos-agent-env.sh.template mesos-slave-env.sh.template
注:如果目录如上,且文件如上,证明你已经编译成功了,编译过程中正常只会出现WANNING,不会出现ERROR!并且这些文件是出现在你指定的 --prefix=/usr/local/mesos/mesos 下面的,不是你的解压完后的mesos-1.4.0下面。
2.开始配置集群(这一步都是在 /usr/local/mesos/mesos/etc/mesos下进行的)
#cd /usr/local/mesos/mesos/etc/mesos
#cat mesos-agent-env.sh.template > mesos-agent-env.sh
#cat mesos-deploy-env.sh.template > mesos-deploy-env.sh (这一步可以不做,因为做完也不修改他,默认就行)
#cat mesos-master-env.sh.template > mesos-master-env.sh
#cat mesos-slave-env.sh.template > mesos-slave-env.sh (其实这一步也可以不做,因为到后面他是直接复制mesos-agent-env.sh的)
(1)配置master
#vim mesos-master-env.sh
添加如下:
export MESOS_log_dir=/usr/local/mesos/mesos/log#设置日志目录,如果不设置,默认不会产生log(自动会创建,下面
的work_dir一样)
export MESOS_work_dir=/usr/local/mesos/mesos/master#设置work目录,存放元数据的目录,会存放一些运行信息
export MESOS_ip=192.168.208.184#设置IP,注意跟测试运行一样,若设置为127.0.0.1,windows输入192.168.208.184:5050会访问不到
export MESOS_port=5050
#设置PORT,默认是5050,端口冲突时修改它
export MESOS_CLUSTER=wkz #设置集群名称
export MESOS_hostname=slave4
#设置master hostname,
export MESOS_logging_level=INFO
#设置日志级别
export MESOS_offer_timeout=60secs #设置offer的超时时间
export MESOS_ZK=zk://slave3:2181,slave4:2181,slave5:2181/mesos#设置zk集群,高可用时指定zk,本群测试用只有一个master,若多个master,zk会起到mesos
ha作用(个人理解,没怎么查)
export MESOS_quorum=1#设置master的最少数量,若为2则maste机器数量少于此2不行。
# export MESOS_agent_ping_timeout=15 # 设置ping 超时时间,默认15s
# export MESOS_allocation_interval=1 # 设置资源 allocation间隔,默认1s
(2)配置agent(slave)
#vim mesos-agent-env.sh
# This file contains environment variables that are passed to mesos-agent.
# To get a description of all options run mesos-agent --help; any option
# supported as a command-line option is also supported as an environment
# variable.
# You must at least set MESOS_master.
# The mesos master URL to contact. Should be host:port for
# non-ZooKeeper based masters, otherwise a zk:// or file:// URL.
export MESOS_master=192.168.208.184:5050
# Other options you're likely to want to set:
# export MESOS_log_dir=/var/log/mesos
# export MESOS_work_dir=/var/run/mesos #存放framework工作目录的目录路径(默认:
/tmp/mesos)
# export MESOS_isolation=cgroups
export MESOS_ip=192.168.208.184#注意此处写slave主机的ip
export MESOS_port=5051
#slave默认端口5051
export MESOS_hostname=slave4 #注意此处写slave主机的hostname
export MESOS_log_dir=/usr/local/mesos/mesos/log #日志路径,自动创建
export MESOS_work_dir=/usr/local/mesos/mesos/agent #slave目录,会存放一些运行信息,自动创建
export MESOS_logging_level=INFO#日志等级
export MESOS_isolation=cgroups# 隔离机制
(3)然后复制到mesos-slave-env.sh
#cp mesos-agent-env.sh mesos-slave-env.sh
至于mesos-deploy-env.sh:该文件包含了部署脚本运行的环境变量。只要从模版文件复制过来即可,不需要添加其他参数
(4)创建masters文件
#vim masters
slave4 (写ip也行)
(5)创建slaves文件
#vimslaves
slave3
slave4
(6)一切完成后,确认一下所有文件
[[email protected]
mesos]# ls
masters mesos-master-env.sh.template
mesos-agent-env.sh mesos-slave-env.sh
mesos-agent-env.sh.template mesos-slave-env.sh.template
mesos-deploy-env.sh (可以没有,我是做了这一步) slaves
mesos-deploy-env.sh.template zookeeper.out
mesos-master-env.sh
(7)最后一步,修改/usr/local/mesos/mesos/sbin/mesos-daemon.sh
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 11211
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n)1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 11211
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
3.集群分发
(1)首先配置三台机器间的互相免密,略
(2)在slave3,和slave5上,创建 mkdir /usr/local/mesos
(3) 分发编译后并且配置好的mesos给另外两台机器(注意路径)
#scp -r /usr/local/mesos/mesos slave3:/usr/local/mesos/
#scp -r /usr/local/mesos/mesos slave5:/usr/local/mesos/
(4)软件环境:jdk1.8,zk,......
软件环境准备对于刚装好好的centos7来说只需安装一个zookeeper就行,eg:mesos-1.4.0对jdk的要求为1.8,但centos7自带......
4.启动集群
(1)启动zk,三台机器都启动:
(2)在slave4上
# cd /usr/local/mesos/mesos/sbin/
# sh mesos-start-cluster.sh
或者:
vim ~/.bashrc
添加如下:
export MESOS_HOME=/usr/local/mesos/mesos
export PATH=${PATH}:${MESOS_HOME}/sbin:${MESOS_HOME}/bin
注:这块可以写为:$MESOS_HOME,即不加花括号"{ }"
#source ~/.bashrc
然后直接执行:mesos-start-cluster.sh
(3)查看进程
[[email protected]slave4 mesos]# ps -ef | grep mesos
root 74618 1 1 16:58 ? 00:01:50 /usr/local/mesos/mesos/sbin/mesos-master
root 75859 70073 0 18:51 pts/0 00:00:00 grep --color=auto mesos
[[email protected]slave5 mesos]# ps -ef | grep mesos
root 21323 1 0 01:58 ? 00:01:03 /usr/local/mesos/mesos/sbin/mesos-agent
root 24062 12285 0 03:51 pts/0 00:00:00 grep --color=auto mesos
[[email protected]slave3 mesos]# ps -ef | grep mesos
root 32249 1 1 16:58 ? 00:01:09 /usr/local/mesos/mesos/sbin/mesos-agent
root 33455 20192 0 18:51 pts/0 00:00:00 grep --color=auto mesos
5.查看页面
在windos浏览器下输入:
http://slave4:5050
或者:
http://192.168.208.184:5050
图片:
五:Mesos-HA
集群:192.168.208.184 运行mesos master,mesos slave,zk
192.168.208.183 运行mesos master,mesos slave,zk
192.168.208.185 运行mesos master,mesos slave,zk
注:由于虚拟机有限,我把master和slave放到了一台机器上,更好的选择是分别放到不同机器上。
[[email protected] mesos]# cat masters
slave3
slave4
slave5
[[email protected] mesos]# cat slaves
slave3
slave4
slave5
(2)配置mesos-master-env.sh
MESOS_worker_dir:存放元数据的目录,如果对配置文件修改后,可能需要删除该目录下的文件,然后再重新启动。之前启动时发现有问题,删除该目录中的数据,重启后,运行正常(我出现了这个问题,删除后正常启动),但删除该目录下的文件需要谨慎,会使你元数据丢失。MESOS_quorum:
根据mesos官方中文手册解释:
https://mesos-cn.gitbooks.io/mesos-cn/content/document/runing-Mesos/Configuration.html
或者:http://www.phperz.com/article/15/1205/172995.html(上面的 好像不好使了)
此参数意义在于:使用基于 replicated-Log 的注册表时,复制的个数。 此值需要设置为masters总数量的一半以上,也就是:quorum
> (number of masters)/2
。 注意:单机模式下不需要设置此参数。(非HA模式)
这个参数在HA中是必不可少的,Master的个数最好是奇数个的,而MESOS_quorum这个参数需要根据Mesos的Master的个数而设定,如
如果你有1个master,MESOS_quorum=1
如果你有3个master,MESOS_quorum=2
如果你有5个master,MESOS_quorum=3
如果你设置成2个master,MESOS_quorum=2(我没尝试)或者有2个master,MESOS_quorum=1,这样启动后,当Active 的 Master挂掉后,将无法实现Standby的Master切换成Active。这就是为什么我在这里采用3个master,以及MESOS_quorum设为2的原因。
[[email protected]slave4 mesos]# cat mesos-master-env.sh
# This file contains environment variables that are passed to mesos-master.
# To get a description of all options run mesos-master --help; any option
# supported as a command-line option is also supported as an environment
# variable.
# Some options you're likely to want to set:
# export MESOS_log_dir=/var/log/mesos
export MESOS_log_dir=/usr/local/mesos/mesos/log
export MESOS_work_dir=/usr/local/mesos/mesos/master
export MESOS_ip=192.168.208.184
export MESOS_port=5050
export MESOS_CLUSTER=wkz
export MESOS_hostname=slave4
export MESOS_logging_level=INFO
export MESOS_offer_timeout=60secs
export MESOS_ZK=zk://slave3:2181,slave4:2181,slave5:2181/mesos
export MESOS_quorum=2
[[email protected]slave5mesos]# cat mesos-master-env.sh
# This file contains environment variables that are passed to mesos-master.
# To get a description of all options run mesos-master --help; any option
# supported as a command-line option is also supported as an environment
# variable.
# Some options you're likely to want to set:
# export MESOS_log_dir=/var/log/mesos
export MESOS_log_dir=/usr/local/mesos/mesos/log
export MESOS_work_dir=/usr/local/mesos/mesos/master
export MESOS_ip=192.168.208.185
export MESOS_port=5050
export MESOS_CLUSTER=wkz
export MESOS_hostname=slave5
export MESOS_logging_level=INFO
export MESOS_offer_timeout=60secs
export MESOS_ZK=zk://slave3:2181,slave4:2181,slave5:2181/mesos
export MESOS_quorum=2
# This file contains environment variables that are passed to mesos-master.
# To get a description of all options run mesos-master --help; any option
# supported as a command-line option is also supported as an environment
# variable.
# Some options you're likely to want to set:
# export MESOS_log_dir=/var/log/mesos
export MESOS_log_dir=/usr/local/mesos/mesos/log
export MESOS_work_dir=/usr/local/mesos/mesos/master
export MESOS_ip=192.168.208.183
export MESOS_port=5050
export MESOS_CLUSTER=wkz
export MESOS_hostname=slave3
export MESOS_logging_level=INFO
export MESOS_offer_timeout=60secs
export MESOS_ZK=zk://slave3:2181,slave4:2181,slave5:2181/mesos
export MESOS_quorum=2
(3)配置mesos-agent-env.sh (注意此时的export MESOS_master要变为zk集群了,不再是之前的单节点的master的ip)
[[email protected]slave3 mesos]# cat mesos-agent-env.sh
# This file contains environment variables that are passed to mesos-agent.
# To get a description of all options run mesos-agent --help; any option
# supported as a command-line option is also supported as an environment
# variable.
# You must at least set MESOS_master.
# The mesos master URL to contact. Should be host:port for
# non-ZooKeeper based masters, otherwise a zk:// or file:// URL.
#export MESOS_master=192.168.208.184:5050
export MESOS_master=zk://slave3:2181,slave4:2181,slave5:2181/mesos
# Other options you're likely to want to set:
# export MESOS_log_dir=/var/log/mesos
# export MESOS_work_dir=/var/run/mesos
# export MESOS_isolation=cgroups
export MESOS_ip=192.168.208.183
export MESOS_port=5051
export MESOS_hostname=slave3
export MESOS_log_dir=/usr/local/mesos/mesos/log
export MESOS_work_dir=/usr/local/mesos/mesos/agent
export MESOS_logging_level=INFO
export MESOS_isolation=cgroups
[[email protected]slave4 mesos]# cat mesos-agent-env.sh
# This file contains environment variables that are passed to mesos-agent.
# To get a description of all options run mesos-agent --help; any option
# supported as a command-line option is also supported as an environment
# variable.
# You must at least set MESOS_master.
# The mesos master URL to contact. Should be host:port for
# non-ZooKeeper based masters, otherwise a zk:// or file:// URL.
export MESOS_master=zk://slave3:2181,slave4:2181,slave5:2181/mesos
# Other options you're likely to want to set:
# export MESOS_log_dir=/var/log/mesos
# export MESOS_work_dir=/var/run/mesos
# export MESOS_isolation=cgroups
export MESOS_ip=192.168.208.184
export MESOS_port=5051
export MESOS_hostname=slave4
export MESOS_log_dir=/usr/local/mesos/mesos/log
export MESOS_work_dir=/usr/local/mesos/mesos/agent
export MESOS_logging_level=INFO
export MESOS_isolation=cgroups
[[email protected]slave5 mesos]# cat mesos-agent-env.sh
# This file contains environment variables that are passed to mesos-agent.
# To get a description of all options run mesos-agent --help; any option
# supported as a command-line option is also supported as an environment
# variable.
# You must at least set MESOS_master.
# The mesos master URL to contact. Should be host:port for
# non-ZooKeeper based masters, otherwise a zk:// or file:// URL.
export MESOS_master=zk://slave3:2181,slave4:2181,slave5:2181/mesos
# Other options you're likely to want to set:
# export MESOS_log_dir=/var/log/mesos
# export MESOS_work_dir=/var/run/mesos
# export MESOS_isolation=cgroups
export MESOS_ip=192.168.208.185
export MESOS_port=5051
export MESOS_hostname=slave5
export MESOS_log_dir=/usr/local/mesos/mesos/log
export MESOS_work_dir=/usr/local/mesos/mesos/agent
export MESOS_logging_level=INFO
export MESOS_isolation=cgroups
(4)复制mesos-agent-env.sh 到 mesos-slave-env.sh (三台机器都执行)
cp mesos-agent-env.sh mesos-slave-env.sh
(5)启动集群
来到/usr/local/mesos/mesos/sbin目录下:
sh mesos-stop-cluster.sh
sh mesos-start-cluster.sh
注:我虽然配置了mesos的环境变量,但是在其他目录下执行sbin目录下的命令,并不能正确执行,提示错误如下:
[[email protected] mesos]# mesos-start-agents.sh
Failed to find /usr/etc/mesos/slaves
但是后来重新搭建的时候,莫名其妙又好使了,不知道为啥。
(6)页面查看(slave3,slave4,slave5均能访问)
以slave4:5050为例:
这时如果kill掉此时的active master:slave3,则会自动选择slave4或者slave5为active master。
[[email protected] mesos]# ps -ef | grep master
root 2044 1 0 Nov05 ? 00:00:02 /usr/libexec/postfix/master -w
root 36628 1 1 11:22 ? 00:02:33 /usr/local/mesos/mesos/sbin/mesos-master
root 38590 35531 0 14:25 pts/0 00:00:00 grep --color=auto master
[[email protected] mesos]# kill 36628
[[email protected] mesos]# ps -ef | grep master
root 2044 1 0 Nov05 ? 00:00:02 /usr/libexec/postfix/master -w
root 38604 35531 0 14:25 pts/0 00:00:00 grep --color=auto master
发现此时active master变为了slave4:
再次重新启动slave3的master:
[[email protected] sbin]# sh mesos-start-masters.sh
Starting mesos-master on slave3
ssh -o StrictHostKeyChecking=no -o ConnectTimeout=2 slave3 /usr/local/mesos/mesos/sbin/mesos-daemon.sh mesos-master </dev/null >/dev/null
Warning: Permanently added the ECDSA host key for IP address '192.168.208.183' to the list of known hosts.
Starting mesos-master on slave4
ssh -o StrictHostKeyChecking=no -o ConnectTimeout=2 slave4 /usr/local/mesos/mesos/sbin/mesos-daemon.sh mesos-master </dev/null >/dev/null
Starting mesos-master on slave5
ssh -o StrictHostKeyChecking=no -o ConnectTimeout=2 slave5 /usr/local/mesos/mesos/sbin/mesos-daemon.sh mesos-master </dev/null >/dev/null
[[email protected] sbin]# ps -ef | grep master
root 2044 1 0 Nov05 ? 00:00:02 /usr/libexec/postfix/master -w
root 38661 1 3 14:29 ? 00:00:00 /usr/local/mesos/mesos/sbin/mesos-master
root 38685 35531 0 14:29 pts/0 00:00:00 grep --color=auto master
通过页面发现,active master 依然是 slave4:
六:移植mesos
环境准备:
centos7.2,
zk,
java不需要,centos7默认有。
(1)把编译好的/usr/local/mesos/mesos 目录打包为mesos1.4.tar,放到另外三台机器上。
假定: 机器为s1,s2,s3
(2)尝试一:在普通用户家目录下尝试部署(eg:/home/wkz)
在/home/wkz下解压缩mesos1.4.tar,然后cd mesos, 修改sbin目录下mesos-daemon.sh,mesos-start-agents.sh...等*.sh文件第一行的prefix=/usr/local/mesos/mesos 为prefix=/home/wkz/mesos,然后修改etc/mesos,mesos-master-env.sh,和另外两个 .sh 文件的对应ip和hostname,以及wok_dir,slave_dir,master_dir。(所有这些操作,三台机器同时进行)
然后配置免密,配置完,随便一台进入sbin下,先测试单机的情况,运行 ./mesos-master,会发现出现如下错误:
./mesos-master: error while loading shared libraries: libsvn_delta-1.so.0: cannot open shared object file: No such file or directory
执行这个操作:yum install -y subversion-devel
再次执行./mesos-master,发现这个错误:不能发现libmesos-1.4.0.so 这个文件:
./mesos-master: error while loading shared libraries: libmesos-1.4.0.so: cannot open shared object file: No such file or directory
这个时候其实已经知道是为啥了,编译的时候是按照 /usr/local/mesos/mesos来编译的,而sbin下的mesos-master是二进制文件无法修改,即里面的prefix我们无法修改,而且libmesos-1.4.0.so在/home/wkz/mesos/lib下是存在的。
尝试了把libmesos-1.4.0.so放到新建的 /usr/local/mesos/mesos/lib,发现运行出来了./mesos-master --ip=192.168.208.184 --work_dir=/var/lib/mesos,(这个过程需要修改/usr/local/ 权限为 o+x,要不wkz用户无法创建mesos/lib)
就算你上面的搞定了,那么你启动的时候会发现需要root密码:
./mesos-agent --master=192.168.208.184:5050 --work_dir=/home/wkz/mesos
WARNING: Logging before InitGoogleLogging() is written to STDERR
I1107 17:53:40.099164 19592 main.cpp:348] Build: 2017-11-03 11:19:53 by root
I1107 17:53:40.099318 19592 main.cpp:349] Version: 1.4.0
I1107 17:53:40.249310 19592 systemd.cpp:238] systemd version `219` detected
I1107 17:53:40.249372 19592 main.cpp:459] Initializing systemd state
==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ===
Authentication is required to manage system services or units.
Authenticating as: root
Password:
==== AUTHENTICATION COMPLETE ===
..................
所以放到家目录下太折腾了,不可取,我就没再测试其他的,下面进行尝试二
(3)尝试二:(全程root)
新建/usr/local/mesos/ ,把mesos1.4.tar放到这里,解压缩,出现mesos目录,然后只需要修改各个机器上的etc/mesos下面的*.sh配置文件即可。
在做最后一步:yum install -y subversion-devel
要不然执行测试 ./mesos-master的时候,还会出现下面的错误:
./mesos-master: error while loading shared libraries: libsvn_delta-1.so.0: cannot open shared object file: No such file or directory
在之后就一起照旧了,完全实现编译好的mesos移植。
(4)尝试三:(移植到centos6)
这次是按照普通用户编译安装(详见第七)后移植的,一切照常,修改各种文件后,启动./mesos-master,出现如下问题:
./mesos-master: error while loading shared libraries: libdb-5.3.so: cannot open shared object file: No such file or directory
看了一下官网的编译步骤,发现centos6和centos7编译方式不全一样,所以不再进行尝试。
结论:跨版本移植编译的mesos没实现
七:普通用户编译安装mesos(wkz)
(1)准备跟之前root用户做的一样,然后按照官网进行操作,记得编辑/etc/sudores文件,赋予wkz用户sudo权限。
(2)在进行cd build ,执行 ../configure 时,指定prefix为,--prefix=/home/wkz/mesos,记得在wkz家目录下创建mesos文件夹。
(3)照常编译,等2个小时左右编译完成后,配置/home/wkz/mesos/etc/mesos各个配置文件
(4)这一次我再次尝试了配置mesos的环境变量,然后source后发现,可以在wkz用户的任意路径加快捷执行mesos-start-cluster.sh命令了(然后尝试上次root用户配置环境变量的方式,发现能够正常使用mesos-start-cluster.sh,不知道为啥)
(5)执行完后查看进程,发现三台机器master都能启动,但是agent都不能启动,记性如下单机测试。
执行:mesos-master --ip=192.168.208.184 --work_dir=/home/wkz/meta一切正常;
执行:mesos-slave --master=192.168.208.184:5050 --work_dir=/home/wkz/meta,发现需要root密码
[[email protected] ~]$ mesos-slave --master=192.168.208.184:5050 --work_dir=/home/wkz/meta
WARNING: Logging before InitGoogleLogging() is written to STDERR
I1108 16:24:36.130376 32941 main.cpp:348] Build: 2017-11-08 13:29:37 by wkz
I1108 16:24:36.130524 32941 main.cpp:349] Version: 1.4.0
I1108 16:24:37.863833 32941 systemd.cpp:238] systemd version `219` detected
I1108 16:24:37.863987 32941 main.cpp:459] Initializing systemd state
==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ===
Authentication is required to manage system services or units.
Authenticating as: root
Password: (一段时间不输入出现如下)
Failed to start mesos_executors.slice: Connection timed out
See system logs and 'systemctl status mesos_executors.slice' for details.
polkit-agent-helper-1: pam_authenticate failed: Authentication failure
E1108 16:25:03.010860 32941 shell.hpp:107] Command 'systemctl start mesos_executors.slice' failed; this is the output:
E1108 16:25:03.011312 32941 main.cpp:468] EXIT with status 1: Failed to initialize systemd: Failed to start 'mesos_executors.slice': Failed to start systemd slice `mesos_executors.slice`: Failed to execute 'systemctl start mesos_executors.slice'; the command
was either not found or exited with a non-zero exit status: 1
输入root密码后,发现了一大堆东西都是在根目录下执行的,尝试配置了各个目录的o+w权限,发现到最后一个/sys/fs目录下的cgroup目录不让配置o+w,然后就无法进行下去了。
然后尝试sudo mesos-start-cluster.sh,发现可以了(前提是三台机器root配置免密.......无语)
总结:普通用户运行agent必须要root密码,或者sudo权限。