Linux环境中通过Keepalived实现httpd集群

1.前言

  • 本文档所面对的学习对象如下:
  • Linux系统管理员;
  • 数据中心运维人员。
  • 本文档全部原创,实际操作完成次数超过十次以上,读者可放心按照顺序进行操作。
  • 本文档的实际操作系统平台为Oracle Linux7.9系统,同样适用于RedhatCentOS的其他版本Linux系统(需对部分系统配置进行简单更改即可)。
  • 请尊重原创。

2.部署规划

类目

节点1

节点2

系统环境

Vmware虚拟机

虚拟机软件

Vmware workstation 16 pro

系统配置

CPU 4C / 内存 8G / 磁盘40G / 网络接口1

操作系统

Oracle Linux7.9

IP地址

192.168.31.11

192.168.31.12

虚拟地址

192.168.31.10

主机名称

http-keep-001

http-keep-002

集群软件

keepalived

应用软件

httpd

实现功能

通过keepalived实现httpd服务的冗余部署。

  1. 当节点1正常运行时,节点2备用模式;
  2. 当节点1httpd服务器出现问题,自动停止keepalived停止服务,节点2接替运行;
  3. 当节点1httpd恢复正常,自动启动keepalived服务,并且处于备用模式;
  4. 当任意节点作为主节点时,系统故障或者宕机,另一节点接替运行。

3.创建虚拟机

运行虚拟化软件,创建一个全新的虚拟机。

要求CPU 4C,内存8G,硬盘40G,网络选择桥接模式。

建议:

  • 不要选择一次性分配所有磁盘空间;
  • 移除“打印机”和“声卡”。

4.部署操作系统

虚拟机创建完成之后,启动虚拟机,从OracleLinux7.9光盘镜像进行启动,开始安装操作系统。

主要配置说明:

  • 语言支持建议增加简体中文;
  • 配置正确的时区和时间;
  • 操作系统选择最小化安装
  • 建议关闭kdump
  • 关闭系统安全策略;
  • 主机名称:http-keep-001/http-keep-002
  • IP地址:192.168.31.11/192.168.31.12
  • 按照要求创建系统密码、磁盘分区等操作

5.配置系统环境

在两个节点做如下配置。

5.1禁用系统安全模块

# vi /etc/selinux/config

disabled

5.2禁用防火墙

# systemctl stop firewalld

# systemctl disable firewalld

# systemctl status firewalld

5.3网络配置

检查IP地址配置,如有问题则编辑对应网卡配置文件即可,更改之后请重启network服务。

5.4主机名称

检查系统主机名称,如有问题则使用命令:hostnamectl set-hostname hostname进行更改,更改之后请重启操作系统使生效。

5.5配置HOSTS文件

编辑/etc/hosts文件,增加两个节点IP地址和主机名称的对应。

# vi /etc/hosts

5.6 YUM配置

配置YUM,可以解决软件包安装过程中的依赖关系。

# vi /etc/yum.repos.d/system.repo

# yum clean all

# yum makecache

注:读者可以mount系统光盘镜像来创建本地YUM源,具体方法不再赘述,可参考先前发布的其他文档。

6.软件安装

6.1安装httpd及服务配置

# yum install httpd -y

# systemctl start httpd

# systemctl enable httpd

浏览器输入两个节点的IP地址进行访问测试。

本文档为了测试集群配置,实际并无网页内容,为了区别两个节点访问页面的区别,我们在每个节点做如下配置。

节点1

# echo 'welcome to you http-keep-001' > /var/www/html/index.html

 

节点2

# echo 'welcome to you http-keep-002' > /var/www/html/index.html

 

6.2安装keepalived及服务配置

# yum install keepalived -y

# systemctl start keepalived

# systemctl enable keepalived

7.集群配置

7.1服务检测脚本配置

创建服务检测脚本,用以检测httpd服务的运行状态,当httpd服务停止时,触发停止keepalived服务的运行。

此部分在两个节点均做配置。

# vi /sbin/check_httpd.sh

# chmod 777 /sbin/check_httpd.sh

# ./sbin/check_httpd.sh

 

7.2 keepalived配置文件

7.2.1节点1配置

# mv /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.b

# vi /etc/keepalived/keepalived.conf

# cat /etc/keepalived/keepalived.conf

 

7.2.2节点2配置

# mv /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.b

# vi /etc/keepalived/keepalived.conf

# cat /etc/keepalived/keepalived.conf

  7.3配置文件说明

Keepalived的主配置文件为/etc/leepalived/keepalived.conf,改文件包含global_defsvirtual_servervrrp_instancevrrp_script四个配置区域,简要介绍如下:

  • global_defs区域:Keepalived的全局配置;
  • virtual_server区域:虚拟服务器的必要设定,如做lvs的高可用,还有real_server关键字可用等;
  • vrrp_instance区域:用来定义对外提供服务的VIP及其虚拟服务器的相关属性;
  • vrrp_script区域:用来侦测服务守护进程是否存活的脚本。

本文档配置内容如下,将做详细介绍。

global_defs {

   router_id http-keep-001   

  【标识此节点的字符串,通常设置为主机名称】

   script_user root

  【执行监控脚本的用户身份】

  }

vrrp_script check_httpd {

 script "/sbin/check_httpd.sh"

【设置所要检测的脚本】

 interval 2

【每2秒钟检测一次】

 weight -5

【若检测失败则优先级减少5个值】

 fall 3

【若连续失败3次则认为此服务器已失效】

 rise 2

【若连续成功次数达到此值则认为服务器已生效】

}

vrrp_instance VI_1 {

state BACKUP

【也可以是MASTER,当两个节点都设置为BACKUP,优先级高的搭配nopreempt,将不会“抢回”主节点】

interface ens33

【当前节点的网卡名称】

virtual_router_id 50

【虚拟路由ID,同一集群的多个节点必须一致】

nopreempt

【非抢占模式,避免出现无谓的主从节点抢断】

priority 100

【节点优先级,数值高则优先级权重高】

advert_int 1

【健康检查的时间间隔,默认1秒】

    authentication {

        auth_type PASS

        auth_pass 1111

    }

    virtual_ipaddress {

        192.168.31.10

       【定义集群虚拟IP地址,最少1个】

    }

    track_script {

        check_httpd

       【和vrrp_script区域定义的字段名相关联】

    }

}

7.4服务配置

在两个节点上分别重启keepalived服务,查看服务状态。

# systemctl restart keepalived

# systemctl status keepalived

虚拟IP地址192.168.31.10目标在节点1上运行。

查看节点1IP地址,能看到虚拟地址192.168.31.10。

8.访问测试

  1. 浏览器输入集群的虚拟IP地址进行访问测试。

  1. 停止htttd服务测试

在节点1停止httpd服务,keepalived状态如下:

# systemctl stop httpd

# systemctl status keepalived

在节点1停止httpd服务后,keepalived服务也停止运行。

然后,查看节点2keepalived服务运行状态,可以看到虚拟IP地址已经被接管。

在浏览器输入集群的虚拟IP地址进行访问测试,可以看到,httpd页面已经转移到了节点2

  1. 恢复测试

接上部分,我们启动节点1httpd服务和keepalived服务,查看两个节点的keepalived运行状态,会发现,节点1并没有“抢回”虚拟IP地址。

当我们在节点2上停止httpd服务后,keepalived服务随即停止,虚拟IP地址回到了节点1http的访问也切回到了节点1。

9.注意事项

问题:

当某个节点httpd服务异常,导致keepalived服务终止之后,若httpd服务恢复正常,则keepalived并不会自动运行。

解决办法:

  1. 安装crontabs软件,启动后并设置开机自启动。

# yum install -y crontabs

# systemctl start crond

# systemctl enable crond

  1. 建立一个可执行文件。

# vi /sbin/check_httpd_sys.sh

# cat /sbin/check_httpd_sys.sh

# chmod 777 /sbin/check_httpd_sys.sh

实际操作截图如下:

可执行文件的内容是,当httpd服务正常运行后,执行启动keepalived服务的操作。

  1. 添加任务调度

将可执行文件加入自动调度计划,没一分钟执行一次。

# crontab -e

# crontab -l

  1. 测试

如下图,当我们把httpd服务修复启动之后,keepalived服务将会自动启动。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

萧天天天

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值