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

Centos7为网站服务搭建keepalived高可用

2020-07-22 14:32 591 查看

keepalived是什么

keepalived是集群管理中保证集群高可用的一个服务软件,用来防止单点故障。

keepalived工作原理

keepalived是以VRRP协议为实现基础的,VRRP全称Virtual Router Redundancy Protocol,即虚拟路由冗余协议。
将N台提供相同功能的服务器组成一个服务器组,这个组里面有一个master和多个backup,master上面有一个对外提供服务的vip(该服务器所在局域网内其他机器的默认路由为该vip),master会发组播,当backup收不到vrrp包时就认为master宕掉了,这时就需要根据VRRP的优先级来选举一个backup当master

keepalived主要有三个模块

分别是core、check和vrrp。
core模块为keepalived的核心,负责主进程的启动、维护以及全局配置文件的加载和解析。
check负责健康检查,包括常见的各种检查方式。
vrrp模块是来实现VRRP协议的。

部署

环境:
Server1:192.168.171.11
Server2:192.168.171.12
VIP:192.168.171.13

部署:
Server1
**yum -y install keepalived
编辑keepalived配置文件:

vi /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
router_id 1                            #设备在组中的标识,设置不一样即可
}
#vrrp_script chk_nginx {                        #健康检查
#script  "/etc/keepalived/ck_ng.sh"     #检查脚本
#interval 2                            #检查频率.秒
#weight -5                             #priority减5
#fall 3                                        #失败三次
#}
vrrp_instance VI_1 {               #VI_1。实例名两台路由器相同。同学们要注意区分。
state MASTER                        #主或者从状态
interface ens32                     #监控网卡
mcast_src_ip 192.168.171.11          #心跳源IP
virtual_router_id 55                #虚拟路由编号,主备要一致。同学们注意区分
priority 100                        #优先级
advert_int 1                        #心跳间隔
authentication {                    #秘钥认证(1-8位)
auth_type PASS
auth_pass 123456
}
virtual_ipaddress {                 #VIP
192.168.171.13/24
}
#track_script {                       #引用脚本
#chk_nginx
#}
}

将配置文件拷贝给Server2
#scp -r /etc/keepalived/keepalived.conf 192.168.171.12:/etc/keepalived/
开机启动keepalived
systemctl enable keepalived.service
部署前端web(这里使用NGINX)
rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
yum -y install nginx
systemctl enable nginx.service&& systemctl start nginx.service
编辑页面显示,方面后面测试
vi /usr/share/nginx/html/index.html
本机访问页面显示是否正常
curl -i localhost
启动keepalived
systemctl start keepalived.service

server2
安装keepalived
yum -y install keepalived
编辑keepalived配置文件
vi /etc/keepalived/keepalived.conf 将拷贝过来的文件做以下修改
state MASTER改为 state BACKUP
mcast_src_ip 192.168.171.12改为backup服务器实际的IP mcast_src_ip
priority 100改为priority 99
部署前端web(这里使用NGINX)
rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
yum -y install nginx
systemctl enable nginx.service&& systemctl start nginx.service
编辑页面显示,方面后面测试
vi /usr/share/nginx/html/index.html
本机访问页面显示是否正常
curl -i localhost
启动keepalived
systemctl start keepalived.service

client访问测试:
curl 192.168.171.13
如果能正常访问master节点的网络资源,在将master的网线拔了,在访问171.13,观察网页已经切换
keepalived监控的是接口IP状态。无法监控服务状态,就会出现以下问题:

注意
如果暂停nginx服务了,发现master节点并未切换到backup节点,导致VIP地址不能访问,出现这种问题的原因是keepalived监控的是接口IP状态。无法监控服务状态
解决办法:
编辑添加Nginx监控脚本
server1:
vi /etc/keepalived/ck_ng.sh
########################################

#!/bin/bash
#检查nginx进程是否存在
counter=$(ps -C nginx --no-heading|wc -l)
if [ "${counter}" = "0" ]; then
#尝试启动一次nginx,停止5秒后再次检测
service nginx start
sleep 5
counter=$(ps -C nginx --no-heading|wc -l)
if [ "${counter}" = "0" ]; then
#如果启动没成功,就杀掉keepalive触发主备切换
service keepalived stop
fi
fi

########################################
脚本添加执行权限
chmod +x /etc/keepalived/ck_ng.sh
server2:
vi /etc/keepalived/ck_ng.sh
########################################

#!/bin/bash
#检查nginx进程是否存在
counter=$(ps -C nginx --no-heading|wc -l)
if [ "${counter}" = "0" ]; then
#尝试启动一次nginx,停止5秒后再次检测
service nginx start
sleep 5
counter=$(ps -C nginx --no-heading|wc -l)
if [ "${counter}" = "0" ]; then
#如果启动没成功,就杀掉keepalive触发主备切换
service keepalived stop
fi
fi

########################################
脚本添加执行权限
chmod +x /etc/keepalived/ck_ng.sh

启动脚本:
将server1和server2中的注释取消
#vrrp_script chk_nginx { #健康检查
#script “/etc/keepalived/ck_ng.sh” #检查脚本
#interval 2 #检查频率.秒
#weight -5 #priority减5
#fall 3 #失败三次
#}
#track_script { #引用脚本
#chk_nginx
#}
然重启server1和server2中keepalived
systemctl restart keepalived

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐