您的位置:首页 > 运维架构 > Nginx

CentOS7 平台 源码编译安装Heartbeat,并实现nginx的HA集群

2017-12-13 18:16 791 查看
参考

http://www.91tl.top/?p=269

http://blog.csdn.net/liaomin416100569/article/details/76087448

1.修改主机名

主服务器:hostname=master

从服务器:hostname=slave

(这一部分不用做

网卡设置:(这个心跳IP不确定要不要,我暂时没有用)

xenserver的networking选项中添加网卡

# cd /etc/sysconfig/network-scripts/
# cp ifcfg-eth0 ifcfg-eth1
# vim ifcfg-eth1


主要修改网卡设备名称和IP地址,删除uuid

启用网卡 #ifup eth1

重启服务

# /etc/init.d/network restart


(注意:有时候重启网卡服务,系统识别不到新网卡信息,这时候你需要重新启动一下操作系统)

卸载网卡 ifconfig eth1 down



我的配置:

主服务器:

eth0:192.168.192.111

从服务器

eht0:192.168.192.110

(这一部分不需要

虚拟VIP:192.168.192.211

手工配置辅助IP:ip addr add 192.168.192.211/24 dev eth0

ip add命令可以查看辅助IP情况

删除辅助IP ip addr del 192.168.40.20/24 dev eth0



2.先关闭防火墙和selinux (selinux是不是一定要关不确定,暂时没有关)

查看selinux状态:getenforce sestatus -v

关闭sestatus :setenforce 0

3.配置hosts文件(两个都要做)

vim /etc/hosts

增加:

192.168.192.111 master

192.168.192.110 slave

4.安装heartbeat (2台都操作)

(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-glue–0a7add1d9996/
# 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/     (这一步的时候报错:configure: error: C compiler cannot create executables。解决:export CFLAGS= )(究竟能不能解决,我也不知道)
# 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


5.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(该文件表示资源的管理 如果是主机 当主机启动后 自动加载该文件中配置的所有启动资源 资源脚本默认在 haresources同级目录下的resource.d目录下)(这里配置的是一个虚拟的IP和原来的不同)

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


添加或修改:

master 192.168.192.211/24/eth0:0 nginx

(这里的192.168.192.211写自己配置的虚拟IP)

添加nginx脚本(见步骤6)

(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 eth0 192.168.192.110
auto_failback on
node master
node slave
ping 192.168.192.5
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/


(4)主节点的配置文件拷贝到从节点

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


(5)从节点修改 ha.cf ,只改心跳IP

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


6.编辑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


启动服务

service nginx start


7.启动heartbeat服务,先master后slave

# service heartbeat start
# service heartbeat status


出现下面的图才成功

没有出现这个

查看启动heartbeat的日志,看具体有什么错误

#more /var/log/ha-log


8.测试

访问VIP,192.168.192.211

看能不能访问到nginx

关闭主服务的heartbeat,看不能访问到从服务器的
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: