首页 > 系统相关 >Heartbeat+Nginx实现高可用集群

Heartbeat+Nginx实现高可用集群

时间:2023-08-23 17:03:47浏览次数:40  
标签:64 Nginx nginx 集群 服务器 heartbeat Heartbeat rpm usr

适用于访问量较小的业务,配置较为简单。

创建一个虚拟的IP提供给客户端来访问,虚拟IP会在两台服务器之间来回切换,heartbeat以脚本的方式检测两台服务器的存活状态,以此来实现高可用性。

Heartbeat+Nginx实现高可用集群_服务器

1)安装Nginx

https://nginx.org/download/nginx-1.20.2.tar.gz

(1)安装相关依赖包

这里通过挂载镜像的方式进行安装(挂载镜像步骤略)

yum install -y pcre pcre-devel zlib zlib-devel gcc*

(2)解压下载的软件包

tar -zxvf nginx-1.20.2.tar.gz

(3)编译安装

./configure --prefix=/usr/local/nginx
make && make install

(4)挂载NFS共享服务器目录

vim /etc/fstab
将共享服务器的目录挂载至nginx的网页文件存放目录
10.10.10.14:/opt/web1   /usr/local/nginx/html          nfs     defaults,_netdev        0 0

(5)启动nginx

#要想通过nginx命令直接启动,需要先从nginx安装目录中拷贝启动脚本到/usr/sbin/目录下
cp /usr/local/nginx/sbin/nginx /usr/sbin/

#启动nginx
nginx -c /usr/local/nginx/conf/nginx.conf
#停止nginx
nginx -s stop

2)安装Heartbeat

(1)下载Heartbeat包

#需要下载的rpm包
cluster-glue-1.0.5-6.el6.x86_64.rpm
cluster-glue-libs-1.0.5-6.el6.x86_64.rpm
heartbeat-3.0.4-2.el6.x86_64.rpm
heartbeat-libs-3.0.4-2.el6.x86_64.rpm
perl-TimeDate-2.30-2.el7.noarch.rpm
PyXML-0.8.4-27.99.fc19.x86_64.rpm
resource-agents-4.1.1-61.el7.x86_64.rpm

#在这两个地址搜索下载所需软件包
http://www.rpmfind.net/
https://crpm.cn/

(2)使用yum进行安装

yum install heartbeat* -y

(3)配置时间同步

注释掉官方提供的ntp服务器

vim /etc/ntp.conf
#添加ntp服务器为本地时间
server 127.127.1.0    #127.127.1.0 是NTP中预定义的,用于表示本地时钟源的地址.
fudge 127.127.1.0 stratum 10    #设置时钟源层级为10
#只允许10.10.10.0/24网段的地址使用ntp服务同步时间
restrict 10.10.10.0 mask 255.255.255.0 nomodify notrap

Heartbeat+Nginx实现高可用集群_服务器_02

(4)在备份服务器上进行时间同步

ntpdate -u 主机IP

(5)配置主机名解析

在vim /etc/sysconfig/network 添加使其永久生效

NETWORKING=yes
HOSTNAME=nginx-server1

#修改保存后重新加载配置
systemctl restart network

(6)从默认的程序文档目录中拷贝配置文件

#ha.cf主配置文件;authkeys认证文件;haresources源文件,拷贝到heartbeat的默认存放目录中
cd /usr/share/doc/heartbeat-3.0.4/
cp -a ha.cf authkeys haresources /etc/ha.d/

(7)配置认证文件

生成随机数MD5值,提高安全性

tr -dc '0-9-a-z-A-Z-!-?' </dev/urandom |head -c 512|openssl md5

选择认证方式为MD5,将我们随机生成的MD5值填写进去

vim authkeys

Heartbeat+Nginx实现高可用集群_集群_03

authkeys的权限必须为600,如果不设置为600会判定为不安全禁止启动。

(8)配置主配置文件

配置心跳检测网卡,如果有多个网卡则根据示例进行添加

Heartbeat+Nginx实现高可用集群_Linux_04

配置node前必须确保通过uname -n 能够搜索到

Heartbeat+Nginx实现高可用集群_nginx_05

添加主服务器虚拟IP以及使用的脚本类型

#指定主服务器名使用IPaddr2的脚本,添加一个IP为10.10.10.100子网掩码为24的ens33:0子接口
nginx-server1   IPaddr2::10.10.10.100/24/ens33:0

3)故障切换测试

当主服务器故障时会自动切换至备份服务器,以此来实现高可用。

Heartbeat+Nginx实现高可用集群_Linux_06

4)heartbeat优化

由于heartbeat在检测过程中只是针对服务器本身进行检测,如果只是nginx服务故障,而服务器状态正常就不会触发切换。

Heartbeat+Nginx实现高可用集群_nginx_07

编写一个简单的shell脚本用来监控nginx的状态使用while循环每3秒检查一次,以此来弥补heartbeat的不足之处。

#!/bin/bash
function http_code(){
code=$(curl -I  -s   10.10.10.11|grep HTTP|cut -d' ' -f2)
if [ "$code" != 200 ];then
        echo "open fail!"
        systemctl stop heartbeat.service
elif [ "$code" == 200 ];then
        heartbeat_status=$(/etc/init.d/heartbeat status |grep "No")
        if [ "$heartbeat_status" ];then
                echo "Starting [heartbeat]......"
                systemctl start heartbeat.service
                if [ $? -eq 0 ];then
                    echo "starting Success!"
                fi
        fi
fi
}
while true
do
        http_code
        sleep 3
done

脚本测试效果图:

Heartbeat+Nginx实现高可用集群_Linux_08


标签:64,Nginx,nginx,集群,服务器,heartbeat,Heartbeat,rpm,usr
From: https://blog.51cto.com/qclr/7204803

相关文章

  • Nginx的referer 参数的用法和原理
    Nginx的referer参数用于限制请求来源,可以有效地防止一些恶意公鸡和爬虫。本文将详细介绍Nginx的referer参数的用法、原理以及如何进行配置。一、referer参数简介referer是HTTP协议中的一个请求头字段,用于表示当前请求是从哪个页面发出的。通过检查referer字段,我们可以了解请求的来......
  • nginx配置auth_basic,要求账号密码的原理
    一、HTTP的身份验证HTTP提供了一个用于权限控制和认证的通用框架。流程如下:1、用户第一次通过客户端访问页面,服务器端向客户端返回401状态码,并在WWW-Authenticate响应头说明验证的信息。2、客户端收到相应后,弹窗让用户输入用户名和密码。3、用户输入后,客户端通过编码或加密的......
  • TiDB 多集群告警监控-中章-融合多集群 Grafana
    作者:longzhuquan背景随着公司XC改造步伐的前进,越来越多的业务选择TiDB,由于各个业务之间需要物理隔离,避免不了的TiDB集群数量越来越多。虽然每套TiDB集群均有两个详细的监控Dashboard、Grafana,但对于运维来说几十套集群的监控、告警、巡检均需消耗巨大的精力。上篇介绍了......
  • ES集群&kibana安装
    一、elasticsearch介绍Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。Elasticsearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTfulweb接口......
  • ES集群设置密码
    一、环境:三台centos7服务器,一台为master节点,两台从节点。系统版本:CentOSLinuxrelease7.4.1708(Core)软件版本:elasticsearch-6.8.0.rpmJdk版本:jdk-8u161-linux-x64.tar.gzKibana版本:kibana-6.8.0-x86_64.rpm参考上一篇文档搭建:https://www.cnblogs.com/lydongbk/p/176505......
  • Nginx具体应用
          ......
  • Nginx具体应用_负载均衡_配置_Nginx提供的负载均衡策略
         ......
  • Nginx具体使用_部署静态资源
           ......
  • Nginx命令_配置Nginx环境变量
            ......
  • Nginx配置文件整体结构
       ......