CentOS-6安装mesos+marathon+zookeeper
前期准备
关闭SELinux
sudo vi /etc/selinux/config
将SELINUX=enforcing修改为SELINUX=disabled重启生效
关闭防火墙
sudo service iptables stop
配置hosts
sudo vi /etc/hosts
/etc/hosts内容:
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.245.227 iot-node1
192.168.245.228 iot-node2
192.168.245.229 iot-node3
安装java
1)卸载CentOS自带的OpenJDK
sudo rpm -e --nodeps $(sudo rpm -qa | grep java)
sudo rpm -e --nodeps $(sudo rpm -qa | grep gcj)
sudo rpm -e --nodeps $(sudo rpm -qa | grep jdk)
2)用cd命令进入到jdk-8u181-linux-x64.tar.gz所在目录,执行以下命令
sudo tar -zxf jdk-8u181-linux-x64.tar.gz -C /opt
sudo mv /opt/jdk1.8.0_181 /opt/java
3)配置环境变量
sudo vi /etc/profile
在/etc/profile的最后加入以下几行:
JAVA_HOME=/opt/java
CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME
export CLASSPATH
export PATH=$PATH:$JAVA_HOME/bin
4)使环境变量生效
source /etc/profile
5)设置java软连接
sudo ln -sf /opt/java/bin/java /usr/bin/java
sudo ln -sf /opt/java/bin/javac /usr/bin/javac
sudo ln -sf /opt/java/bin/javaws /usr/bin/javaws
如果/usr/bin目录已存在java、javaws,删除/usr/bin目录下的java、javaws
然后执行上面的命令
离线安装zookeeper
下载地址
安装包
zookeeper-3.4.13.tar.gz
安装zookeeper
1)进入到zookeeper-3.4.13.tar.gz所在目录
执行解压命令:
sudo tar -zxf zookeeper-3.4.13.tar.gz -C /opt
2)修改文件夹名称:
sudo mv /opt/zookeeper-3.4.13 /opt/zookeeper
3)创建文件夹:
sudo mkdir /opt/zookeeper/data
sudo mkdir /opt/zookeeper/logs
配置zookeeper
1)每个master节点设置不同的myid值
在/opt/zookeeper/data/myid中写入一个1到255范围的数值,需要注意的是,每个节点的myid不要重复。
sudo vi /opt/zookeeper/data/myid
这里将3个master节点的myid分别设置为:1,2,3
2)修改配置:
sudo cp /opt/zookeeper/conf/zoo_sample.cfg /opt/zookeeper/conf/zoo.cfg
sudo vi /opt/zookeeper/conf/zoo.cfg
修改dataDir=/var/lib/zookeeper为dataDir=/opt/zookeeper/data
在配置文件/opt/zookeeper/conf/zoo.cfg中加入下面内容:
server.1= iot-node1:2888:3888
server.2= iot-node2:2888:3888
server.3= iot-node3:2888:3888
注意:iot-node1、iot-node2、iot-node3位主节点主机名
server.后的数字对应myid的内容
3)修改zookeeper日志路径
sudo vi /opt/zookeeper/bin/zkEnv.sh
找到以下为内容:
if [ “x${ZOO_LOG_DIR}” = “x” ]
then
ZOO_LOG_DIR="."
fi
修改为:
if [ “x${ZOO_LOG_DIR}” = “x” ]
then
ZOO_LOG_DIR="" $ZOOBINDIR/…/logs
fi
注册zookeeper服务
1)新建一个zookeeper脚本
sudo touch /etc/rc.d/init.d/zookeeper
2)给脚本添加执行权限
sudo chmod +x /etc/rc.d/init.d/zookeeper
3)编辑/etc/rc.d/init.d/zookeeper
sudo vi /etc/rc.d/init.d/zookeeper
/etc/rc.d/init.d/zookeeper内容:
#!/bin/bash
#chkconfig:2345 20 90
#description:zookeeper
#processname:zookeeper
export JAVA_HOME=/opt/java
case $1 in
start) sudo /opt/zookeeper/bin/zkServer.sh start;;
stop) sudo /opt/zookeeper/bin/zkServer.sh stop;;
status) sudo /opt/zookeeper/bin/zkServer.sh status;;
restart) sudo /opt/zookeeper/bin/zkServer.sh restart;;
*) echo “require start|stop|status|restart” ;;
esac
启动/停止/查看zookeeper
sudo service zookeeper start
sudo service zookeeper stop
sudo service zookeeper status
设置zookeeper开机自启
sudo chkconfig zookeeper on
查看开机自启服务
sudo chkconfig --list
离线安装mesos
下载地址
安装包
mesos-1.6.1-2.0.1.el6.x86_64.rpm
依赖包
apr-util-1.3.9-3.el6_0.1.x86_64.rpm
apr-util-1.3.9-3.el6_0.1.x86_64.rpm
cyrus-sasl-md5-2.1.23-15.el6_6.2.x86_64.rpm
gnutls-2.12.23-22.el6.x86_64.rpm
libevent-1.4.13-4.el6.x86_64.rpm
libevent-devel-1.4.13-4.el6.x86_64.rpm
libevent-doc-1.4.13-4.el6.noarch.rpm
libevent-headers-1.4.13-4.el6.noarch.rpm
libproxy-0.3.0-10.el6.x86_64.rpm
libproxy-bin-0.3.0-10.el6.x86_64.rpm
libproxy-python-0.3.0-10.el6.x86_64.rpm
neon-0.29.3-3.el6_4.x86_64.rpm
pakchois-0.4-3.2.el6.x86_64.rpm
perl-URI-1.40-2.el6.noarch.rpm
subversion-1.6.11-15.el6_7.x86_64.rpm
安装mesos
进入到mesos安装包和依赖包所在目录执行命令:
sudo rpm -ivh *.rpm
配置mesos-master
1)每个master节点的/etc/mesos/zk配置文件中设置zk的地址
sudo vi /etc/mesos/zk
/etc/mesos/zk内容:
zk:// iot-node1:2181, iot-node2:2181, iot-node3:2181/mesos
2)/etc/mesos-master/quorum中设置quorum值
sudo vi /etc/mesos-master/quorum
这个值要大于master数/2,这里master数为3,则要设为2
3)配置ip、hostname、port
sudo vi /etc/mesos-master/ip
/etc/mesos-master/ip内容为当前宿主机IP
sudo vi /etc/mesos-master/hostname
/etc/mesos-master/ hostname也配置当前宿主机IP
注意:hostname如果配置主机名,web ui会出现不停地弹出对话框,“Failed to connect to 192.168.245.227:5050",进行重新连接
也可以修改/etc/default/mesos-master
sudo vi /etc/default/mesos-master
显示内容:
PORT=5050
ZK=`cat /etc/mesos/zk`
配置mesos-slave
1)每个master节点的/etc/mesos/zk配置文件中设置zk的地址
sudo vi /etc/mesos/zk
/etc/mesos/zk内容:
zk:// iot-node1:2181, iot-node2:2181, iot-node3:2181/mesos
3)配置ip、hostname
sudo vi /etc/mesos-slave/ip
/etc/mesos- slave/ip内容为当前宿主机IP
sudo vi /etc/mesos- slave/hostname
/etc/mesos- slave/hostname也配置当前宿主机IP
注意:hostname如果配置主机名,web ui会出现不停地弹出对话框,“Failed to connect to 192.168.245.227:5050",进行重新连接
4)修改mesos容器端口范围
mesos默认容器端口范围是31000 - 32000
sudo vi /etc/mesos-slave/resources
/etc/mesos-slave/resources内容:
ports(*):[1024-65534]
也可以在mesos-slave启动命令后加上:
–resources=ports(*):[1024-65534]
注意:mesos- slave可与marathon、mesos-master安装在同一个宿主机
其他
1)几个配置启动参数的目录:
/etc/mesos-master/
/etc/mesos-slave/
/etc/marathon/conf/
在这些目录分别用来配置mesos-master,mesos-slave,marathon的启动参数。以参数名为文件名,参数值为文件内容即可。
2)Failed to perform recovery: Incompatible agent info detected.问题解决
sudo rm -rf /var/log/mesos/*
sudo rm -rf /var/lib/mesos/meta/slaves/*
重启mesos-slave
3)上面三条命令可重复执行,知道ui上不在报Failed to perform recovery:
Incompatible agent info detected.问题
离线安装marathon
下载地址
安装包
marathon-1.6.322.tgz
安装marathon
1)进入到marathon-1.6.322.tgz所在目录
执行解压命令:
sudo tar -zxf marathon-1.6.322.tgz -C /opt
2)修改文件夹名称:
sudo mv /opt/marathon-1.6.322-2bf46b341 /opt/marathon
配置marathon
1)创建文件夹
sudo mkdir /opt/marathon/logs
sudo mkdir /etc/marathon
2)配置zookeeper地址
sudo vi /etc/marathon/zk
/etc/marathon/zk内容:
zk://iot-node1:2181,iot-node2:2181,iot-node3:2181/marathon
3)配置mesos用户
sudo vi /etc/marathon/mesos_user
/etc/marathon/mesos_user内容:
hadoop
4)编辑启动脚本
sudo vi /opt/marathon/bin/marathon-server
/opt/marathon/bin/marathon-server内容:
MARATHON_MASTER=`cat /etc/mesos/zk`
MARATHON_ZK=`cat /etc/marathon/zk`
MARATHON_MESOS_USER=`cat /etc/marathon/mesos_user`nohup /usr/sbin/marathon --master $MARATHON_MASTER --zk $MARATHON_ZK
–mesos_user $MARATHON_MESOS_USER > /opt/marathon/logs/marathon.out 2>&1
&
注册marathon服务
1)新建一个marathon脚本
sudo touch /etc/rc.d/init.d/marathon
2)给脚本添加执行权限
sudo chmod +x /etc/rc.d/init.d/marathon
3)编辑/etc/rc.d/init.d/marathon
sudo vi /etc/rc.d/init.d/marathon
/etc/rc.d/init.d/marathon内容:
#!/bin/bash
#chkconfig:2345 20 90
#description:marathon
#processname:marathon
#start marathon
start() {
pid=$(ps -ef | grep marathon | grep mesosphere | grep -v grep | awk ‘{print
$2}’)
if [ “$pid” == “” ]; then
sudo /opt/marathon/bin/marathon-server
fi
pid=$(ps -ef | grep marathon | grep mesosphere | grep -v grep | awk ‘{print
$2}’)
echo “marathon (pid “$pid”) is started”
}
#stop marathon
stop(){
pid=$(ps -ef | grep marathon | grep mesosphere | grep -v grep | awk ‘{print
$2}’)
if [ “$pid” != “” ]; then
sudo kill -9 $pid
fi
echo “marathon (pid “$pid”) is stopped”
}
#look status
status(){
pid=$(ps -ef | grep marathon | grep mesosphere | grep -v grep | awk ‘{print
$2}’)
if [ “$pid” != “” ]; then
echo “marathon (pid “$pid”) is running”
else
echo “marathon is not running”
fi
}
#restart marathon
restart(){
stop
start
}
case $1 in
start) start ;;
stop) stop ;;
status) status ;;
restart) restart ;;
*) echo “require start|stop|status|restart” ;;
esac
启动/停止/查看marathon
sudo service marathon start
sudo service marathon stop
sudo service marathon status
设置marathon开机自启
sudo chkconfig marathon on
查看开机自启服务
sudo chkconfig --list