Heartbeat加nginx搭建HA集群过程详解

1 篇文章 0 订阅
1 篇文章 0 订阅

(一)实验环境
centos7
主服务器:
IP:192.168.192.120
VIP:192.168.192.123
从服务器:
IP:192.168.192.121
VIP:192.168.192.123
(二)配置安装nginx
1.安装gcc

yum install gcc-c++

2.安装PCRE pcre-devel

yum install -y pcre pcre-devel

3.安装zlib

yum install -y zlib zlib-devel

4.安装OpenSSL

yum install -y openssl openssl-devel

5.使用wget命令下载ngnix

wget -c https://nginx.org/download/nginx-1.10.1.tar.gz

6.解压

tar -zxvf nginx-1.10.1.tar.gz

7.安装并配置

cd nginx-1.10.1
./configure
make&&make install

8.添加nginx启动脚本

vi /etc/init.d/nginx

添加以下内容:

#!/bin/sh
# chkconfig: 2345 80 90  
# description: Start and Stop nginx


#PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin


DESC="nginx daemon"
NAME=nginx
DAEMON=/usr/local/nginx/sbin/$NAME
CONFIGFILE=/usr/local/nginx/conf/$NAME.conf
PIDFILE=/usr/local/nginx/logs/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME


set -e
[ -x "$DAEMON" ] || exit 0


do_start() {
$DAEMON -c $CONFIGFILE || echo -n "nginx already running"
}


do_stop() {
kill -INT `cat $PIDFILE` || echo -n "nginx not running"
}


do_reload() {
kill -HUP `cat $PIDFILE` || echo -n "nginx can't reload"
}


case "$1" in


start)
echo -n "Starting $DESC: $NAME"
do_start
echo "."
;;
stop)
echo -n "Stopping $DESC: $NAME"
do_stop
echo "."
;;
reload|graceful)
echo -n "Reloading $DESC configuration..."
do_reload
echo "."
;;
restart)
echo -n "Restarting $DESC: $NAME"
do_stop
do_start
echo "."
;;
*)
echo "Usage: $SCRIPTNAME {start|stop|reload|restart}" >&2
exit 3
;;
esac


exit 0

注册系统服务

chkconfig --add nginx

设置权限

chmod a+wrx /etc/init.d/nginx

启动nginx服务

service nginx start

(三)修改主机名
主服务器

vim /etc/sysconfig/network

增加以下内容

HOSTNAME=master

从服务器

HOSTNAME=slave

(四)关闭防火墙和selinux
(五)配置hosts文件,主从服务器都一样

vim /etc/hosts

增加以下内容:

192.168.192.120 master
192.168.192.121 slave

(六)编译安装Heartbeat
1.下载Heartbeat
下载:http://www.linux-ha.org/wiki/Downloads,从官方下载最新的HeartBeat版本:Heartbeat 3.0.6和Cluster Glue 1.0.12,Resource Agents 3.9并安装!
2.配置基础环境

yum install -y bzip2 autoconf automake libtool glib2-devel libxml2-devel bzip2-devel libtool-ltdl-devel asciidoc libuuid-devel

3.安装glue

tar xf 0a7add1d9996.tar.bz2
cd Reusable-Cluster-Components-glue0a7add1d9996/
groupadd haclient
useradd -g haclient hacluster
 ./autogen.sh
 ./configure --prefix=/usr/local/heartbeat/
make && make install

4.安装Resource Agents

tar xf v3.9.6.tar.gz
cd resource-agents-3.9.6/
./autogen.sh
export CFLAGS="$CFLAGS -I/usr/local/heartbeat/include -L/usr/local/heartbeat/lib"
./configure --prefix=/usr/local/heartbeat/
vim /etc/ld.so.conf.d/heartbeat.conf 
#添加:
  /usr/local/heartbeat/lib
ldconfig
make && make install

5.安装Heartbeat

tar xf 958e11be8686.tar.bz2
cd Heartbeat-3-0-958e11be8686
./bootstrap
export CFLAGS="$CFLAGS -I/usr/local/heartbeat/include -L/usr/local/heartbeat/lib"
./configure --prefix=/usr/local/heartbeat/
vim /usr/local/heartbeat/include/heartbeat/glue_config.h
   /*define HA_HBCONF_DIR “/usr/local/heartbeat/etc/ha.d/”*/ #把这一行用/**/注释掉
make && make install

(七)配置Heartbeat
1.拷贝配置文件(System configuration = “/usr/local/heartbeat/etc” 默认的配置需要置于 /usr/local/heartbeat/etc目录下 默认该目录不存在配置文件)

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

2.配置authkeys(该文件表示发送心跳时 机器用于验证的key的hash算法 双方必须配置成一致的密码)

 vim /usr/local/heartbeat/etc/ha.d/authkeys

增加或者修改:

auth 3   #表示使用id为3的验证 下边需要定义一个3的验证算法,这里要保持一致,输了2下面就对应2,输了3下面就对应3
3 md5 Hello!  #口令(Hello!)随便给 主从配置相同即可 

修改权限:

chmod 600 /usr/local/heartbeat/etc/ha.d/authkeys

3.配置haresources(该文件表示资源的管理,如果是主机,当主机启动后,自动加载该文件中配置的所有启动资源)

vim /usr/local/heartbeat/etc/ha.d/haresources

添加或修改:

master 192.168.192.123/24/eth0:0 nginx

注意:这里的192.168.192.123是配置的虚拟IP;nginx表示启动的服务,需要在/etc/init.d/目录下有对应启动服务的脚本
4.修改ha.cf(该配置文件用于配置心跳的核心配置)

vim /usr/local/heartbeat/etc/ha.d/ha.cf

添加或修改:

debugfile /var/log/ha-debug
logfile /var/log/ha-log
logfacility local0
keepalive 2
deadtime 30
warntime 10
initdead 60
udpport 694
ucast eth1 192.168.192.121
auto_failback on
node master
node slave
ping 192.168.192.6
respawn hacluster /usr/local/heartbeat/libexec/heartbeat/ipfail

说明:
debugfile /var/log/ha-debug:该文件保存heartbeat的调试信息。
logfile /var/log/ha-log:heartbeat的日志文件。
keepalive 2:心跳的时间间隔,默认时间单位为秒s。
deadtime 30:超出该时间间隔未收到对方节点的心跳,则认为对方已经死亡。
warntime 10:超出该时间间隔未收到对方节点的心跳,则发出警告并记录到日志中。
initdead 60:在某系统上,系统启动或重启之后需要经过一段时间网络才能正常工作,该选项用于解决这种情况产生的时间间隔,取值至少为deadtime的2倍。
udpport 694:设置广播通信使用的端口,694为默认使用的端口号。
ucast eth1 172.16.254.28:设置对方机器心跳检测的网卡和IP。
auto_failback on:heartbeat的两台主机分别为主节点和从节点。主节点在正常情况下占用资源并运行所有的服务,遇到故障时把资源交给从节点由从节点运行服务。在该选项设为on的情况下,一旦主节点恢复运行,则自动获取资源并取代从节点,否则不取代从节点。
respawn heartbeat /usr/lib/heartbeat/ipfail:指定与heartbeat一同启动和关闭的进程,该进程被自动监视,遇到故障则重新启动。最常用的进程是ipfail,该进程用于检测和处理网络故障,需要配合ping语句指定的ping node来检测网络连接。如果你的系统是64bit,请注意该文件的路径。
注意:一般启动时会报错因为 ping和ucast这些配置都需要插件支持 需要将lib64下面的插件软连接到lib目录 才不会抛出异常

ln -svf /usr/local/heartbeat/lib64/heartbeat/plugins/RAExec/* /usr/local/heartbeat/lib/heartbeat/plugins/RAExec/  
ln -svf /usr/local/heartbeat/lib64/heartbeat/plugins/* /usr/local/heartbeat/lib/heartbeat/plugins/

5.主节点的配置文件拷贝到从节点

cd /usr/local/heartbeat/etc/ha.d
scp ha.cf authkeys resource.d haresources root@192.168.192.121:/usr/local/heartbeat/etc/ha.d

6.从节点修改ha.cf文件,只需将心跳IP改成主节点IP即可
7.测试(启动heartbeat服务,先启动主节点,再启动从节点)

 service heartbeat start

查看heartbeat服务状态

service heartbeat status

查看heartbeat日志

more /var/log/ha-log

关闭主节点的heartbeat服务,访问虚拟IP查看是否跳转到从节点

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值