当前位置: 首页 > news >正文

今天我们学习Linux架构keepalived实现nginx代理双击热备

概述


Keepalived是一个基于VRRP协议(虚拟冗余路由协议)来实现的LVS服务高可用方案,可以利用其来避免单点故障。一个LVS服务会有2台服务器运行Keepalived,一台为主服务器(MASTER),一台为备份服务器(BACKUP),但是对外表现为一个虚拟IP,主服务器会发送特定的消息(心跳检测,heartbeat)给备份服务器,当备份服务器收不到这个消息的时候,即主服务器宕机的时候, 备份服务器就会接管虚拟IP,继续提供服务,从而保证了高可用性。

Keepalived的作用是检测服务器的状态,如果有一台web服务器死机,或工作出现故障,Keepalived将检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替该服务器的工作,当服务器工作正常后Keepalived自动将服务器加入到服务器群中。

一、keepalived安装


关闭防火墙和selinux

[root@web2 ~]# systemctl disable --now firewalld
setenforce 0
sed -i 's/enforcing/disabled/' /etc/selinux/config

安装nginx和keepalived

[root@proxy1 ~]# yum install -y nginx
[root@proxy1 ~]# yum install -y keepalived

配置并启动

[root@proxy1 ~]# cd /etc/keepalived/
[root@proxy1 keepalived]# ls
keepalived.conf.sample
[root@proxy1 keepalived]# 
[root@proxy1 keepalived]# cp keepalived.conf.sample keepalived.conf
[root@proxy1 keepalived]# vim keepalived.conf
! Configuration File for keepalivedglobal_defs {router_id proxy1
}
crrp_script check_nginx {script /etc/keepalived/check_nginx.shinterval 2
}
vrrp_instance proxy_VI {state MASTERinterface ens160virtual_router_id 51priority 100advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.60.200}track_script {check_nginx}
}
[root@proxy1 keepalived]# systemctl start keepalived.service 

验证

[root@proxy1 keepalived]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope host noprefixroute valid_lft forever preferred_lft forever
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000link/ether 00:0c:29:cf:53:97 brd ff:ff:ff:ff:ff:ffinet 192.168.60.117/24 brd 192.168.60.255 scope global dynamic noprefixroute ens160valid_lft 1521sec preferred_lft 1521secinet 192.168.60.200/32 scope global ens160valid_lft forever preferred_lft foreverinet6 fe80::20c:29ff:fecf:5397/64 scope link noprefixroute valid_lft forever preferred_lft forever
[root@proxy1 keepalived]# systemctl stop keepalived.service 
[root@proxy1 keepalived]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope host noprefixroute valid_lft forever preferred_lft forever
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000link/ether 00:0c:29:cf:53:97 brd ff:ff:ff:ff:ff:ffinet 192.168.60.117/24 brd 192.168.60.255 scope global dynamic noprefixroute ens160valid_lft 1452sec preferred_lft 1452secinet6 fe80::20c:29ff:fecf:5397/64 scope link noprefixroute valid_lft forever preferred_lft forever

二.配置文件


[root@proxy1 keepalived]# vim keepalived.conf

global_defs {
notification_email {  #指定keepalived在发生切换时需要发送email到的对象,一行一个
sysadmin@fire.loc
}
notification_email_from Alexandre.Cassen@firewall.loc #指定发件人
smtp_server localhost #指定smtp服务器地址
smtp_connect_timeout 30 #指定smtp连接超时时间
router_id LVS_DEVEL #运行keepalived机器的一个标识
}
vrrp_sync_group VG_1{ #监控多个网段的实例
group {
inside_network #实例名
outside_network
}
notify_master /path/xx.sh #指定当切换到master时,执行的脚本
notify_backup /path/xx.sh #指定当切换到backup时,执行的脚本
notify_fault "path/xx.sh VG_1" #故障时执行的脚本
notify /path/xx.sh
smtp_alert #使用global_defs中提供的邮件地址和smtp服务器发送邮件通知
}

Keepalived在转换状态时会依照状态来呼叫:

  • 当进入Master状态时会呼叫notify_master

  • 当进入Backup状态时会呼叫notify_backup

  • 当发现异常情况时进入Fault状态呼叫notify_fault

vrrp_instance inside_network {
state BACKUP #指定那个为master,那个为backup,如果设置了nopreempt这个值不起作用,主备靠priority决定
interface eth0 #设置实例绑定的网卡 VRRP心跳包从哪块网卡发出
dont_track_primary #忽略vrrp的interface错误(默认不设置)
track_interface{ #设置额外的监控,里面那个网卡出现问题都会切换
eth1
eth2
}
mcast_src_ip #发送多播包的地址,如果不设置默认使用绑定网卡的primary ip
garp_master_delay #在切换到master状态后,延迟进行gratuitous ARP请求
virtual_router_id 50 #VPID标记 相同VRID的LVS属于同一组,根据优先级选举出一个主
priority 99 #优先级,高优先级竞选为master
advert_int 10 #检查间隔,默认1秒 VRRP心跳包(报文)的发送周期,单位为s 组播信息发送间隔,两个节点设置必须一样(实际并不一定完全是10秒,测试结果是小于10秒的随机值)
nopreempt #设置为不抢占 注:这个配置只能设置在backup主机上,而且这个主机优先级要比另外一台高

http://www.dtcms.com/a/546694.html

相关文章:

  • 免费企业黄页查询网站网站开发网站定制
  • 企业宽带可以做网站吗建设银行怎么从网站上改手机号码
  • 新站秒收录接口怎么看公司网站建设的时间
  • 数字图书馆网站建设wordpress可视化divi
  • 查pv uv的网站wordpress取消自动更新
  • 【VS2019配置json解析库】VS2019配置json解析库教程
  • 网站开发人员应具备什么素质中国建设网证书查询平台
  • 怎么做一家网站简单网站开发准备
  • C++ 中的浅拷贝与深拷贝:概念、规则、示例与最佳实践(笔记)
  • 建站seo课程wordpress 小说 采集器
  • 淘宝平台 API 接口接入文档和参数说明调用示例
  • 网络建设网站电商网站开发的引言
  • 做网站商城需要申请商标吗个人网站可以做淘客
  • 个人网站 前置审批中国最顶尖的平面设计公司
  • 海淀区手机网站设计服务6微信商城平台
  • 深圳专门做写字楼的网站大气物流网站模块
  • 网站工商标识做网站的公司负责wordpress连通公众号
  • ggsci 4.0.0来了,新增400+套配色!
  • PostIn零基础学习,安装与配置
  • 上海做建材上什么网站好南通网站制作哪个好
  • 做湲兔费网站视颍中国建设银行总部网站
  • Taro多端适配技术解析
  • 学做网站 空间 域名网站建设的一般步骤包含哪些
  • 网站开发的目的 实习报告住房与建设局网站
  • 专门做超市dm网站路飞 wordpress
  • 亚马逊卖家做自己网站北京棋森建设有限公司网站
  • 律师推广网站排名iis里如何装php网站
  • 类似17做网店的网站wordpress插件关闭更新
  • 【人工智能数学基础】如何理解方差与协方差?
  • 那个网站可以做学历认证女装网站模板