高可用keepalived服务部署流程及其应用

本文详细介绍了如何通过Keepalived实现高可用服务架构,包括软件安装、配置文件编写、服务启动,以及针对脑裂问题的监控和解决方案。重点涉及VIP地址管理和负载均衡配置,确保服务的稳定性和安全性。

第一个历程: 准备高可用服务架构

第二个历程: 安装部署keepalived软件

 [root@ lb01 ~]# yum install  -y keepalived

第三个历程: 编写keepalived配置文件

 [root@ lb01 ~]#vim /etc/keepalived/keepalived.conf 
   ! Configuration File for keepalived
   
    global_defs {                  	--- 全局配置部分
       notification_email {			--- 设置发送邮件信息的收件人
         acassen@firewall.loc
         failover@firewall.loc
         sysadmin@firewall.loc
       }
       notification_email_from 1459387476@qq.com   --- 设置连接的邮件服务器信息
       smtp_server smtp.qq.com 
       smtp_connect_timeout 30 
       router_id LVS_DEVEL           --- 高可用集群主机身份标识(集群中主机身份标识名称不能重复)
    }
   
    vrrp_instance oldboy {           --- Vrrp协议家族 oldboy
        state MASTER                 --- 标识所在家族中的身份 (MASTER/BACKUP)
        interface eth0               --- 指定虚拟IP地址出现在什么网卡上
        virtual_router_id 51         --- 标识家族身份信息 多台高可用服务配置要一致 
        priority 100                 --- 设定优先级 优先级越高,就越有可能成为主
        advert_int 1                 --- 定义组播包发送的间隔时间()  主和备配置一样  1
        authentication {             --- 实现通讯需要有认证过程
            auth_type PASS
            auth_pass 1111
        }
        virtual_ipaddress {          --- 配置虚拟IP地址信息
            192.168.200.16
            192.168.200.17
            192.168.200.18
        }
    }

    lb01配置信息:
    [root@lb01 ~]# cat /etc/keepalived/keepalived.conf 
    ! Configuration File for keepalived
    
    global_defs {
        router_id lb01
    }
   
    vrrp_instance oldboy {
        state MASTER
        interface eth0
        virtual_router_id 51
        priority 150
        advert_int 1
        authentication {
            auth_type PASS
            auth_pass 1111
        }
        virtual_ipaddress {
            10.0.0.3/24
        }
    }
    lb02配置信息:
    ! Configuration File for keepalived
    
    global_defs {
       router_id lb02
    }
    
    vrrp_instance oldboy {
        state BACKUP
        interface eth0
        virtual_router_id 51
        priority 100
        advert_int 1
        authentication {
            auth_type PASS
            auth_pass 1111
        }
        virtual_ipaddress {
            10.0.0.3/24
        }   
    }

第三个历程: 启动keepalived服务

[root@ lb01 keepalived]# systemctl start keepalived.service 
 [root@ lb01 keepalived]# systemctl status keepalived.service 
● keepalived.service - LVS and VRRP High Availability Monitor
   Loaded: loaded (/usr/lib/systemd/system/keepalived.service; disabled; vendor preset: disabled)
   Active: active (running) since Wed 2021-05-26 16:14:07 CST; 2s ago


启动好后我们就可以看到相关信息配置正确
[root@ lb01 keepalived]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:3e:d3:e1 brd ff:ff:ff:ff:ff:ff
    inet 192.168.149.5/24 brd 192.168.149.255 scope global noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet 192.168.149.3/32 scope global ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::afb0:6f94:6e1f:7045/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
3: ens37: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:3e:d3:eb brd ff:ff:ff:ff:ff:ff
    inet 172.168.3.5/24 brd 172.168.3.255 scope global noprefixroute ens37
       valid_lft forever preferred_lft forever
    inet6 fe80::cba9:e9e2:10e5:8ae2/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever


**此时 用户访问192.168.149.3时,就等价于访问192.168.149.5**

第四个历程: 修改域名和IP地址解析关系
修改hosts文件,解析改为192.168.149.3,访问.3就等于访问.5

高可用服务企业应用
1、 高可用服务常见异常问题—脑裂问题
出现原因:
高可用备服务器接收不到主服务器发送的组播包,备服务器上会自动生成VIP地址
物理原因:
高可用集群之间通讯线路出现问题
逻辑原因:
有安全策略阻止
2、如何解决脑裂问题:
01. 进行监控,发出告警
备服务器出现VIP地址的原因:
a 主服务器出现故障
b 出现脑裂问题
[root@ lb01 ~]# vim check_naolie.sh
#!/bin/bash
ip a s eth0|grep “10.0.0.3” >/dev/null
if [ $? -eq 0 ]
then
echo “keepalived服务出现异常,请进行检查”|mail -s 异常告警-keepalived 1459387476@qq.com
fi

shell脚本进行比较判断
-eq  等于
-ne  不等于
-lt  小于
-gt  大于
-le  小于等于
-ge  大于等于

02.直接关闭一台服务器的keepalived服务

如何实现keepalived服务自动释放vip地址资源
nginx+ keepalived: nginx服务停止,keepalived必须停

第一个历程: 编写监控nginx服务状态监控

[root@ lb01 scripts]# vim check_nginx.sh
 #!/bin/bash
    num=`ps -ef|grep -c [n]ginx`
    if [ $num -lt 2 ]
    then
       systemctl stop keepalived
    fi

第二个历程: 测试监控脚本

[root@ lb01 scripts]# vim check_web.sh
#!/bin/bash
num=ps -ef|grep -c nginx
if [ $num -lt 2 ]
then
systemctl stop keepalived
if

第三个历程: 实时监控nginx服务状态—keepalived配置文件

check_web=/server/scripts/check_web.sh
vrrp_script check_web {
     script "/server/scripts/check_web.sh"   --- 定义需要监控脚本(脚本是执行权限) (决对路径)
     interval 3   --- 执行脚本的间隔时间() 
     weight 2   (顶头写,就能成功启动)
    }
$check_web				---调用执行一下
track_script {
             check_web --- 调用执行你的脚本信息
       }
这些信息要填写在keepalive的配置文件中

整完重启一下

如何高可用集群双主配置
第一个历程: 编写lb01服务器keepalived配置文件
[root@lb01 ~]# cat /etc/keepalived/keepalived.conf
vrrp_instance oldgirl {
state BACKUP (这里改)
interface ens33
virtual_router_id 52
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
第二个历程: 编写lb02服务器keepalived配置文件
改的地方和第一步一样
第三个历程: 编写域名和IP地址解析信息
进行抓包查看:
www.kitty.com — 10.0.0.3(10.0.0.5)
10.0.0.1 — 10.0.0.3
10.0.0.5 — 10.0.0.7
10.0.0.7 — 10.0.0.5
10.0.0.3 — 10.0.0.1
bbs.kitty.com — 10.0.0.4(10.0.0.6)
10.0.0.1 — 10.0.0.4
10.0.0.6 — 10.0.0.7
10.0.0.7 — 10.0.0.6
10.0.0.4 — 10.0.0.1

高可用服务安全访问配置(负载均衡服务)
第一个历程: 修改nginx负载均衡文件
nginx的www配置文件

upstream oldboy {
       server 192.168.149.7:80;
       server 192.168.149.8:80;
       server 192.168.149.9:80;
    }
    server {
        listen       192.168.149.3:80;
        server_name  www.kitty.com;
        location / {
           proxy_pass http://kitty;
           proxy_set_header Host $host;
           proxy_set_header X-Forwarded-For $remote_addr;
           proxy_next_upstream error timeout http_404 http_502 http_403;
        }
    }
    server {
        listen       192.168.149.4:80;
        server_name  bbs.kitty.com;
        location / {
           proxy_pass http://kitty;
           proxy_set_header Host $host;
           proxy_set_header X-Forwarded-For $remote_addr;
        }
    }

第二个历程: 修改内核文件
异常问题:
01. 如何设置监听网卡上没有的地址
解决: 需要修改内核信息

echo 'net.ipv4.ip_nonlocal_bind = 1' >>/etc/sysctl.conf
    sysctl -p 

第三个历程: 重启nginx负载均衡服务

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值