在探索分布式系统和资源调度的广阔领域时,Apache Mesos作为一个强大的集群管理器,能够将数据中心的服务器抽象为一个巨大的计算资源池,对于开发者、运维工程师而言,在单台机器上搭建Mesos环境是学习其工作原理、测试框架和应用的理想起点,本文将详细介绍如何在CentOS 7系统上,通过源码编译的方式安装并配置一个单机版的Mesos环境,整个过程将涵盖环境准备、依赖安装、Zookeeper与Mesos的编译部署,以及最终的验证步骤。
环境准备
在开始安装之前,确保您的系统满足以下基本条件,一个干净、准备充分的环境是成功安装的一半。
您需要一台运行CentOS 7的服务器或虚拟机,为了方便操作,建议创建一个具有sudo
权限的非root用户,由于这是一个用于学习和测试的单机环境,为了简化初期的配置,我们可以暂时禁用防火墙和SELinux,以避免不必要的网络访问限制,在生产环境中,请务必正确配置防火墙规则。
# 禁用SELinux sudo setenforce 0 sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config # 停止并禁用firewalld sudo systemctl stop firewalld sudo systemctl disable firewalld
核心依赖安装
Mesos的编译和运行依赖于一系列系统库和工具,在开始之前,我们需要使用yum
包管理器安装这些必要的依赖组件。
# 更新系统软件包 sudo yum update -y # 安装开发工具组和必要的库 sudo yum groupinstall -y "Development Tools" sudo yum install -y wget git apache-maven python-devel libcurl-devel zlib-devel openssl-devel cyrus-sasl-devel cyrus-sasl-md5 apr-devel subversion-devel java-1.8.0-openjdk-devel
上述命令安装了编译Mesos所需的Development Tools
工具组(如GCC, Make等),以及一系列关键的依赖库,例如用于网络通信的libcurl
,用于数据压缩的zlib
,用于安全认证的OpenSSL
和Cyrus SASL
,以及Mesos Web UI和一些框架所需的Java开发环境(JDK)。
安装Apache Zookeeper
Mesos依赖Zookeeper进行Master节点的选举和集群状态的协调,即使是单机模式,Mesos也需要一个Zookeeper实例来存储其状态信息。
下载与解压:
从Apache Zookeeper官网下载一个稳定版本,这里以3.5.8版本为例。cd /usr/local/src sudo wget https://archive.apache.org/dist/zookeeper/zookeeper-3.5.8/apache-zookeeper-3.5.8-bin.tar.gz sudo tar -xzf apache-zookeeper-3.5.8-bin.tar.gz sudo mv apache-zookeeper-3.5.8-bin /usr/local/zookeeper
创建配置文件:
创建一个简单的Zookeeper配置文件,主要是指定数据存储目录和客户端连接端口。sudo mkdir -p /var/lib/zookeeper sudo tee /usr/local/zookeeper/conf/zoo.cfg > /dev/null <<EOF tickTime=2000 dataDir=/var/lib/zookeeper clientPort=2181 EOF
启动Zookeeper:
使用Zookeeper自带的脚本启动服务。/usr/local/zookeeper/bin/zkServer.sh start
您可以使用
/usr/local/zookeeper/bin/zkCli.sh -server 127.0.0.1:2181
来测试连接是否成功。
编译与安装Mesos
现在进入核心环节,编译安装Mesos,我们将从源代码开始,以确保获得最新的功能或特定版本。
下载Mesos源码:
同样,从Apache官网下载Mesos的源码包,这里以1.11.0版本为例。cd /usr/local/src sudo wget https://archive.apache.org/dist/mesos/1.11.0/mesos-1.11.0.tar.gz sudo tar -xzf mesos-1.11.0.tar.gz cd mesos-1.11.0
配置编译选项:
运行configure
脚本来检查依赖并生成Makefile,此过程会扫描系统中已安装的库。mkdir build cd build ../configure
如果
configure
过程中报告有缺失的依赖,请返回“核心依赖安装”部分并安装相应的软件包。编译与安装:
使用make
命令进行编译,这可能需要一些时间,具体取决于您的机器性能,编译完成后,使用make install
将Mesos安装到系统中。# 使用-j参数可以加速编译,根据CPU核心数调整 make -j$(nproc) sudo make install
配置并启动Mesos Master与Agent
安装成功后,我们需要配置并启动Mesos的核心守护进程:Master(主节点)和Agent(工作节点,旧称Slave)。
创建必要的目录:
Mesos Master和Agent需要目录来存储工作文件和日志。sudo mkdir -p /var/lib/mesos sudo mkdir -p /var/log/mesos
配置并启动Master:
创建一个配置文件来告知Master Zookkeeper的地址,在单机模式下,地址就是本地的0.0.1:2181
。echo "zk://127.0.0.1:2181/mesos" | sudo tee /etc/mesos/zk
可以直接在后台启动Master进程。
--work_dir
参数指定了其工作目录。sudo mesos-master --zk=zk://127.0.0.1:2181/mesos --work_dir=/var/lib/mesos --quorum=1 &
配置并启动Agent:
Agent需要知道Master的地址才能注册自己。echo "127.0.0.1:5050" | sudo tee /etc/mesos/master
启动Agent进程。
--work_dir
和--master
是关键参数。sudo mesos-agent --master=127.0.0.1:5050 --work_dir=/var/lib/mesos &
验证安装
所有组件都已启动,我们可以通过几种方式来验证Mesos单机集群是否正常运行。
检查进程是否存在:
ps aux | grep mesos
您应该能看到mesos-master
和mesos-agent
两个进程。
最直观的验证方式是通过Web UI,打开浏览器,访问http://<您的服务器IP地址>:5050
,您将看到Mesos的主控界面,在”Agents”标签页下,应该能看到一个已注册的Agent节点,其资源(CPU、内存、磁盘)信息会显示在页面上。
为了方便参考,以下是Mesos核心组件的默认端口:
组件名称 | 端口 | 用途 |
---|---|---|
Mesos Master | 5050 | Master的Web UI和HTTP API |
Mesos Agent | 5051 | Agent的HTTP API(Web UI默认禁用) |
Zookeeper | 2181 | 客户端连接端口 |
至此,您已经成功在CentOS上搭建了一个功能完备的Mesos单机环境,您可以开始在上面部署和测试各种分布式框架,如Marathon、Chronos等,进一步深入理解Mesos的强大能力。
相关问答FAQs
问题1:启动Mesos Master或Agent后,在Web UI上看不到Agent节点,Agent日志显示连接Master失败,该怎么办?
解答: 这是一个常见的网络或配置问题,请按以下步骤排查:
- 检查防火墙和SELinux:确认您已经按照文章前述步骤禁用了它们,或者为Master的5050端口和Agent的5051端口添加了放行规则。
- 检查Master地址:确保
/etc/mesos/master
文件中填写的Master地址(0.0.1:5050
)是正确的,并且Master进程确实在该地址上监听,可以使用netstat -tlnp | grep 5050
命令确认。 - 检查Zookeeper连接:确认Master能够成功连接到Zookeeper,Master日志中如果有关于Zookeeper连接失败的错误,请检查Zookeeper服务是否正常启动,以及
/etc/mesos/zk
文件中的地址字符串是否无误。
问题2:./configure
脚本在执行时提示找不到Java Development Kit (JDK),但我已经安装了,如何解决?
解答: 这通常是因为系统没有正确设置JAVA_HOME
环境变量,即使通过yum
安装了JDK,configure
脚本也可能找不到它,解决方法如下:
- 找到JDK安装路径:使用命令
readlink -f $(which java)
,通常会得到一个指向/usr/lib/jvm/java-1.8.0-openjdk-.../jre/bin/java
的路径,您需要去掉末尾的/jre/bin/java
部分,得到类似/usr/lib/jvm/java-1.8.0-openjdk-...
的路径。 - 设置环境变量:在运行
configure
之前,执行export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-...
(请替换为您实际的路径)。 :设置好环境变量后,再次运行 ../configure
脚本,此时它应该能成功检测到JDK,为了永久生效,可以将此export
命令添加到您的~/.bashrc
或/etc/profile
文件中。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复