zabbix 安装使用手册(HA)-1

1.1 zabbix运行条件

Serverphp

zabbix server需运行在LAMP(Linux+Apache+Mysql+PHP)环境下,对硬件要求低。html

Agentjava

目前已有的agent基本支持市面常见的OS,包含Linux、HPUX、Solaris、Sun、windows。node

SNMPmysql

支持各种常见的网络设备。linux

1.2 zabbix功能

具有常见的商业监控软件所具有的功能(主机的性能监控、网络设备性能监控、数据库性能监控、FTP等通用协议监控、多种告警方式、详细的报表图表绘制)web

支持自动发现网络设备和服务器,支持分布式,能集中展现、管理分布式的监控点,扩展性强,server提供通用接口,能够本身开发完善各种监控sql

1.3 优劣势

优势:shell

Ø开源,无软件成本投入数据库

ØServer对设备性能要求低

Ø支持设备多

Ø支持分布式集中管理

Ø开放式接口,扩展性强

缺点:

Ø出现问题如需原厂支持需支付费用

Ø需在被监控主机上安装agent


2. zabbix配置文件

2.1 说明

Server指安装zabbix服务的服务器(如下简称服务器端),是最重要的部份,主要安装在linux系统上(支持多种操做系统),采用mysql存储监控数据并使用apache+php的方式呈现。

Agent指安装在被监控设备上的zabbix代理(如下简称代理),被监控设备上的数据由代理收集后统一上传到服务器端由服务器端收集、整理并呈现。

SNMP也是agent的一种,指支持SNMP协议的设备(也能够是服务器),经过设定SNMP的参数将相关监控数据传送至服务器端(大部份的交换机、防火墙等网络设备都支持SNMP协议)。

IPMIAgent的另外一种方式,主要应用于设备的物理性能监控,例如设备的温度、风扇的转速等。

2.2 zabbix架构

zabbix支持多种网络方式下的监控,可经过分布式的方式部署和安装监控代理,整个架构如图所示。

154624421.png



3. 系统规划

Ø系统环境:CentOS5.6 32bitRHEL6.2 64bit

Ø每一个节点服务器都有两块网卡,一块用做链接公用网络,另外一块经过以太网交叉线链接两个节点,做为心跳监控,网络以及IP地址规划如表所示:

节点类型

IP地址规划

主机名

类型

主用节点

eth0192.168.8.73/24

server01

Public IP

eth110.1.1.1/24

private01

private IP

eth0:0192.168.8.89

Virtual IP

备用节点

eth0192.168.8.74/24

server02

Public IP

eth110.1.1.2/24

private02

private IP

配置每一个节点的/etc/hosts文件,保证两个节点内容一致/etc/hosts文件内容以下:

192.168.8.73            server01

192.168.8.74            server02

10.1.1.1               private01

10.1.1.2               private02

Ø系统拓扑:

154625844.jpg


4. zabbix server安装

Øzabbix版本:2.0.6

4.1 同步授时中心时间

Ø同步授时中心的时间,强制把系统时间写入CMOS

ntpdate pool.ntp.org
clock -w

注意:这里说的是系统时间,是由linux操做系统维护的。在系统启动时,Linux操做系统将时间从CMOS中读到系统时间变量中,之后修改时间经过修改系统时间实现。为了保持系统时间与CMOS时间的一致性,Linux每隔一段时间会将系统时间写入CMOS。因为该同步是每隔一段时间(大约是11分钟)进行的,在咱们执行date -s后,若是立刻重起机器,修改时间就有可能没有被写入CMOS

Ø天天凌晨、6点、12点和18点与授时中心同步时间,并将结果保存至/var/log/ntpdate.log文件中。

crontab -u root -e

添加:

0 0,6,12,18 * * * /usr/sbin/ntpdatepool.ntp.org >> /var/log/ntpdate.log

查询一下服务crond的状况:

chkconfig --list crond

161539397.png

查询一下用户rootcron的配置状况:

crontab -u root -l

Ø注意:linux下防火墙规则若是极严格的话可能会影响 ntpd 对时,打开 sport 123 便可(假设 OUTPUT链全 ACCEPT):

iptables -A INPUT -p udp --sport 123 -j ACCEPT


4.2 网卡服务配置

Ø中止NetworkManager服务,这样网卡就不受NetworkManage的控制。

/etc/init.d/NetworkManager stop
chkconfig NetworkManager off


4.3 创建LAMP环境

4.3.1 CentOS5.6

Ø安装rpmforge-release-0.5.3-1.el5.rf

rpm -ivh rpmforge-release-0.5.3-1.el5.rf.i386.rpm

备注:zabbix编译安装中的选项“--with-ssh2”对libssh2的版本要求为>=1.0.0epel源的版本为0.18不符合需求,rpmforge源的版本为1.2.9符合需求。

注意:64位系统请安装此包

rpm -ivh rpmforge-release-0.5.3-1.el5.rf.x86_64.rpm

ØLAMP环境:

yum -y install httpd mysql-server php

Ø安装相关依赖包:

yum install -y gcc mysql-devel net-snmp-devel net-snmp-utils php-gd php-mysqlphp-common php-bcmath php-mbstring php-xml curl-devel iksemel* OpenIPMIOpenIPMI-devel fping libssh2 libssh2-devel unixODBC unixODBC-develmysql-connector-odbc openldap openldap-devel java java-devel

Ø配置http不随系统启动:

chkconfig httpd off
chkconfig mysqld on

注意:apache届时由heartbeat启动。


4.3.2 RHEL 6.2

Ø使用安装光盘创建本地yum源:

卸载已挂载的光盘:

umount /dev/sr0

挂载光盘并写入配置文件:

mount /dev/sr0 /media/
vi /etc/fstab

末尾添加:

/dev/sr0        /media                  iso9660  defaults  0 0

建立yum配置文件:

vi /etc/yum.repos.d/rhel6.repo

添加:

[base]
name=base
baseurl=file:///media/
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

Ø安装epel-release-6-8.noarch.rpm

rpm -ivh epel-release-6-8.noarch.rpm

Ø导入key

rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6

Ø添加163上的CentOS6源:

wget -O /etc/yum.repos.d/CentOS6-Base-163.repohttp://mirrors.163.com/.help/CentOS6-Base-163.repo

Ø编辑CentOS6-Base-163.repo把文件里面的$releasever所有替换为6

vi /etc/yum.repos.d/CentOS6-Base-163.repo

161636395.png

ØLAMP环境:

yum -y install httpd mysql-server php

Ø安装相关依赖包:

yum install -y gcc mysql-devel net-snmp-devel net-snmp-utils php-gd php-mysqlphp-common php-bcmath php-mbstring php-xml curl-devel iksemel* OpenIPMIOpenIPMI-devel fping libssh2 libssh2-devel unixODBC unixODBC-develmysql-connector-odbc openldap openldap-devel java java-devel

Ø配置http不随系统启动:

chkconfig httpd off
chkconfig mysqld on

注意:apache届时由pacemaker启动。


4.4 禁用SELINUX

setenforce 0

修改/etc/selinux/config文件中设置SELINUX=disabled

sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

154625691.png

备注:

设置SELinux 成为enforcing模式

setenforce 1

设置SELinux 成为permissive模式

setenforce 0


4.5 新建zabbix组和用户

/usr/sbin/groupadd zabbix
/usr/sbin/useradd -g zabbix zabbix


4.6 编译安装zabbix

4.6.1 编译安装

Ø下载解压zabbix

wget http://sourceforge.net/projects/zabbix/files/ZABBIX%20Latest%20Stable/2.0.6/zabbix-2.0.6.tar.gz/download
tar zxvf zabbix-2.0.6.tar.gz

Ø编译安装:

cd /root/zabbix-2.0.6/
./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --enable-proxy --with-mysql --enable-java --enable-ipv6 --with-net-snmp --with-libcurl --with-ldap --with-ssh2 --with-jabber --with-openipmi --with-unixodbc
make && make install

configure:error: Invalid NET-SNMP directory - unable to find net-snmp-config

编译安装zabbix时,配置时报以上错,致使检测系统环境不成功。提示unableto find net-snmp-config,说明缺乏相关的依赖性。
这是由于,在linux中,大多数软件都是开源的,而且能够自由使用。所以在开发时能够用到其余的软件包时咱们直接就拿来了,不用在花功夫去从新编写,这就形成了所谓的依赖性。
那么怎么解决该问题那?
解决办法一:
找出net-snmp-config属于哪一个软件包,而后安装便可。
yum search net-snmp-config,发现net-snmp-config属于软件包net-snmp-develyum安装该软件包,解决该问题。
解决办法二:
在配置时,咱们加上了--with-net-snmp这个选项,所以须要检查系统环境是否有该软件包支持。所以,在配置时,不要加上--with-net-snmp这个选项即不会报以下错误configure:error: Invalid NET-SNMP directory - unable to find net-snmp-config
参考文献:zabbix中文文档http://www.linuxmr.com/zabbix2/


4.6.2 建立zabbix数据库

Ø开启mysql,修改mysql root密码为123456(实际使用环境中可自定义密码):

/etc/init.d/mysqld start
/usr/bin/mysqladmin -u root password 123456

Ø建立zabbix库,设置字符为utf8

/usr/bin/mysql -uroot -p123456
create database zabbix character set utf8;
grant all privileges on zabbix.* to 'zabbix'@'192.168.8.89' identified by '123456';
grant all privileges on zabbix.* to 'zabbix'@'localhost' identified by '123456';

开启zabbix用户远程链接权限(可选):

grant all privileges on zabbix.* to 'zabbix'@'%' identified by '123456';
quit

备注:zabbix数据库能够和zabbix服务器分离,采用后端数据层的mysql服务器存储数据提升安全,本例因实体机仅有二台,故zabbix servermysql server还在同一台物理机中。

注意:本例为heartbeatVIP地址。(请按实际环境设置VIP地址):

Ø导入数据库:

cd /root/zabbix-2.0.6/database/mysql/
mysql -uzabbix -h 192.168.8.89 -p123456 zabbix < schema.sql
mysql -uzabbix -h 192.168.8.89 -p123456 zabbix < p_w_picpaths.sql
mysql -uzabbix -h 192.168.8.89 -p123456 zabbix < data.sql


4.6.3 复制配置文件到zabbix安装目录

cp -R /root/zabbix-2.0.6/conf/zabbix_agentd /usr/local/zabbix/etc/
cp /root/zabbix-2.0.6/conf/zabbix_agentd.win.conf /usr/local/zabbix/etc/
cp /root/zabbix-2.0.6/conf/zabbix_proxy.conf /usr/local/zabbix/etc/

&#216;修改zabbix_server.conf配置文件数据库(mysql)相关部分:

vim /usr/local/zabbix/etc/zabbix_server.conf

修改如下内容:

DBUser=zabbix
DBPassword=123456


4.6.4 添加服务端口

vim /etc/services

在末尾追加如下内容:

#zabbix services
zabbix-agent    10050/tcp                       # Zabbix Agent
zabbix-agent    10050/udp                       # Zabbix Agent
zabbix-trapper  10051/tcp                       # Zabbix Trapper
zabbix-trapper  10051/udp                       # Zabbix Trapper


4.6.5 修改zabbix目录用户属性

chown -R zabbix.zabbix /usr/local/zabbix/


4.6.6 配置软链接

&#216; zabbix 命令行操做文件作连接,方便系统能够找获得。

ln -s /usr/local/zabbix/bin/* /usr/bin/
ln -s /usr/local/zabbix/sbin/* /usr/sbin/


4.6.7 配置zabbix启动脚本

&#216;拷贝zabbix启动脚本到/etc/init.d/下。

cp /root/zabbix-2.0.6/misc/init.d/fedora/core/zabbix_* /etc/init.d/

&#216;修改zabbix启动脚本中程序目录的位置。

vim /etc/init.d/zabbix_server

修改:

BASEDIR=/usr/local/zabbix
vim /etc/init.d/zabbix_agentd

修改:

BASEDIR=/usr/local/zabbix

&#216;添加可执行权限。

chmod +x /etc/init.d/zabbix_server
chmod +x /etc/init.d/zabbix_agentd


4.6.8 添加开机启动服务

chkconfig --add zabbix_server
chkconfig --add zabbix_agentd
chkconfig --level 345 zabbix_server off
chkconfig --level 345 zabbix_agentd on

注意:zabbix_server届时由heartbeat启动。

使用 chkconfig --list 检查一下:

chkconfig --list | grep zabbix


4.6.9 web相关配置

mkdir /var/www/html/zabbix
cp -a /root/zabbix-2.0.6/frontends/php/* /var/www/html/zabbix/
chown -R zabbix.zabbix /var/www/html/zabbix/

&#216;php配置文件作相应的调整(实际使用环境中可按需求更改,zabbix2.0.6运行的最低环境要求请参考下图):

154625878.png

vim /etc/php.ini

修改:

max_execution_time = 600
max_input_time = 600
memory_limit = 256M
post_max_size = 32M
upload_max_filesize = 16M
date.timezone = PRC

php.ini中的时区设置date.timezone = PRC

无心中发现 lnmp 默认的 php.ini 配置中有一行 date.timezone = PRC。PRC,People’s Republic of China,×××,也就是日期使用中国的时区。

date.timezone 是 PHP 5.1 中新增长的配置文件参数,默认 date.timezone 是被注释掉的,也就是默认时区是 utc,lnmp 改成了 date.timezone = PRC,这样能够解决时间相差八小时的问题,看来 lnmp 的本土化工做作得不错。不过貌似这个参数通常都设成 Asia/Shanghai吧?在 PHP 官方文档上找了半天才找到 PRC 这个参数,它不在Asia这个分类中,而在Others,通常人都会在 Asia 里面找吧。

搜索了一下 PHP 源码,在 ext/date/lib/timezonemap.h 中看到以下代码

{ "cst",   0,  28800, "Asia/Chongqing"                },

{ "cst",   0,  28800, "Asia/Chungking"                },

{ "cst",   0,  28800, "Asia/Harbin"                   },

{ "cst",   0,  28800, "Asia/Kashgar"                  },

{ "cst",   0,  28800, "Asia/Macao"                    },

{ "cst",   0,  28800, "Asia/Macau"                    },

{ "cst",   0,  28800, "Asia/Shanghai"                 },

{ "cst",   0,  28800, "Asia/Taipei"                   },

{ "cst",   0,  28800, "Asia/Urumqi"                   },

{ "cst",   0,  28800, "PRC"                           },

{ "cst",   0,  28800, "ROC"                           },

对PHP 源码的时间部分没有什么研究,姑且认为这几个参数都表示 UTC+8 的东八区中国的北京时间吧。

固然,能够在 PHP 代码中调用 date_default_timezone_set 函数设置运行时的时区,这是常识,我就很少说了。

参考文献:http://demon.tw/software/php-date-timezone.html

&#216;启动zabbixserveragent

/etc/init.d/zabbix_agentd start
/etc/init.d/zabbix_server start


&#216;打开浏览器,输入http://IP/zabbix/,就会出现WEB界面安装向导,按向导提示完成zabbix安装。

161737983.png

默认:Next

161750396.png

默认:Next

161803624.png

输入Mysql数据库端口:3306,用户名:zabbix,密码:123456

注意:

llocalhost改成VIP地址。

l此处是zabbix链接mysql数据库时用到的用户名和密码,切勿混淆。

测试链接经过后→Next

161819941.png

默认:Next(实际使用环境中可按需求更改)

161837715.png

默认:Next

161851502.png

注意:若是出现提示文件zabbix.conf.php没法建立,则是zabbix目录没法写入,/var/www/html/zabbix的权限不为apache.apache

解决方法一:点击“Download configuration file”,将下载的zabbix.conf.php文件上传到服务器的/var/www/html/zabbix/conf/zabbix.conf.php去而后点击“Retry”就不会有Fail了。

解决方法二:输入如下命令也可解决。

chown -R apache.apache /var/www/html/zabbix

161917106.png

点击“Finish”完成安装

161931756.png

输入用户名:admin,密码:zabbix

161945730.png


4.7 解决zabbix图中出现中文乱码

&#216;设置zabbix的语言为中文时,图中的中文会变成方块,以下图所示:

161957774.png

这个问题是因为zabbixweb端没有中文字库,须要把中文字库加上便可。

1)windows系统中的c:\windows\fonts目录中copy一个本身喜欢的字体文出来,如msyh.ttf(雅黑)

2)copy出来的字体上传到zabbix server网站目录中的fonts目录下;

3)zabbix server网站目录中的fonts目录里原来的“DejaVusSans.ttf”更名,例如为“DejaVusSans.ttf.bak”;

cd /var/www/html/zabbix/fonts
mv DejaVuSans.ttf /var/www/html/zabbix/fonts/DejaVuSans.ttf.bak

4)将上传上去的文件,例如“mysh.ttf”改成“DejaVusSans.ttf”;

mv msyh.ttf /var/www/html/zabbix/fonts/DejaVuSans.ttf

5)刷新页面后会发现原来乱码的地方OK了。

162013887.png


4.8 更改监控项类型

&#216;监控项(items)默认为被动式,因双主配置使用vipserver端发起的请求包没法回到vip地址,故临时可用主动式的方式解决此问题。

162038790.png


4.9 防火墙设置

&#216;ntp

iptables -A INPUT -p udp --sport 123 -j ACCEPT

&#216;apachemysql

iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 3306 -j ACCEPT

&#216;zabbix server

iptables -A INPUT -p tcp --dport 10050 -j ACCEPT
iptables -A INPUT -p tcp --dport 10051 -j ACCEPT
iptables -A INPUT -p udp --dport 10050 -j ACCEPT
iptables -A INPUT -p udp --dport 10051 -j ACCEPT


iptables -A INPUT -p tcp -s 客户端IP -m multiport --dports 10050,10051 -j ACCEPT
iptables -A INPUT -p udp -s 客户端IP -m multiport --dports 10050,10051 -j ACCEPT


5. mysql数据库双主同步配置说明

5.1 服务器ABip地址

服务器A10.1.1.1

服务器B10.1.1.2


5.2 备份zabbix

mysqldump -h localhost -u root -p123456 zabbix >zabbix.sql


5.3 分别在两台服务器上创建同步用户

&#216;设置数据库同步账户:

mysql -u root -p123456

服务器A

grant replication slave,file on *.* to 'tongbu'@'10.1.1.2' identified by 'tongbu';
flush privileges;

服务器B

grant replication slave,file on *.* to 'tongbu'@'10.1.1.1' identified by 'tongbu';
flush privileges;

&#216;查看已创建的同步帐户:

use mysql;
select user,host from user;

162206541.png


5.4 修改服务器的数据库配置文件/etc/my.cnf

&#216;服务器Amy.cnf配置:

注意:server-id默认为1,通常主从同步中,主服务器server-id1,双主同步原则上两台同步服务器server-id不一样便可。

vi /etc/my.cnf

user=mysql后添加:

log-bin=mysql-bin
relay-log=relay-bin
relay-log-index=relay-bin-index
server-id = 1
master-connect-retry=30
binlog-do-db=zabbix
replicate-do-db=zabbix
binlog-ignore-db=mysql
replicate-ignore-db=mysql
binlog-ignore-db=test
replicate-ignore-db=test
binlog-ignore-db=largedate
replicate-ignore-db=largedate
binlog-ignore-db=information_schema
replicate-ignore-db=information_schema
binlog-ignore-db=performance_schema
replicate-ignore-db=performance_schema
log-slave-updates
slave-skip-errors=all

lserver-id = 1                                                         服务器ID

lmaster-connect-retry=30                                      断点重试间隔为30

lbinlog-do-db=zabbix                                             表示同步zabbix数据库

lreplicate-do-db=zabbix                                         表示同步zabbix数据库

lbinlog-ignore-db=mysql                                        不一样步mysql数据库

llog-slave-updates      

在从服务器上将复制过来的更新操做写入二进制日志,从而能够获得完整的二进制日志,便于数据恢复和重现。

lslave-skip-errors=all

l跳过复制错误,该参数目前设置值为all,即跳过全部复制错误,实际使用时也能够缩小跳过错误的范围。

备注:binlog-ignore-dbreplicate-ignore-db表示不须要同步的数据库,能够不设置(不设置时,mysql也只会同步binlog-do-db中设置的数据库),可是为了安全起见,建议设置该参数。yum安装的mysql实际只须要不一样步mysqltest库便可,若是从官网下载rpm包安装mysql5.5则不一样。

注意:不少案例会将同步帐户设置在此配置文件中,我的不建议这样作。

&#216;服务器Bmy.cnf配置与服务器A同样,只须要将server-id改成2

&#216;重启服务器A和服务器Bmysql

/etc/init.d/mysqld restart


5.5 进入数据库查看服务器AB做为主服务器的状态

&#216;服务器A:进入数据库

mysql -u root -p123456

查看服务器A做为主服务器的状态:

show master status;

162220911.png

&#216;服务器B:进入数据库

mysql -u root -p123456

查看服务器B做为主服务器的状态:

show master status;

162233226.png


5.6 分别在两个服务器上设置并启动slave

&#216;服务器A:进入数据库设置slave参数,其中master_usermaster_password为在服务器B上面设置的同步帐号的名称和密码;master_host为服务器BIP地址;master_log_filemaster_log_pos为服务器B中查看做为主服务器状态时显示的FilePosition

change master to master_user='tongbu',
master_password='tongbu',
master_host='10.1.1.2',
master_port=3306,
master_log_file='mysql-bin.000001',
master_log_pos=106;

&#216;启动slave进程:

start slave;

&#216;服务器B上的slave设置与服务器A相同,只是change master命令中的master属性均为服务器A

&#216;查看slave状态,其中Slave_IO_RunningSlave_SQL_Running均为Yes即说明同步启动成功。

show slave status\G;

162247584.png

&#216;在服务器B上查看slave进程,检查其状态,看到Slave_IO_RunningSlave_SQL_Running均为Yes,至此双主同步配置成功。在两台服务器的zabbix库中任意添加数据,均可以同步到对端服务器上。

&#216;注意:

l若是出现Slave_IO_Running: No或启动slave出现Could not initialize master info structure;的错误,分别在两个服务器上从新设置并启动slave

stop slave;
reset slave;

l若是出现Last_IO_Error: error connecting to master 'tongbu@10.1.1.2:3306' -retry-time: 30  retries: 86400的错误,请检查防火墙配置。

&#216;mysql中可经过如下命令来查看主从状态

l查看master状态

show master status;

l查看slave状态

show slave status;

l查看当前进程

show processlist G;

l中止slave进程

stop slave;

l开始slave进程

start slave;

l重置slave进程

reset slave;


6. 安装heartbear&pacemaker

&#216;系统环境:CentOS5.6 32bit

注意:CentOS6.xRHEL6.x请使用cman&pacemaker的模式建立集群。

6.1 概念组成及工做原理

6.1.1 heartbeat的概念

&#216;HeartbeatLinux-HA项目中的一个组件,也是目前开源HA项目中最成功的一个例子, Linux-HA的全称是High-Availability Linux,这个开源项目的目标是:经过社区开发者的共同努力,提供一个加强linux可靠性(reliability)、可用性(availability)和可服务性(serviceability)(RAS)的群集解决方案。

&#216;Heartbeat提供了全部 HA 软件所须要的基本功能,好比心跳检测和资源接管、监测群集中的系统服务、在群集中的节点间转移共享 IP 地址的全部者等。

&#216;Linux-HA的官方网站: http://www.linux-ha.org

http://hg.linux-ha.org


6.1.2 HA集群相关术语

1)节点(node

运行heartbeat进程的一个独立主机,称为节点,节点是HA的核心组成部分,每一个节点上运行着操做系统和heartbeat软件服务,在heartbeat集群中,节点有主次之分,分别称为主节点和备用/备份节点,每一个节点拥有惟一的主机名,而且拥有属于本身的一组资源,主节点上通常运行着一个或多个应用服务。而备用节点通常处于监控状态。

2)资源(resource

资源是一个节点能够控制的实体,而且当节点发生故障时,这些资源可以被其它节点接管,heartbeat中,能够当作资源的实体有:

磁盘分区、文件系统、IP地址、应用程序服务、NFS文件系统

3)事件(event

也就是集群中可能发生的事情,例如节点系统故障、网络连通故障、网卡故障、应用程序故障等。这些事件都会致使节点的资源发生转移,HA的测试也是基于这些事件来进行的。

4)动做(action

事件发生时HA的响应方式,动做是由shell脚步控制的,例如,当某个节点发生故障后,备份节点将经过事先设定好的执行脚本进行服务的关闭或启动。进而接管故障节点的资源。


6.1.3 Heartbeat的组成

(1) Heartbeat的结构

   Heartbeat1.x和2.0.x版本的结构十分简单,各个模块都集中在heartbeat中,到了3.0版本后,整个heartbeat项目进行了拆分,分为不一样的项目来分别进行开发。

  Heartbeat2.0.x以前的版本具备的模块:

&#61692;  heartbeat: 节点间通讯检测模块

&#61692;  ha-logd: 集群事件日志服务

&#61692;  CCM(Consensus ClusterMembership):集群成员一致性管理模块

&#61692;  LRM (Local ResourceManager):本地资源管理模块

&#61692;  Stonith Daemon: 使出现问题的节点从集群环境中脱离

&#61692;  CRM(Cluster resourcemanagement):集群资源管理模块

&#61692;  Cluster policy engine: 集群策略引擎

&#61692;  Cluster transition engine:集群转移引擎

Heartbeat3.0拆分以后的组成部分:

   Heartbeat:将原来的消息通讯层独立为heartbeat项目,新的heartbeat只负责维护集群各节点的信息以及它们以前通讯;

   Cluster Glue:至关于一个中间层,它用来将heartbeat和pacemaker关联起来,主要包含2个部分,即为LRM和STONITH。

   Resource Agent:用来控制服务启停,监控服务状态的脚本集合,这些脚本将被LRM调用从而实现各类资源启动、中止、监控等等。

   Pacemaker:也就是Cluster Resource Manager (简称CRM),用来管理整个HA的控制中心,客户端经过pacemaker来配置管理监控整个集群。

Pacemaker 提供了多种用户管理接口,分别以下:

1)crm shell:基于字符的管理方式;

2)一个使用Ajax Web配置方式的web konsole窗口;

3)hb_gui ,即heartbeat的gui图形配置工具,这也是原来2.1.x的默认GUI配置工具;

4)DRBD-MC,一个基于Java的配置管理工具。


(2) Pacemaker内部组成及与各模块之间关系

162312360.png

(3) Heartbeat3.x内部组成及之间关系

162324641.png


(4) Heartbeat各个版本之间的异同

与1.x风格相比,Heartbeat2.1.x版本以后功能变化以下:

1)保留原有全部功能

如,网络,heartbeat ,机器down时都可切换资源。

2)自动监控资源

默认状况下每2分钟检测资源运行状况,若是发现资源不在,则尝试启动资源,若是60s后还未启动成功,则资源切换向另节点。时间能够修改。

3)  能够对各资源组实现独立监控.

好比apache运行在node1上,tomcat运行在node2上,Heartbeat可同时实现两台主机的服务监控。

4)同时监控系统负载

能够自动将资源切换到负载低的node上。

   Heartbeat官方最后一个STABLE release 2.x 版本是2.1.4,Heartbeat 3官方正式发布的首个版本是3.0.2,Heartbeat 3与Heartbeat2.x的最大差异在于,Heartbeat3.x按模块把的原来Heartbeat2.x拆分为多个子项目,可是HA实现原理与Heartbeat2.x基本相同。配置也基本一致。

(5) Heartbeat集群的通常拓扑图

162337745.png

参考文献:http://ixdba.blog.51cto.com/2895551/745228


6.2 安装heartbeat

&#216;卸载rpmforge-release-0.5.3-1.el5.rf

rpm -e rpmforge-release-0.5.3-1.el5.rf

备注:清除rpmforge源后才可安装heartbeat,不然会有冲突。

&#216;安装epel-release-5-4.noarch.rpm

rpm -ivh epel-release-5-4.noarch.rpm

&#216;导入key

rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL

&#216;添加Cluster Labs repo

wget -O /etc/yum.repos.d/pacemaker.repo http://clusterlabs.org/rpm/epel-5/clusterlabs.repo


&#216;清除yum缓存:

yum clean all

&#216;安装heartbeat

yum install -y pacemaker corosync heartbeat


6.3 配置heartbeat

6.3.1 主配置文件(/etc/ha.d/ha.cf)

&#216;注意:heartbeat安装后,3个配置文件默认存放在/usr/share/doc/heartbeat-3.0.3/目录中,需将其拷贝至/etc/ha.d/目录中。

cp /usr/share/doc/heartbeat-3.0.3/ha.cf /etc/ha.d/
cp /usr/share/doc/heartbeat-3.0.3/haresources /etc/ha.d/
cp /usr/share/doc/heartbeat-3.0.3/authkeys /etc/ha.d/

&#216;配置主配置文件:

vi /etc/ha.d/ha.cf

下面对ha.cf文件的每一个选项进行详细介绍,其中“#”号后面的内容是对选项的注释说明。

#debugfile /var/log/ha-debug

logfile /var/log/ha-log    #指名heartbeat的日志存放位置。

#crm on                     #是否开启ClusterResourceManager(集群资源管理)功能。

bcast eth1                  #指明心跳方式使用以太广播方式,而且是在eth1接口上进行广播。

keepalive 2                 #指定心跳间隔时间为2秒(即每两秒钟在eth1上发送一次广播)。

deadtime30                 #指定备用节点在30秒内没有收到主节点的心跳信号后,则当即接管主节点的服务资源。

warntime10                 #指定心跳延迟的时间为十秒。当10秒钟内备份节点不能接收到主节点的心跳信号时,就会往日志中写入一个警告日志,但此时不会切换服务。

initdead120                #在某些系统上,系统启动或重启以后须要通过一段时间网络才能正常工做,该选项用于解决这种状况产生的时间间隔。取值至少为deadtime的两倍。

ucasteth0 192.168.8.73     #使用网卡eth0的udp单播来通知心跳

udpport 694                 #设置广播通讯使用的端口,694为默认使用的端口号。

baud 19200                  #设置串行通讯的波特率。

#serial/dev/ttyS0          #选择串行通讯设备,用于双机使用串口线链接的状况。若是双机使用以太网链接,则应该关闭该选项。

auto_failbackoff           #用来定义当主节点恢复后,是否将服务自动切回,heartbeat的两台主机分别为主节点和备份节点。主节点在正常状况下占用资源并运行全部的服务,遇到故障时把资源交给备份节点并由备份节点运行服务。在该选项设为on的状况下,一旦主节点恢复运行,则自动获取资源并取代备份节点,若是该选项设置为off,那么当主节点恢复后,将变为备份节点,而原来的备份节点成为主节点。

#stonith baytech /etc/ha.d/conf/stonith.baytech     # stonith的主要做用是使出现问题的节点从集群环境中脱离,进而释放集群资源,避免两个节点争用一个资源的情形发生。保证共享数据的安全性和完整性。


#watchdog/dev/watchdog     #该选项是可选配置,是经过Heartbeat来监控系统的运行状态。使用该特性,须要在内核中载入"softdog"内核模块,用来生成实际的设备文件,若是系统中没有这个内核模块,就须要指定此模块,从新编译内核。编译完成输入"insmod softdog"加载该模块。而后输入"grepmisc /proc/devices"(应为10),输入"cat /proc/misc |grepwatchdog"(应为130)。最后,生成设备文件:"mknod /dev/watchdog c10130" 。便可使用此功能。

node node1                  #主节点主机名,能够经过命令“uanme -n”查看。

node node2                  #备用节点主机名。

ping192.168.8.1             #选择ping的节点,ping 节点选择的越好,HA集群就越强壮,能够选择固定的路由器做为ping节点,可是最好不要选择集群中的成员做为ping节点,ping节点仅仅用来测试网络链接。


respawnhacluster /usr/lib/heartbeat/ipfail    #该选项是可选配置,列出与heartbeat一块儿启动和关闭的进程,该进程通常是和heartbeat集成的插件,这些进程遇到故障能够自动从新启动。最经常使用的进程是ipfail,此进程用于检测和处理网络故障,须要配合ping语句指定的ping node来检测网络的连通性。其中hacluster表示启动ipfail进程的身份。

检查配置:

egrep -v '^$|^#' /etc/ha.d/ha.cf

162413214.png


6.3.2 资源文件(/etc/ha.d/haresources)

&#216;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/目录下找到相应脚本进行启动或关闭操做。

&#216;下面对配置方法进行具体说明:

vi /etc/ha.d/haresources

末尾添加:

server01 IPaddr::192.168.8.89/24/eth0 httpd zabbix_server

其中,zabbixHA集群的主节点,heartbeat首先将执行/etc/ha.d/resource.d/192.168.8.89/24 start的操做,也就是虚拟出一个子网掩码为255.255.255.0IP192.168.8.89的地址,此IPheartbeat对外提供服务的网络地址,同时指定此IP使用的网络接口为eth0,接着启动apachezabbix_server服务。

注意:主节点和备份节点中资源文件haresources要彻底同样。


6.3.3 认证文件(/etc/ha.d/authkeys)

&#216;authkeys文件用于设定heartbeat的认证方式,共有三种可用的认证方式:crcmd5sha1,三种认证方式的安全性依次提升,可是占用的系统资源也依次增长。若是heartbeat集群运行在安全的网络上,可使用crc方式,若是HA每一个节点的硬件配置很高,建议使用sha1,这种认证方式安全级别最高,若是是处于网络安全和系统资源之间,可使用md5认证方式。这里咱们使用crc认证方式,设置以下:

vi /etc/ha.d/authkeys

修改:

auth 1
1 crc
#2 sha1 HI!
#3 md5 Hello!

须要说明的一点是:不管auth后面指定的是什么数字,在下一行必须做为关键字再次出现,例如指定了“auth 1”,下面必定要有一行“1 认证类型”。

注意:最后确保这个文件的权限是600(即-rw-------),不然heartbeat将没法启动。

chmod 600 /etc/ha.d/authkeys


6.3.4 配置备用节点的heartbeat

&#216;在备用节点上也须要安装heartbeat,安装方式与在主节点安装过程如出一辙。安装完毕,在备用节点上使用scp命令把主节点配置文件传输到备份节点。

scp -r 192.168.8.73:/etc/ha.d/* /etc/ha.d/

注意:修改主配置文件ha.cf中的目标服务器为ucast eth0192.168.8.74

vi /etc/ha.d/ha.cf

修改:

ucast eth0 192.168.8.74


6.4 启动heartbeat

&#216;修改heartbeat目录权限,能够用如下命令:

find / -type d -name "heartbeat" -exec chown -R hacluster {} \;
find / -type d -name "heartbeat" -exec chgrp -R haclient {} \;

&#216;设置环境变量,增长在/etc/profile最后:

vi /etc/profile

添加:

export OCF_ROOT=/usr/lib/ocf

执行source命令:

source /etc/profile

&#216;启动heartbeat

/etc/init.d/heartbeat start


6.5 配置crm

&#216;禁用stonith

crm configure property stonith-enabled=false

&#216;添加ClusterIPapachezabbix server

crm configure primitive ClusterIP ocf:heartbeat:IPaddr2 params ip=192.168.8.89 cidr_netmask=24 op monitor interval="20s"
crm configure primitive WebSite lsb:httpd op start interval="0s" timeout="120s" op monitor interval="20s" timeout="20s" meta migration-threshold="1" failure-timeout="60s"
crm configure primitive Zabbix-HA lsb:zabbix_server op start interval="0s" timeout="120s" op monitor interval="20s" timeout="20s" meta migration-threshold="1" failure-timeout="60s"

备注:以上是采用lsb的方式来管理apache,即/etc/init.d/httpd启动脚本。如需使用ocf来管理,则进行以下配置,开 Apachestatus URL

vi /etc/httpd/conf/httpd.conf

去除如下内容的注释:

<Location /server-status>
   SetHandler server-status
   Order deny,allow
   Deny from all
   Allow from 127.0.0.1
</Location>

添加apache资源的命令则为:

crm configure primitive WebSite ocf:heartbeat:apache params configfile=/etc/httpd/conf/httpd.conf statusurl="http://localhost/server-status" op monitor interval=20s

&#216;忽略节点的法定人数策略:

crm configure property no-quorum-policy=ignore

&#216;,缺省为0

crm configure rsc_defaults resource-stickiness=100

&#216;设置apachezabbix servervirtual ip为一个group

crm configure group certusGroup ClusterIP WebSite Zabbix-HA

备注:certusGroup是自定义的组名idClusterIP WebSiteZabbix-HA则是要放到certusGroup组中的资源,这里是有序的,三者依次执行。ClusterIP将优先于WebSiteZabbix-HA执行。

&#216;强制保证资源启动中止顺序:

crm configure order apache-after-ip mandatory: ClusterIP WebSite

&#216;添加新资源pingd:(ping 192.168.8.1,用于代替ipfail

crm configure primitive clusterPingd ocf:heartbeat:pingd params host_list=192.168.8.1 multiplier=100

&#216;添加pingdclone

crm configure clone clusterPingdclone clusterPingd meta globally-unique=false

&#216;ClusterIP绑定:(ClusterIP运行的节点必定要有pingd运行)

crm configure location my_app_on_connected_node ClusterIP rule -inf: not_defined pingd or pingd lte 0

&#216;查询状态:

162513918.png

&#216;验证配置文件是否正确:

crm_verify -L -V

&#216;以上内容在二个节点作相同配置,若是配置错误能够参考crm命令修改。也能够中止heartbeat服务,删除/var/lib/heartbeat/crm/目录下的全部文件后从新配置:

/etc/init.d/heartbeat stop
rm -f /var/lib/heartbeat/crm/*
/etc/init.d/heartbeat start


官方参考文档:

http://clusterlabs.org/doc/zh-CN/Pacemaker/1.1-crmsh/html/Clusters_from_Scratch/index.html


6.5.1 附录1、crm经常使用命令参考

&#216;查询crm状态:

crm status

&#216;移动资源:

crm resource move

备注:server02上将资源从server01中移动过来。适合的场景:server01需下线维护等相似的状况。

示例:

crm resource move WebSite server02

&#216;取消资源移动:

crm resource unmove WebSite

&#216;参考完整配置:

crm configure show

&#216;修改某个配置:

crm configure edit WebSite

&#216;启动、中止资源:

crm resource start WebSite
crm resource stop WebSite

&#216;删除资源:

crm configure delete WebSite

&#216;更多内容请使用help命令或参考官方文档:

crm help


6.5.2 附录2、安装过程当中异常处理

&#216;crm configure show 可能报告出错,需强制升级crm

cibadmin --upgrade --force


6.6 故障模拟

&#216;方案1

l经过命令中止server01网卡或者中止heartbeat

ifdown eth1

or

/etc/init.d/heartbeat stop

l观察server02的系统日志确认server01节点已经丢失:

162629278.png

lserver02接替并启动相关应用:

162644433.png

l检查server02crm的状态:

162717351.png

lserver02已成功接替应用。

&#216;方案2:关闭server01服务器,略等几秒,检查server02crm的状态。


6.7 防火墙设置

iptables -A INPUT -p udp --dport 694 -j ACCEPT


7. 安装cman&pacemaker

&#216;系统环境:RHEL6.2 64bit

注意:CentOS5.xRHEL5.x请使用heartbeat&pacemaker的模式建立集群。

7.1 简介

&#216;参考了较多国内外文献了解到,从CentOS6.xRHEL6.x起,yum安装pacemaker的版本为1.1.8或以上,且移除了crm(即crmsh,集群资源管理)。pacemakerrhcs(红帽的集群系统)的组件MGmanager的资源和fence组件(resource & fencepackage)的管理合并到一块儿去了。至于缘由,可参考官方申明:

Installing on RHEL-6

Pacemaker has been available as part of RHEL since 6.0 as part of the High Availability (HA) add-on.

While this is an important step, it has created somechallenges, because:

§Red Hat funds much of Pacemaker's development, so weprefer to make packages available via their official channels rather than thecommunity site

§Pacemaker is currently listed as Tech Preview (TP) andtherefor unsupported by Red Hat

§The HA add-on costs money

Why should I pay for something if I still wont besupported?

Valid question,but there are still plenty of other software (such as corosync openais, cman,and fencing agents) that is supported if you buy the add-on. You also get awarm fuzzy feeling for supporting continued Pacemaker development.

Even if the lackof support is a deal breaker, consider buying at least one copy of the add-on.You'll get software updates for the entire stack and it helps Red Hat gauge thedemand for Pacemaker - which could conceivably help it become supported sooner.


When Community Support is Enough

If you're reallynot interested in support, you have a number of options available:

1.    Install from the RHEL install media

2.    Install from the CentOS or Scientific Linuxrepos

3.    Download and rebuild the necessary SRPMsfrom the Red Hat FTP server

http://clusterlabs.org/wiki/Install#Binary_Packages

&#216;若是不习惯使用pcspacemaker进行管理,能够从opensuse.org库中下载到crmsh

wget -O /etc/yum.repos.d/ha-clustering.repo http://download.opensuse.org/repositories/network:/ha-clustering/RedHat_RHEL-6/network:ha-clustering.repo
yum install -y crmsh

参考此站点,能够获取更多crmsh的信息:

http://lists.linux-ha.org/pipermail/linux-ha-dev/2012-October/019626.html

&#216;若是不习惯cman&pacemaker的架构,能够参考如下文献实现heartbear&pacemaker的模式。

ülinux-ha heartbeat 搭建

http://space.itpub.net/133735/viewspace-731951

üCoroSync/Pacemaker on Centos 6

http://snozberry.org/blog/2012/05/02/corosync-slash-pacemaker-on-centos-6/

üHeartbeat3.x应用全攻略之:安装、配置、维护

http://ixdba.blog.51cto.com/2895551/746271


7.2 安装cman

&#216;安装cman和相关依赖包:

yum install -y pacemaker cman ccs resource-agents pcs

备注:至此RHEL6.x已能够删除CentOS6

rm -f /etc/yum.repos.d/CentOS6-Base-163.repo

&#216;安装crmsh(可选):

wget -O /etc/yum.repos.d/ha-clustering.repo http://download.opensuse.org/repositories/network:/ha-clustering/RedHat_RHEL-6/network:ha-clustering.repo
yum install -y crmsh
rm -f /etc/yum.repos.d/ha-clustering.repo

注意:network:ha-clustering源中pacemaker和相关依赖包的版本为1.1.9,因时间关系未作详细测试,故此步骤不可执行在“安装cman和相关依赖包”以前。


7.3 配置cman

&#216;建立集群名称和节点:

ccs -f /etc/cluster/cluster.conf --createcluster certusnet

注意:名称能够自定义,但不能超过15个字符。此例中使用的名称为certusnet

ccs -f /etc/cluster/cluster.conf --addnode server01
ccs -f /etc/cluster/cluster.conf --addnode server02

&#216;验证配置文件是否正确:

ccs_config_validate -f /etc/cluster/cluster.conf

&#216;teach CMAN how to send it's fencing requests to Pacemaker.(不知道如何翻译会比较合适,就引用原文吧)

ccs -f /etc/cluster/cluster.conf --addfencedev pcmk agent=fence_pcmk
ccs -f /etc/cluster/cluster.conf --addmethod pcmk-redirect server01
ccs -f /etc/cluster/cluster.conf --addmethod pcmk-redirect server02
ccs -f /etc/cluster/cluster.conf --addfenceinst pcmk server01 pcmk-redirect port=server01
ccs -f /etc/cluster/cluster.conf --addfenceinst pcmk server02 pcmk-redirect port=server02

&#216;拷贝配置文件至server02节点:

scp /etc/cluster/cluster.conf server02:/etc/cluster/

备注:若是配置错误或者更改,能够中止cman服务并在各节点删除主配置文件/etc/cluster/cluster.conf后从新配置。

/etc/init.d/cman stop
rm -f /etc/cluster/cluster.conf
/etc/init.d/cman start


7.4 启动集群

&#216;配置集群不须要法定人数能够开启:

echo "CMAN_QUORUM_TIMEOUT=0" >> /etc/sysconfig/cman

&#216;修改/etc/hosts不然集群将没法启动:

vi /etc/hosts

注销如下内容:

127.0.0.1      localhost.localdomain   localhost.localdomain   localhost4      localhost4.localdomain4 localhost       server02
::1    localhost.localdomain   localhost.localdomain   localhost6      localhost6.localdomain6 localhost       server02

&#216;配置cmanpacemaker随系统启动:

chkconfig cman on
chkconfig pacemaker on

&#216;启动cmanpacemaker

/etc/init.d/cman start
/etc/init.d/pacemaker start


7.5 配置pcs

&#216;禁用stonith

pcs property set stonith-enabled=false

&#216;添加ClusterIPapachezabbix server

pcs resource create ClusterIP ocf:heartbeat:IPaddr2 ip=192.168.8.89 cidr_netmask=24 op monitor interval=20s
pcs resource create WebSite lsb:httpd op monitor interval=20s
pcs resource create Zabbix-HA lsb:zabbix_server op monitor interval=20s

备注:以上是采用lsb的方式来管理apache,即/etc/init.d/httpd启动脚本。如需使用ocf来管理,则进行以下配置,开 Apachestatus URL

vi /etc/httpd/conf/httpd.conf

162920895.png

在以上内容后追加:

<Location /server-status>
   SetHandler server-status
   Order deny,allow
   Deny from all
   Allow from 127.0.0.1
</Location>

添加apache资源的命令则为:

pcs resource create WebSite ocf:heartbeat:apache configfile=/etc/httpd/conf/httpd.conf statusurl="http://localhost/server-status" op monitor interval=20s

&#216;忽略节点的法定人数策略:

pcs property set no-quorum-policy=ignore

&#216;设置apachezabbix servervirtual ip为一个group

pcs resource group add certusGroup ClusterIP WebSite Zabbix-HA

备注:certusGroup是自定义的组名idClusterIP WebSiteZabbix-HA则是要放到certusGroup组中的资源,这里是有序的,三者依次执行。ClusterIP将优先于WebSiteZabbix-HA执行。

&#216;强制保证资源启动中止顺序:

pcs constraint order ClusterIP then WebSite

&#216;,缺省为0

pcs resource rsc defaults resource-stickiness=100

&#216;查询状态:

pcs status

162939136.png

&#216;验证配置文件是否正确:

crm_verify -L -V

&#216;以上内容只须要在一个节点进行配置,若是配置错误能够参考pcs命令修改。也能够中止pacemaker服务,删除/var/lib/pacemaker/cib/目录下的全部文件后从新配置:

/etc/init.d/pacemaker stop
rm -f /var/lib/pacemaker/cib/*
/etc/init.d/pacemaker start


官方参考文档:

http://clusterlabs.org/quickstart-redhat.html

http://clusterlabs.org/doc/zh-CN/Pacemaker/1.1-pcs/html/Clusters_from_Scratch/index.html


7.5.1 附录1、pcs经常使用命令参考

&#216;查询 crm 状态:

pcs status

&#216;移动资源:

pcs resource move

备注:server02 上将资源从server01 中移动过来。适合的场景:server01 需下线维护等相似的状况。

示例:

pcs resource move WebSite server02

&#216;取消资源移动:

pcs resource unmove WebSite

&#216;参考完整配置:

pcs config

&#216;修改某个配置:

pcs resource update WebSite

&#216;启动、中止资源:

pcs resource start WebSite
pcs resource stop WebSite

&#216;删除资源:

pcs resource delete WebSite

&#216;更多内容请使用 help 命令或参考官方文档:

pcs help


7.6 故障模拟

&#216;方案1

l经过命令中止server01网卡或者中止pacemakercman服务:

ifdown eth0

or

/etc/init.d/pacemaker stop
/etc/init.d/cman stop

l观察server02的系统日志确认server01节点已经丢失:

163009531.png

lserver02接替并启动相关应用:

163028938.png

l检查server02pcs的状态:

163042681.png

lserver02已成功接替应用。

&#216;方案2:关闭server01服务器,略等几秒,检查server02pcs的状态。


7.7 防火墙设置

iptables -A INPUT -p udp --dport 5404 -j ACCEPT
iptables -A INPUT -p udp --dport 5405 -j ACCEPT


8. 防火墙设置

&#216;清除全部规则:

iptables -F

&#216;接纳属於现存及相关链接的压缩:

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

&#216;设置INPUTFORWARD、及OUTPUT链的缺省策略:

iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

&#216;设置localhost的访问权:

iptables -A INPUT -i lo -j ACCEPT

&#216;traceroute探测解决:

iptables -A INPUT -p icmp --icmp-type 11 -j DROP

&#216;ICMP timestamp请求响应漏洞解决:

iptables -A INPUT -p icmp --icmp-type timestamp-request -j DROP
iptables -A OUTPUT -p icmp --icmp-type timestamp-reply -j DROP

&#216;容许ping

iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT
iptables -A OUTPUT -p icmp --icmp-type 0 -j ACCEPT

&#216;ssh端口:

iptables -A INPUT -p tcp --dport 22 -j ACCEPT

&#216;dns

iptables -A INPUT -p tcp --sport 53 -j ACCEPT
iptables -A INPUT -p udp --sport 53 -j ACCEPT

&#216;heartbeat

iptables -A INPUT -p udp --dport 694 -j ACCEPT

备注:此为heartbeat的健康检查通信端口,cman不用添加

&#216;ntp

iptables -A INPUT -p udp --sport 123 -j ACCEPT

&#216;apache

iptables -A INPUT -p tcp --dport 80 -j ACCEPT

&#216;mysql

iptables -A INPUT -p tcp --dport 3306 -j ACCEPT

&#216;cman

iptables -A INPUT -p udp --dport 5404 -j ACCEPT
iptables -A INPUT -p udp --dport 5405 -j ACCEPT

备注:此为cman的健康检查通信端口,heartbeat不用添加

&#216;zabbix server

iptables -A INPUT -p tcp --dport 10050 -j ACCEPT
iptables -A INPUT -p tcp --dport 10051 -j ACCEPT
iptables -A INPUT -p udp --dport 10050 -j ACCEPT
iptables -A INPUT -p udp --dport 10051 -j ACCEPT

&#216;保存防火墙设置:

/etc/init.d/iptables save


9. 脚本安装和卸载zabbix

9.1 脚本安装zabbix server

说明:

&#216;脚本执行前请根据实际环境修改变量;

&#216;zabbix_install目录及目录中epel-release-5-4.noarch.rpmepel-release-6-8.noarch.rpmmsyh.ttfzabbix_server_install(ha).sh一并上传至主备节点服务器的/root目录中;

163109635.png

&#216;脚本执行过程当中会自动判断操做系统版本是RHEL5.x6.xCentOS5.x6.x、主/备服务器、以及是32位或是64位系统,并安装相应的软件包和修改配置。

&#216;脚本安装完毕后打开浏览器,输入http://IP/zabbix/,就会出现WEB界面安装向导,按向导提示完成zabbix安装。请参考4.6.9节中截图的相关内容。注意:在节点1完成配置后进行一次主备替换在节点2完成相同配置

脚本下载地址:http://down.51cto.com/data/834358


9.2 脚本卸载zabbix server

   脚本下载地址:http://down.51cto.com/data/834358


因篇幅关系,后篇的连接为:

http://lan2003.blog.51cto.com/252098/1221314

zabbix 安装使用手册(HA)-2

全文下载地址:http://down.51cto.com/data/834358