分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 前端开发

HA搭建web服务器高可用

发布时间:2023-09-06 02:14责任编辑:熊小新关键词:web服务器
拓扑:
QJ02 主web==192.168.2.131
QJ03 从web==192.168.2.132
QJ01 ?NFS====192.168.2.130
1.准备工作:
(1).解析域名

#[root@Qj02 ~]# vim /etc/hosts192.168.2.131 QJ02.cn192.168.2.132 QJ03.cn[root@Qj03 ~]# vim /etc/hosts192.168.2.131 QJ02.cn192.168.2.132 QJ03.cn

(2). 关防火墙,关掉selinux

# iptables -F# getenforce Permissive

2.配置QJ01为NFS服务器,提供存储资源
(1)安装NFS服务器:(3台主机均安装)

[root@Qj01 ~]# yum -y install nfs-utils[root@Qj02 ~]# yum -y install nfs-utils[root@Qj03 ~]# yum -y install nfs-utils[root@Qj01 ~]# mkdir /wwwdir[root@Qj01 ~]# echo "Heartbeat Web test" > /wwwdir/index.html[root@Qj01 ~]# vi /etc/exports/wwwdir 192.168.2.0/24(rw)

(2)配置目录权限

[root@Qj01 ~]# ll -d /wwwdir/drwxr-xr-x 2 root root 24 Sep 12 21:33 /wwwdir/[root@Qj01 ~]# chmod 777 -R /wwwdir/[root@Qj01 ~]# ll -d /wwwdir/drwxrwxrwx 2 root root 24 Sep 12 21:33 /wwwdir/

(3)开启nfs服务

[root@Qj01 ~]# systemctl start nfs[root@Qj01 ~]# systemctl enable nfsCreated symlink from /etc/systemd/system/multi-user.target.wants/nfs-server.service to /usr/lib/systemd/system/nfs-server.service.[root@Qj01 ~]# showmount -eExport list for Qj01:/wwwdir 192.168.2.0/24

3.QJ02和QJ03测试nfs 存储挂载并安装httpd web服务器:(只写QJ02一台配置,另一台QJ03配置相同)

[root@QJ02 ~]# yum install ?httpd -y [root@QJ02 ~]# systemctl start nfs[root@QJ02 ~]# showmount -e 192.168.2.130Export list for 192.168.2.130:/wwwdir 192.168.2.0/24 [root@QJ02 ~]# mount -t nfs 192.168.2.130:/wwwdir /var/www/html/[root@QJ02 ~]# systemctl start httpd

测试:

[root@QJ02 ~]# yum install elinks -y [root@QJ02 ~]# elinks --dump 192.168.2.131 ?Heartbeat Web test

卸载资源:后期这些资源通过heartbeat直接加载

[root@QJ02 ~]# umount /var/www/html/[root@QJ02 ~]# systemctl stop httpd[root@QJ02 ~]# systemctl disable httpd

4.QJ02和QJ03安装heartbeat(只写QJ02一台配置,另一台QJ03配置大致相同<不同处有备注>)
heartbeat在Ceontos7下编译步骤
下载:http://www.linux-ha.org/wiki/Downloads,从官方下载最新的HeartBeat版本:
Heartbeat 3.0.6
Cluster Glue 1.0.12
Resource Agents 3.9.6
(1).配置基础环境(配置好网络yum源)
安装依赖包
[root@Qj02 ~]#yum install -y bzip2 bzip2-devel gcc gcc-c++ autoconf automake libtool e2fsprogs-devel glib2-devel libxml2 libxml2-devel libtool-ltdl-devel asciidoc libuuid-devel docbook
(2).编译Cluster Glue

[root@Qj02 ~]# tar jxf Cluster_Glue_1.0.12.tar.bz2 [root@Qj02 ~]#cd Reusable-Cluster-Components-glue--0a7add1d9996/[root@Qj02 Reusable-Cluster-Components-glue--0a7add1d9996]# groupadd haclient ?创建用户组[root@Qj02 Reusable-Cluster-Components-glue--0a7add1d9996]# useradd -g haclient hacluster ??创建用户[root@Qj02 Reusable-Cluster-Components-glue--0a7add1d9996]# ./autogen.sh [root@Qj02 Reusable-Cluster-Components-glue--0a7add1d9996]# ./configure --prefix=/usr/local/heartbeat/[root@Qj02 Reusable-Cluster-Components-glue--0a7add1d9996]# make && make install

(3).编译Resource Agents

[root@Qj02 ~] # tar -zxf resource-agents-3.9.6.tar.gz[root@Qj02 ~]# cd resource-agents-3.9.6[root@Qj02 resource-agents-3.9.6]# ./autogen.sh[root@Qj02 resource-agents-3.9.6]#./configure --prefix=/usr/local/heartbeat --with-daemon-user=hacluster --with-daemon-group=haclient --enable-fatal-warnings=no LIBS=‘/lib64/libuuid.so.1‘[root@Qj02 resource-agents-3.9.6]# make[root@Qj02 resource-agents-3.9.6]# make install

(4).编译Heartbeat

[root@Qj02 ~]# tar -jxvf Heartbeat-3.0.6.tar.bz2[root@Qj02 ~]# cd Heartbeat-3-0-958e11be8686/[root@Qj02 Heartbeat-3-0-958e11be8686]# ./bootstrap[root@Qj02 Heartbeat-3-0-958e11be8686]# export CFLAGS="$CFLAGS -I/usr/local/heartbeat/include -L/usr/local/heartbeat/lib"[root@Qj02 Heartbeat-3-0-958e11be8686]# ./configure --prefix=/usr/local/heartbeat --with-daemon-user=hacluster --with-daemon-group=haclient --enable-fatal-warnings=no LIBS=‘/lib64/libuuid.so.1‘[root@Qj02 Heartbeat-3-0-958e11be8686]# make [root@Qj02 Heartbeat-3-0-958e11be8686]# make install

(5)生成配置文件:

[root@Qj02 /]# cd /usr/local/heartbeat/etc/ha.d/[root@Qj02 ha.d]# cp /root/Heartbeat-3-0-958e11be8686/doc/{ha.cf,haresources,authkeys} .[root@Qj02 ha.d]# chkconfig --add heartbeat[root@Qj02 ha.d]# chkconfig heartbeat on[root@Qj02 ha.d]# chmod 600 /usr/local/heartbeat/etc/ha.d/authkeys[root@Qj02 ha.d]# mkdir -pv /usr/local/heartbeat/usr/lib/ocf/lib/heartbeat/[root@Qj02 ha.d]# cp /usr/lib/ocf/lib/heartbeat/ocf-* /usr/local/heartbeat/usr/lib/ocf/lib/heartbeat/[root@Qj02 ha.d]# ln -sv /usr/local/heartbeat/lib64/heartbeat/plugins/* /usr/local/heartbeat/lib/heartbeat/plugins/

(6)Heartbeat配置
<1>配置ha.cf----主配置文件
Heartbeat的配置主要涉及到ha.cf、haresources、authkeys这三个文件。
ha.cf: ?主配置文件,
haresource: ?用来配置要让Heartbeat托管的服务,
authkey: ?是用来指定Heartbeat的认证方式。

[root@Qj02 /]# vim /usr/local/heartbeat/etc/ha.d/ha.cf vim /usr/local/heartbeat/etc/ha.d/ha.cf 24 debugfile /var/log/ha-debug ??????????##用于记录heartbeat的调试信息29 logfile/var/log/ha-log ???????????????##用于记录heartbeat的日志信息34 logfacilitylocal0 ???????????????????##设置heartbeat的日志,这里用的是系统日志48 keepalive 2 ?????????????????????????????##设定心跳(监测)时间时间为2秒56 deadtime 30 ????????##指定若备用节点在30秒内未收到主节点心跳信号,则接管主服务器资源61 warntime 10 ??????????##指定心跳延迟的时间为10秒,10秒内备节点不能接收主节点心跳信号, ?????????????????????????????????即往日志写入警告日志,但不会切换服务71 initdead 120 ???????##系统启动或重启后预留的忽略时间段,取值至少为deadtime的两倍76 udpport ?694 ????????????????????????##广播/单播通讯使用的Udp端口91 #bcast ens32 ??# Linux ????????????##使用网卡eno32发送心跳检测113 #mcast eth0 225.0.0.1 694 1 0 ???##采用网卡eth0的Udp多播来组织心跳,一般在备用节点Bcast、ucast和mcast分别代表广播、单播和多播,是组织心跳的的方式,任选其一121 ucast ens33 192.168.2.132 ?##采用网卡eth32的udp单播来组织心跳,后面跟的IP地址为双机对方IP地址157 auto_failback on ????????????????##定义当主节点恢复后,是否将服务自动切回211 node QJ02.cn ????????????????????##主节点名称212 node QJ03.cn ????????????????????##备用节点名称220 ping 192.168.2.1 ???????????????##通过ping网关检测心跳是否正常,仅用来测试网络253 respawn hacluster /usr/local/heartbeat/libexec/heartbeat/ipfail ??##指定和heartbeat一起启动、关闭的进程,否则启动报错259 apiauth ipfail gid=haclient uid=hacluster ????##设置启动IPfail的用户和组
[root@Qj02 ha.d]# scp ha.cf ?192.168.2.132:/usr/local/heartbeat/etc/ha.d/`(修改121行即可)ucast ens33 192.168.2.131

<2>配置haresources-----资源文件

[root@Qj02 ha.d]# vim haresources 44 #node-name resource1 resource2 ... resourceN 45 QJ02.cn IPaddr::192.168.2.111/24ens33 Filesystem::192.168.2.130:/wwwdir::/var/www/html::nfs http [root@Qj03 ha.d]# vim haresources 44 #node-name resource1 resource2 ... resourceN 45 QJ02.cn IPaddr::192.168.2.111/24ens33 Filesystem::192.168.2.130:/wwwdir::/var/www/html::nfs httpd

注:QJ02.cn是主服务器的主机名, QJ03上不需要修改。这样资源默认会加一这个主机上。当QJ02坏了,QJ03会再接管。
<3>配置authkeys-----心跳密钥验证文件

[root@Qj02 ha.d]#vim /usr/local/heartbeat/etc/ha.d/authkeys auth 33 md5 Hello![root@Qj03 ha.d]#vim /usr/local/heartbeat/etc/ha.d/authkeys auth 33 md5 Hello!

<4>编写httpd启动脚本

[root@Qj02 ha.d]#vim /usr/local/heartbeat/etc/ha.d/resource.d/httpd[root@Qj03 ha.d]#vim /usr/local/heartbeat/etc/ha.d/resource.d/httpd#!/bin/bash/bin/systemctl $1 httpd ????[root@Qj02 resource.d]#chmod 755 httpd[root@Qj03 resource.d]#chmod 755 httpd

<5>测试:(测试后记得关闭)
手动加载VIP 192.168.2.111到ens33上
[root@Qj02 ~]# cd /usr/local/heartbeat/etc/ha.d/resource.d
测试绑定VIP ?
[root@Qj02 resource.d]# ./IPaddr 192.168.2.111/24/ens33 start
INFO: ?Success
INFO: ?Success
查看 VIP:
[root@Qj02 ~]# ifconfig ???#可以看到 ens33:1 ?的IP为:192.168.2.111

手动加载NFS存储资源到/var/www/html (加载需要fuser支持,yum install psmisc -y)
[root@Qj02 resource.d]# ./Filesystem 192.168.2.130:/wwwdir /var/www/html/ nfs start
INFO: ?Success
INFO: ?Success
[root@Qj02 ~]# ls /var/www/html/index.html
/var/www/html/index.html
[root@Qj02 ~]# df ?-h
………
192.168.2.130:/wwwdir ???18G ?1.1G ??17G ???6% /var/www/html

手动启动httpd服务
[root@Qj02 ~]# systemctl start httpd

测试打开主服务页面http://192.168.2.131

启动heartbeat

# systemctl start heartbeat# chkconfig --add heartbeat# chkconfig heartbeat on

HA搭建web服务器高可用

原文地址:http://blog.51cto.com/13719714/2174508

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved