Keepalived安装及配置实现虚拟IP与HDFS Active Namenode同步
来源:互联网 发布:哪些网络游戏有mac版 编辑:程序博客网 时间:2024/06/06 19:24
1.软件及安装环境
本文中所使用的环境为三台Centos服务器,操作系统版本为CentOS6.5
HDFS版本为2.6.0,通过journal node实现高可用(HDFS journal node高可用配置可参见__HDFS三节点集群搭建(Journal Node)或自行百度)。
Keepalived 版本为1.2.6。
IP地址为211,212,214,其中211和212节点作为Namenode,211节点在hdfs中配置为hadoop01,212节点配置为hadoop02,214节点用于datanode。同时,需要在211和212节点部署Keepalived服务。
<property> <name>dfs.nameservices</name> <value>cluster1</value> </property> <property> <name>dfs.ha.namenodes.cluster1</name> <value>hadoop01,hadoop02</value> </property> <property> <name>dfs.namenode.rpc-address.cluster1.hadoop01</name> <value>192.168.6.211:9000</value> </property> <property> <name>dfs.namenode.http-address.cluster1.hadoop01</name> <value>192.168.6.211:50070</value> </property> <property> <name>dfs.namenode.rpc-address.cluster1.hadoop02</name> <value>192.168.6.212:9000</value> </property> <property> <name>dfs.namenode.http-address.cluster1.hadoop02</name> <value>192.168.6.212:50070</value> </property>如代码中所示,将211节点作为hadoop01节点,212节点作为hadoop02节点。
2.配置
2.1首先,配置hdfs,配置完成之后,可以在控制台通过jps指令查看,可以看到211和212运行的进程如下:
通过jps指令可以看到214运行的进程如下:
2.2集群中两个元数据节点需要安装Keepalived,在示例中,将Server211设置为主节点,Server212设置为从节点。
2.2.1 安装
(1)将安装程序keepalived-1.2.6.tar.gz放到/usr/local/src目录下
(2)解压缩此软件
tar -zxvf ./ keepalived-1.2.6.tar.gzcd ./keepalived-1.2.6
(3)执行安装指令
./configure --prefix=/usr/local/keepalivedmake make install
至此,安装过程完成。
(4) 安装问题记录
- 问题一:遇到错误提示:configure: error: Popt libraries is required
解决方案:yum install popt-devel
然后重新./configure
- 问题二:遇到错误提示:configure: error:
!!! OpenSSL is not properly installed on your system. !!!
!!! Can not include OpenSSL headers files. !!!
解决方案:yum install openssl-devel
然后重新./configure
2.2.2 Keepalived初始配置使之实现对hdfs进程50070端口的监测
本部分内容为配置keepalived实现其对hdfs进程的50070端口进行监测,2.2.3部分将介绍如何配置keepalived使之实现虚拟IP与HDFS Active Namenode同步
(1) 修改配置文件路径
cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /retc/rc.d/init.d/cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/mkdir /etc/keepalivedcp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/ cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
(2)修改主节点(Server211)Keepalived配置文件信息,配置文件位于/etc/keepalived/ keepalived.conf目录,首先需要修改其检测脚本方法,如下:
vrrp_script chk_http_port { script "</dev/tcp/192.168.6.211/50070"#此脚本向namenode节点发送tcp连接 interval 1#时间间隔为1 weight -10#权重为-10,即连接两次(次数可配置,即fall值)若失败,将此节点的keepalived权重减10 fall 2#连续两次失败则减权重 rise 1#对成功的检测只需一次即可}
然后修改配置文件总vrrp实例配置信息,如下:
vrrp_instance VI_1 { state MASTER#设置此节点为主节点 interface eth1#当前ip正在使用的网卡 virtual_router_id 51 priority 200#设置的优先级,两节点的优先级必须不同 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.6.210#virtual ip address need to be set } track_script { chk_http_port#需要执行的检测脚本,即上述检测211端口的那个脚本 } notify_master /usr/local/keepalived/shell/toMaster.sh#当keepalived抢占到虚拟IP(成为主节点时),触发的脚本,这些根据自己需要配置即可 notify_backup /usr/local/keepalived/shell/toSlave.sh#当keepalived丢失虚拟IP(成为备节点时),触发的脚本,脚本所在位置也可变化 notify_fault /usr/local/keepalived/shell/toFault.sh#出错时触发的脚本 notify_down /usr/local/keepalived/shell/toSlave.sh#停止keepalived时触发的脚本}
根据配置,可以看到将虚拟ip地址设置为192.168.6.210
(3)修改从节点(Server212)Keepalived配置文件信息,配置文件位于/etc/keepalived/ keepalived.conf目录,首先需要修改其检测脚本方法,如下:
vrrp_script chk_http_port { script "</dev/tcp/192.168.6.212/50070"#注意,这里是212,与211的配置不同了 interval 1 weight -10 fall 2 rise 1}
然后修改配置文件总vrrp实例配置信息,如下:
vrrp_instance VI_1 { state MASTER#注意,状态也是Master interface eth1#network card being used now virtual_router_id 51 priority 195#优先级比211低 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.6.210 } track_script { chk_http_port } notify_master /usr/local/keepalived/shell/toMaster.sh notify_backup /usr/local/keepalived/shell/toSlave.sh notify_fault /usr/local/keepalived/shell/toFault.sh notify_down /usr/local/keepalived/shell/toSlave.sh}
从节点的配置信息修改与主节点类似,参照修改即可;示例如下。
(4)至此,配置完成,在两个节点上分别执行指令启动Keepalived服务:
service keepalived start
启动之后通过ip -a指令查看主节点是否已抢占到虚拟IP,若抢占成功,则说明配置成功。(注意:此验证步骤需等待hdfs集群启动之后进行启动集群后,再在两台机器上开启Keepalived服务,观察IP分配情况)
然后可通过指令关闭Keepalived服务。
service keepalived stop
2.2.3 Keepalived初始配置使之实现虚拟IP与HDFS Active Namenode同步
若需实现Keepalived的虚拟IP所在节点与AN同步,只需更改Keepalived的配置文件/etc/leepalived/keepalived.conf和所需的脚本文件即可,且仅需修改其监测脚本相关内容,修改如下:(1)在211节点(hdfs中配置为hadoop01)上,新建监测Namenode服务状态的脚本文件,在示例环境中,脚本文件路径为 /etc/keepalived/chkHealth.sh,内容如下:
#!/bin/bash/home/root/hztest/hz-2.6.0-cdh5.4.1/bin/hdfs haadmin -getServiceState hadoop01 | grep active#其中,bin之前为示例环境hdfs安装位置if [ $? -gt 0 ]; then#此脚本监测该节点的NN是否处于Active exit 1#若不处于,则返回代码1else#若处于,则返回代码0 exit 0fi(2)修改211节点上的/etc/keepalived/keepalived.conf文件,
!Configuration File for keepalivedglobal_defs { notification_email { }# notification_email_from root@localhost# smtp_server 127.0.0.1# smtp_connect_timeout 30 router_id HA_NETDISK}vrrp_script chk_ha_service { script "/etc/keepalived/chkActive.sh"#vrrp_script修改为调用chkActive.sh interval 3 weight -10 fall 2 rise 1}vrrp_instance VI_1 { state MASTER interface eth1 virtual_router_id 51 priority 200 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.6.210 } track_script { chk_ha_service#调用chk_ha_service来监测节点状态 }}
(3)在212节点(hdfs中配置为hadoop02)上,新建监测Namenode服务状态的脚本文件,在示例环境中,脚本文件路径为 /etc/keepalived/chkHealth.sh,内容如下:
#!/bin/bash/home/root/hztest/hz-2.6.0-cdh5.4.1/bin/hdfs haadmin -getServiceState hadoop02| grep active#其中,bin之前为示例环境hdfs安装位置if [ $? -gt 0 ]; then#此脚本监测该节点的NN是否处于Active exit 1#若不处于,则返回代码1else#若处于,则返回代码0 exit 0fi(2)修改212节点上的/etc/keepalived/keepalived.conf文件,
!Configuration File for keepalivedglobal_defs { notification_email { }# notification_email_from root@localhost# smtp_server 127.0.0.1# smtp_connect_timeout 30 router_id HA_NETDISK}vrrp_script chk_ha_service { script "/etc/keepalived/chkActive.sh"#vrrp_script修改为调用chkActive.sh interval 3 weight -10 fall 2 rise 1}vrrp_instance VI_1 { state MASTER interface eth1 virtual_router_id 51 priority 195 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.6.210 } track_script { chk_ha_service#调用chk_ha_service来监测节点状态 }}至此,配置完成。启动hdfs与keepalived进行验证即可。
3.踩过的坑及解决方案
踩到的坑主要为与 Keepalived相关的,都是Keepalived的虚拟ip所在节点未根据Active NN节点变化而变化,主要问题有两个:
3.1 keepalived配置格式错误
由于Keepalived配置若有错误,也不会有错误提示,所以修改配置文件时需特别小心。同时,注意{}与其花括号之前的字母之间需要有空格,如:
vrrp_script chk_ha_service { script "/etc/keepalived/chkActive.sh" interval 3 weight -10 fall 2 rise 1}3.2 脚本需要添加可执行权限
Keepalived中所使用到的脚本必须要添加可执行权限,否则无法被执行。
- Keepalived安装及配置实现虚拟IP与HDFS Active Namenode同步
- Java 实现HDFS API接口 与获取Active NameNode Address
- Keepalived 安装与配置
- Keepalived 安装与配置
- keepalived安装与配置
- Keepalived 安装与配置
- Keepalived 安装与配置
- keepalived安装与配置
- Keepalived安装与配置
- Keepalived安装与配置
- Keepalived 安装与配置
- Keepalived安装与配置
- Keepalived安装与配置
- Keepalived安装与配置
- Keepalived虚拟ip
- Hadoop 获取Active Namenode的IP地址
- keepalived之虚拟ip应用
- HDFS------namenode中的DatanodeProtocol实现
- BZOJ 2142 浅谈LuCas EXtra拓展卢卡斯定理解合数组合式
- HDU1863 最小生成树 prim模版
- 图中的最小生成树——Kruskal算法
- 布隆过滤器浅解
- doctype解析
- Keepalived安装及配置实现虚拟IP与HDFS Active Namenode同步
- Java for循环和foreach循环的性能比较
- bzoj 2423 [HAOI2010]最长公共子序列 动态规划
- Java的初始化块
- 一位资深程序员大牛给予Java初学者的学习路线建议
- 表的创建与管理
- 设计模式中类的关系
- MySQLWorkbench安装及创建
- 用队列实现形如a+b@b+a#的中心对称字符的检验