【目录】
【第一章】Opentsdb运行环境准备
【第二章】安装HA-hadoop集群、HA-HBASE集群、zookeeper集群
【第三章】安装openTSDB
【第四章】通过Nginx对OpenTSDB做用户验证,确保opentsdb http接口安全
本文提到的各种服务和操作都经过本人验证,期间的坑已经替你们踩过了,读者可以参照本文档来一步步实施。觉得有用可以收藏。
【第一章】Opentsdb运行环境准备
【操作系统】CentOS Linux release 7.2.1511 (Core)
【主机列表】
主机名 内网IP地址
opentsdb-1-4 192.168.35.2
opentsdb-1-5 192.168.35.3
opentsdb-1-1 192.168.35.4
opentsdb-1-3 192.168.35.5
opentsdb-1-2 192.168.35.6
【系统脚本语言版本】内置的Python 2.7.5
【opentsdb要求java版本Java-1.6+】
[root@opentsdb-1-4 ~]# yum makecache # 更新yum源
[root@opentsdb-1-4 tony_soft]# for x in {5,1,3,2}; do ssh root@opentsdb-1-$x yum makecache; done
[root@opentsdb-1-4 tony_soft]# yum install -y java-1.8.0-openjdk # 使用yum安装JDK-1.8
解决no jps in (/usr/local/sbin问题:yum install -y java-1.8.0-openjdk-devel.x86_64
继续为其他四个节点分别安装openjdk和jps:
[root@opentsdb-1-4 tony_soft]# for x in {5,1,3,2}; do ssh root@opentsdb-1-$x yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel.x86_64 >> /tmp/jdk_and_jps_INSTALLING.log 2>&1;java -version && jps;echo "FINISHED____ $x";done
【分别下载zookeeper-3.4.14、Hadoop-2.8.4、hbase-1.4.9】
wget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz
wget https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-2.8.4/hadoop-2.8.4.tar.gz
wget https://mirrors.tuna.tsinghua.edu.cn/apache/hbase/stable/hbase-1.4.9-bin.tar.gz
【配置ssh免密登录】
确保从opentsdb-1-4到其他节点能ssh免密登录,具体实施可参考博文:
https://jingyan.baidu.com/article/bea41d43b558ffb4c51be6db.html
【开发自定义批处理脚本】
脚本:
可执行文件callall 用于同时在集群所有节点执行一条命令
可执行文件send2others 用于向其他节点(除opentsdb-1-4之外的节点)传送文件
都放到/usr/local/bin里面,给一个合适的权限。
[root@opentsdb-1-4 etc]# ll -ht /usr/local/bin/ | head -n 3
total 8
-rwxr-xr-x 1 root root 278 4月 24 15:57 callall
-rwxr-xr-x 1 root root 384 4月 24 16:00 send2others
[root@opentsdb-1-4 etc]# cat /usr/local/bin/callall
#!/bin/bash
if [[ $# -lt 1 ]] ; then echo no params ; exit ; fi
cmd=$*
for h in {"opentsdb-1-4","opentsdb-1-5","opentsdb-1-1","opentsdb-1-3","opentsdb-1-2"}
do
echo "正在$h 执行命令$cmd"
ssh $h "$cmd"
if [ $? -eq 0 ];then
echo "--------命令执行成功!"
fi
done ;
[root@opentsdb-1-4 etc]# cat /usr/local/bin/send2others
#!/bin/bash
if [[ $# -lt 1 ]] ; then echo no params ; exit ; fi
p=$1
dir=`dirname $p`
filename=`basename $p`
cd $dir
fullpath=`pwd -P .`
user=`whoami`
for h in {"opentsdb-1-5","opentsdb-1-1","opentsdb-1-3","opentsdb-1-2"}
do
echo "正在同步文件到$h======="
rsync -lr $p ${user}@$h:$fullpath
if [ $? -eq 0 ];then
echo "--------已成功同步到$h"
fi
done ;
【各节点安装NTP时间同步服务】
安装、配置可参考《CentOS 7 中使用NTP进行时间同步》https://www.linuxidc.com/Linux/2015-11/124911.htm
【同步环境变量到其他四个节点】
创建符号链接:
callall ln -s hadoop-2.8.4 hadoop
callall ln -s hbase-1.4.9 hbase
callall ln -s zookeeper-3.4.14 zookeeper
send2others hbase && send2others zookeeper # 同步软连接到其他节点的相应位置
callall 'ls -al /tony_soft/'
先在/etc/profile配好JAVA_HOME、HADOOP_HOME、HBASE_HOME、ZOOKEEPER_HOME;再用send2others 同步到其他四个节点:
cd /etc && send2others profile && callall 'source /etc/profile'
callall echo $PATH && callall echo $HADOOP_HOME && callall echo $HBASE_HOME && callall echo $ZOOKEEPER_HOME
send2others hadoop && send2others hbase && send2others zookeeper # 同步符号链接到其他节点
send2others hbase-1.4.9 && send2others zookeeper-3.4.14 && send2others hadoop-2.8.4 # 同步各个软件包到其他节点
【第二章】安装HA-hadoop集群、HA-HBASE集群、zookeeper集群
【配置HA-hadoop集群】
角色规划:
opentsdb-1-4 NameNode, QPM(zk), Hmaster, ResourceManager
opentsdb-1-5 NameNode, QPM(zk), Hmaster, ResourceManager
opentsdb-1-1 JournalNode, QPM(zk), DataNode, HRegionServer
opentsdb-1-3 JournalNode, DataNode, HRegionServer
opentsdb-1-2 JournalNode, DataNode, HRegionServer
配置静态IP(略)、关闭防火墙:
callall service iptables stop,再callall cat /etc/selinux/config | grep SELINUX # 确保每个主机的防火墙已关闭SELINUX=disabled
禁用Transparent Hugepage(为了提升hadoop集群性能):
配置省略, 可参考https://www.staroon.dev/2017/11/05/SetEnv/)
为每个节点添加用户hadoop:
callall groupadd hadoop && callall useradd -g hadoop hadoop
创建hdfs相关目录(name目录、jn日志目录)并赋权:
callall 'mkdir -p /dfs/data' && callall 'chown -R hadoop:hadoop /dfs'
for i in {1,3,2}; do ssh opentsdb-1-$i mkdir /jn_edits; done
for i in {1,3,2}; do ssh opentsdb-1-$i chown -R hadoop:hadoop /jn_edits; done
拷贝hadoop相关命令到/usr/local/bin/目录下并赋权:
callall 'cp /tony_soft/hadoop-2.8.4/bin/hdfs /usr/local/bin/ && chown hadoop:hadoop /usr/local/bin/hdfs'
callall ls -lh /usr/local/bin/hdfs
修改主要配置文件:
core-site.xml
<configuration>
<!-- 指定hdfs nameservice -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://tony/</value>
</property>
<!-- 开启垃圾回收站功能,值为检查点被删除的分钟数,设为0表示禁用 -->
<property>
<name>fs.trash.interval</name>
<value>1440</value>
</property>
<!-- 指定Zookeeper地址及端口 -->
<property>
<name>ha.zookeeper.quorum</name>
<value>opentsdb-1-4:2181,opentsdb-1-5:2181,opentsdb-1-1:2181</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:///dfs/data</value>
<description>namenode存放数据的目录,所有权是hadoop:hadoop</description>
</property>
</configuration>
hdfs-site.xml
<configuration>
<property>
<name>dfs.nameservices</name>
<value>tony</value>
</property>