Heartbeat(注意iptables和selinux的问题)
安装
yum –y install heartbeat libnet
配置
通过yum安装配置文件目录/etc/ha.d目录下没有配置文件需要从doc目录中复制三个文件.ha.cf.authkeys.haresources
ha.cf
#debugfile /var/log/ha-debug #用于记录 heartbeat 的调试信息,这里不开启
logfile /var/log/ha-log #指名heartbeat的日志存放位置。
logfacility local0 #如果未定义上述的日志文件,那么日志信息将送往local0(对应的#/var/log/messages),如果这 个日志文件都未定义,那么 heartbeat 默认情况下 将在/var/log 下建立 ha-debug 和 ha-log 来记录 相应的日志信息。
bcast eth1 #指明心跳使用以太网广播方式,并且是在eth1接口上 进行 广播。
keepalive #发送心跳报文的间隔,默认单位为秒,如果你毫秒为单位, 那么需要在后面跟 ms 单位,如 1500ms 即代表 .5s
deadtime #指定若备用节点在30秒内没有收到主节点的心跳信 号,则立即接管主节点的服务资源。
warntime #指定心跳延迟的时间为10秒。当10秒钟内备份节点不能接收到主节点的心跳信号时,就会往日志中写入一 个警告日志,但此时不会切换服务。发出最后的心跳 警 告 信息的间隔。
initdead #在某些系统上,系统启动或重启之后需要经过一段时 间 网络才能正常工作,该选项用于解决这种情况产生 的时 间间隔。取值至少为deadtime的两倍。
udpport #设置广播/单播通信使用的端口,694为默认使用的端口号
#baud #设置串行通信的波特率。这里不启用
#serial /dev/ttyS0 #选择串行通信设备,用于双机使用串口线连接的情 况。如果双机使用以太网连接,则应该关闭该选 项。
#ucast eth0 192.168.60.132 #采用网卡eth0的udp单播来组织心跳,后面跟的
IP地址应为双机对方的IP地址。
#mcast eth0 225.0.0.1 #采用网卡eth0的Udp组播来组织心跳,如果采用组 播通讯,在这里可以设置组播通讯所使用的接口,绑定 的组播 ip 地#址(在 224.0.0.0 - 239.255.255.255 间),通讯端口,ttl(time to live)所能经过路由的跳数,是否允许环回(也就是本地发出的数据包时候还接收) 一般在备用节点不止一台时使用。Bcast、ucast和mcast分别代表广播、单播和组播,是组织心跳的三种方式,任选其一即可。
auto_failback off #用来定义当主节点恢复后,是否将服务自动切回。如 果不想启用,请设置为off,默认为on。heartbeat的两台主机分别为主节点和备份节点。主节点在正常情况下占用资源并运行所有的服务,遇到故障时把资源交给备份节点并由备份节点运行服务。在该选项设为on的情况下,一旦主节点恢复运行,则自动获取资源并取代备份节点;如果该选项设置为off,那么当主节点恢复后,将变为备份节点,而原来的备份节点成为主节点。
#stonith baytech /etc/ha.d/conf/stonith.baytech #stonith的主要作用是使出现问题的节点从集群环境中脱离,进而释放集群资源,避免两个节点争用一个资源的情形发生。保证共享数据的安全性和完整性。
#watchdog /dev/watchdog #该选项是可选配置,是通过Heartbeat来监控系统的 运行状态。使用该特性,需要在内核中载入"softdog" 内核模块,用来生成实际的设备文件,如果系统中没 有这个内核模块,就需要指定此模块,重新编译内 核。编译完成输入"insmod softdog"加载该模块。 然后输入"grep misc /proc/devices"(应为10),输 入"cat /proc/misc |grep watchdog"(应为 )。最后,生成设备文件:"mknod /dev/watchdog c 10 130" 。即可使用此功能。
node node1 #主节点主机名,可以通过命令"uanme -n"查看。
node node2 #备用节点主机名。 理解:这里部分主备,需要把所有集群主机全部列出
ping 192.168.60.1 #选择ping的节点,ping节点选择的越好,HA集群就 越强壮,可以选择固定的路由器作为ping节点,或者 应用服务器但是 最好不要选择集群中的成员作为ping 节点,ping节点 仅仅用来测试网络连接。如果指定了多个ping节点如
ping 192.168.0.1 192.168.0.2
那么只有当能ping通所有ping节点 时才认为网络是连通的,否则则认为不连通
#ping_group group1 172.16.103.254 172.16.103.212 #ping_group就是同时ping 多个ip,只有所有的ip都无法ping通时,ipfail才会执 行切换的动作,保证了不会是因为被ping的ip出了问 题而产生误切换。 注意,ping_group不能和ping 同时使用
respawn hacluster /usr/lib/heartbeat/ipfail #该选项是可选配置, 意思 是以 hacluster 这 个用户身份运行/usr/lib/heartbeat/ ipfail 这个 插件 respawn列出与heartbeat一起启动和关闭的 进 程,该进程一般是和heartbeat集成的插件,这些 进程遇到故障可以自动重新启动。最常用的进程是 ipfail,此进程用于检测和处理网络故障,需要配合 ping或者ping_group语句,其中指定的ping node 来检测网络的连通性。在v2版本中,ipfail和crm有 冲突,不能同时使用,如果启用crm的情况下,可以 使用pingd插件代替ipfail
apiauth ipfail gid=haclient uid=hacluster #指定对客户端 api 的访问控制,缺省为不可 访问,这里指定了 有权限访问 ipfail用户和组。 apiauth的语法如下
apiauth apigroupname [uid=uid1,uid2 ...] [gid=gid1,gid2 ...]
示例
apiauth ping gid=haclient uid=alanr,root
在指定api访问权限时,可以指定具有访问权限的组或者用户,也可以同时指定组和用户。当进行同时指定时,只要用户是所指定的组或者用户中的其中一员即可访问api库。
也可以配置api默认用户组,命令如下
apiauth default gid=haclient
当配置了默认用户组时,其他所有api授权命令失效且该用户组中的成员可以访问任何api库
如果不在ha.cf文件指定api库的访问权限,则默认的访问权限如下
service default apiauth
ipfail uid=hacluster
ccm gid=haclient
ping gid=haclient
cl_status gid=haclient
lha-snmpagent uid=root
crm uid=hacluster
#crm respawn #是否开启Cluster Resource Manager(集群资源 管 理)功能这里不开启。 注意这里,还可以使用crm on或者 crm yes的写法,有些文档上说crm on的写 法如果cib.xml文件配置错误,会导致heartbeat重 启服务器 , 这点笔者没有遇到过,请读者自行尝试 。 注 意,当使用crm时,默认会自动使用下列命令
apiauth stonithd uid=root
apiauth crmd uid=hacluster
apiauth cib uid=hacluster
respawn hacluster ccm
respawn hacluster cib
respawn root stonithd
respawn root lrmd
respawn hacluster crmd
关于上述命令,和ipfail插件命令的意义相同,这里不再赘述
#autojoin none #该选项作用是将知道集权节点间密钥的服务器自动加入节点。autojoin有三个选项none,other,any他们各自的意义为
none:不使用autojoin功能
other:ha.cf文件中列出来的节点应自动加入集群,没有列出来的就无法自动加入集群
any:任何节点都可以自动加入集群
#hopfudge #设置串口的心跳信息最少的被转发次数,默认值为1
#deadping #设置的用来ping的节点的死亡时间,当超过该时间时则认为该节点网络无法连通,如果该值设置太小将导致系统过快的认为节点死亡。如果设置过大,则会延误系统判定时间。
#realtime off #允许/禁止实时执行将Heartbeat设置为高优先级,缺省为 on
#msgfmt classic/netstring #网线中的信息格式,可以是 classic 或 netstring
classic:利用base64库将二进制值转换为string值在网线中传输,该选项为默认选项。
netstring:在网线中直接传输二进制值,该选项由于不需要转换效率更高。
#use_logd yes/no #是否使用记录监控和日志的功能相似。虽然官方建议开启该选项,但是处于管理习惯,笔者没有开启该选项。
#conn_logd_time #如果前一个连接失败了,我们再次连接到记录监控器的间隔。
#compression bz2 #配置压缩模块它可以为 zlib 或 bz2,可以通过查看/usr/lib/heartbeat/plugins/HBcompress/目录下的文件以确定是否有相应的库。一般在CPU空闲且网络资源紧张的情况下启用该选项。
#compression_threshold #配置压缩的限度这个值决定压缩一个信息的限度,例如:如果限度为1,那么任何大于 1KB 的消息都会被压缩,缺省为2 (KB)
haresources
Haresources文件用于指定双机系统的主节点、集群IP、子网掩码、广播地址以及启动的服务等集群资源,文件每一行可以包含一个或多个资源脚本名,资源之间使用空格隔 开,参数之间使用两个冒号隔开,在两个HA节点上该文件必须完全一致,此文件的一般格式为:
node-name network <resource-group>
node-name表示主节点的主机名,必须和ha.cf文件中指定的节点名一致。network用于设定集群的IP地址、子网掩码和网络设备标识等。需要注意的是,这里指定的IP地址就是集群对外服务的IP地址,resource-group用来指定需要Heartbeat托管的服务,也就是这些服务可以由Heartbeat来启动和关闭。如果要托管这些服务,就必须将服务写成可以通过start/stop来启动和关闭的脚步,然后放到/etc/init.d/或者/etc/ha.d/resource.d/目录下,Heartbeat会根据脚本的名称自动去/etc/init.d或者/etc/ha.d/resource.d/目录下找到相应脚步进行启动或关闭操作。
下面对配置方法进行具体说明:
node1 IPaddr::192.168.60.200//eth0/ Filesystem::/dev/sdb5::/webdata::ext3 httpd cp.sh db2::db2inst1
MyISO1 IPaddr::192.168.89.121//eth0 对于该资源来说,MyISO1是主服务器
MyISO2 IPaddr::192.168.89.122//eth0 对于该资源来说,MyISO2是主服务器
理解:这里配置一个资源,需要指定资源主服务器,其他则是备份服务器,可以指定多个资源和不同的主服务器,做到互为主备
其中,node1是HA集群的主节点,IPaddr为heartbeat自带的一个执行脚步,Heartbeat首先将执行/etc/ha.d/resource.d/IPaddr 192.168.60.200/24 start的操作,也就是虚拟出一个子网掩码为255.255.255.0,IP为192.168.60.200的地址。此IP为Heartbeat对外提供服务的网络地址,同时指定此IP使用的网络接口为eth0。接着,Heartbeat将执行共享磁盘分区的挂载操作,"Filesystem::/dev/sdb5::/webdata::ext3"相当于在命令行下执行mount操作,即"mount -t ext3 /dev/sdb5 /webdata",然后启动httpd,接下列执行cp.sh这个脚本文件之后以db2inst1的身份启动db2。
其中cp.sh必须放置在/etc/ha.d/resource.d/或/etc/init.d/目录中,该脚本内容如下
cp /etc/ha.d/db2nodes.cfg /home/db2inst1/sqllib/db2nodes.cfg
注意主节点和备份节点中资源文件haresources要完全一样。
authkeys
authkeys文件用于设定Heartbeat的认证方式,共有3种可用的认证方式,即crc、md5和sha1。3种认证方式的安全性依次提高,但是占用的系统资源也依次增加。如果 Heartbeat集群运行在安全的网络上,可以使用crc方式;如果HA每个节点的硬件配置很高,建议使用sha1,这种认证方式安全级别最高;如果是处于网络安全和系统资源之间,可 以使用md5认证方式。这里我们使用crc认证方式,设置如下:
auth
crc
# sha1 sha1_any_password
# md5 md5_any_password
需要说明的一点是:无论auth后面指定的是什么数字,在下一行必须作为关键字再次出现,例如指定了"auth 6",下面一定要有一行"6 认证类型"。
最后确保这个文件的权限是600(即-rw-------)。
Heartbeat(注意iptables和selinux的问题)的更多相关文章
- 关闭Linux中的iptables,firewalld,SELINUX
firewalld 停止firewalld服务 [root@VM_0_13_centos var]# systemctl stop firewalld 或 [root@VM_0_13_centos v ...
- iptables与SELinux
iptables: 开始配置我们来配置一个filter表的防火墙.(1)查看本机关于IPTABLES的设置情况 [root@tp ~]# iptables -L Chain INPUT (policy ...
- 关闭Linux防火墙(iptables) 及 SELinux
一.关闭防火墙 1.重启后永久性生效: 开启:chkconfig iptables on 关闭:chkconfig iptables off 2.即时生效,重启后失效: 开启:service ipta ...
- (转)关闭iptables和SELinux
1. 关闭SELinux setenforce 0 #临时关闭 编辑/etc/selinux/config,找到SELINUX 行修改成为:SELINUX=disabled: #永久关闭, ...
- Linux分区方式及关闭iptables和selinux的方式
分区方式一般有三种 第一种:数据不是很重要 /boot(系统的引导分区): 系统引导的信息/软件 系统的内核 200M swap( 交换分区): 为了避免系统内存用光了导致系统 宕机 如果系统内存 ...
- Linux关闭iptables以及selinux
1.查看iptables状态 /etc/init.d/iptables status # 方法1 service iptables status # 方法2 2.重启后永久生效 chkconfig i ...
- CentOS 7.0如何安装配置iptables和seLinux以及firewalld
一.配置防火墙,开启80端口.3306端口 CentOS .0默认使用的是firewall作为防火墙,这里改为iptables防火墙. .关闭firewall: systemctl stop fire ...
- centos 防火墙 iptables firewalld SELinux
参考 Centos7 只启用iptables 禁用firewalld功能 java.net.NoRouteToHostException: 没有到主机的路由 相关内容 centos7 中才开始引用fi ...
- Centos Samba 服务器 iptables 和 SElinux 设置
1.安装samba服务器 # yum install samba 2.配置 # vi /etc/samba/smb.conf security = user (100行左右) 在Share Defin ...
随机推荐
- subprocess.Popen stdout重定向内容实时获取
python 打开一个新进程执行系统命令, test 执行完才能获取返回, test1 实时获取返回结果 import subprocess def test(cmd): p = subprocess ...
- PAT Advanced 1154 Vertex Coloring (25) [set,hash]
题目 A proper vertex coloring is a labeling of the graph's vertices with colors such that no two verti ...
- Tensorflow学习教程------下载图像识别模型inceptionV3
# coding: utf-8 import tensorflow as tf import os import tarfile import requests #inception模型下载地址 in ...
- Linux中的各种文件类型
Linux中有一句话:一切皆是文件 1.普通文件( - regular file ) (1).文本文件 文件中的内容是由文本构成的,文本指的是ASCII码字符.文件里的内容本质上都是数字( ...
- 使用pythonnet调用halcon脚本
最近的项目中遇到了使用python程序结合不同部分,其中包括使用halcon处理拍摄到的图像. halcon本身提供了c++与.NET的开发库,但无python库,网上有pyhalcon之类的库,但功 ...
- c语言中fflush的运用为什么没有效果呢,测试平台linux
/************************************************************************* > File Name: clearing. ...
- sqlite如何避免重复建表(获取已经存在的表)
找到已经存在的所有表,手动判断是否需要建表 SELECT name FROM SQLITE_MASTER WHERE type='table'ORDER BY name" 建表时sqlite ...
- matplotlib学习——设置线条颜色及形状
在图形表示中,不同的画布或画布中不同的函数,我们常常要用不同的形状或颜色来区分开,这里小编向大家介绍这些参数的表示方法: 一.控制颜色 b--blue c--cyan(青色) ...
- Matlab高级教程_第二篇:一个简单的混编例子
1. 常用的混编是MATLAB和VS两个编辑器之间的混编方式. 2. 因为MATLAB的核是C型语言,因此常见的混编方式是MATLAB和C型语言的混编. 3. 这里介绍一个简单的MATLAB语言混编成 ...
- 金蝶CLOUD消息队列服务