Heartbeat+Nginx实现高可用集群

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

创建一个虚拟的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/nginxmake && 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/
#启动nginxnginx -c /usr/local/nginx/conf/nginx.conf#停止nginxnginx -s stop

2)安装Heartbeat

(1)下载Heartbeat包

#需要下载的rpm包cluster-glue-1.0.5-6.el6.x86_64.rpmcluster-glue-libs-1.0.5-6.el6.x86_64.rpmheartbeat-3.0.4-2.el6.x86_64.rpmheartbeat-libs-3.0.4-2.el6.x86_64.rpmperl-TimeDate-2.30-2.el7.noarch.rpmPyXML-0.8.4-27.99.fc19.x86_64.rpmresource-agents-4.1.1-61.el7.x86_64.rpm
#在这两个地址搜索下载所需软件包http://www.rpmfind.net/https://crpm.cn/

(2)使用yum进行安装

yum install heartbeat* -y

(3)配置时间同步

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

Heartbeat+Nginx实现高可用集群

 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

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

ntpdate -u 主机IP

(5)配置主机名解析

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

NETWORKING=yesHOSTNAME=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实现高可用集群

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

(8)配置主配置文件

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

Heartbeat+Nginx实现高可用集群配置node前必须确保通过uname -n 能够搜索到主机名称

Heartbeat+Nginx实现高可用集群

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

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

3)故障切换测试

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

Heartbeat+Nginx实现高可用集群

4)heartbeat优化

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

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

#!/bin/bashfunction 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.serviceelif [ "$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        fifi}while truedo        http_code        sleep 60done

往期推荐







原文始发于微信公众号(青菜浪人):

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/157584.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!