返回顶部

linux 综合架构高可用服务

keepalived 高可用服务介绍说明

用途:

  • 避免负载均衡服务出现单点问题

高可用服务的原理

通过 VRRP协议竞选谁是主(通过虚拟IP进行标识),主会定期的向从发送组播证明自己活着,如果主在规定的时间内没发送,则从就会根据 VRRP协议竞选出主(在网卡上出现虚拟 IP 通过 ip -a 查看,网卡中的虚拟地址),当主(以前的)恢复是,会抢占成主

高可用keepalived服务部署流程

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

  • lb01 lb02 两台机器

第二个历程: 安装部署keepalived软件,在1b01和1b02两台主机上

yum install -y keepalived

配置文件说明

man keepalived.conf

GLOBAL CONFIGURATION --- 全局配置部分

VRRPD CONFIGURATION --- VRRP协议配置部分

LVS CONFIGURATION --- LVS服务管理配置部分

配置文件 /etc/keepalived/keepalived.conf 详解  

! Configuration File for keepalived

global_defs {                  	--- 全局配置部分
   notification_email {			--- 设置发送邮件信息的收件人
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from oldboy@163.com   --- 设置连接的邮件服务器信息
   smtp_server 163.smtp.xxx_
   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
    }
}

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

lb01配置信息

/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配置信息

/etc/keepalived/keepalived.conf

! 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服务

systemctl start keepalived

在 1b01(主)上查看地址信息发现 虚拟ip10.0.0.3/24出现了  

在 1b02(从)上查看地址信息发现并没有虚拟ip10.0.0.3/24

 假如 主机 down 掉了,主机的虚拟ip就会消失,从主机上就会出现虚拟的ip

在 1b01上执行

systemctl stop keepalived

在 1b02上查看

 当主 1b01 恢复后,会把虚拟的ip再次抢占回来

第四个历程

当外部访问 10.0.0.3 上会把请求接入到主上,当主挂掉后,会把所有的请求转移到从上去,当主恢复后,在把资源抢占回来

高可用服务企业应用

高可用服务常见异常问题---脑裂问题(主从都生成虚拟ip地址)

出现原因:

  • 高可用备服务器接收不到主服务器发送的组播包,备服务器上会自动生成VIP地址

物理原因:

  • 高可用集群之间通讯线路出现问题

逻辑原因:

  • 有安全策略阻止

如何解决脑裂问题

01. 进行监控,发出告警

备服务器出现VIP地址的原因:

  • a 主服务器出现故障

  • b 出现脑裂问题

#!/bin/bash
ip a s eth0|grep "10.0.0.3" >/dev/null
if [ $? -eq 0 ]
then
  echo "keepalived服务出现异常,请进行检查"|mail -s 异常告警-keepalived  330882721@qq.com
fi

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

systemctl stop keepalived

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

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

/server/scripts/check_web.sh

#!/bin/bash
num=`ps -ef|grep -c [n]ginx`
if [ $num -lt 2 ]
then
   systemctl stop keepalived
fi

第二个历程实时监控nginx服务状态---keepalived配置文件

[root@lb01 scripts]# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived
 global_defs {
   router_id lb01
}

vrrp_script check_web {
 script "/server/scripts/check_web.sh"  
 interval 3   
 weight 2
}

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
    }
   track_script {
         check_web
   }
}

如何高可用集群双主配置

第一个历程: 编写lb01服务器keepalived配置文件

[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
    }
}
vrrp_instance oldgirl {
    state BACKUP
    interface eth0
    virtual_router_id 52
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
     10.0.0.4/24
    }
}

第二个历程: 编写lb02服务器keepalived配置文件

! 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
    }
}
vrrp_instance oldgirl {
    state MASTER
    interface eth0
    virtual_router_id 52
    priority 150
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        10.0.0.4/24
    }
}

第三个历程: 编写域名和IP地址解析信息

进行抓包查看

www.oldboy.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.oldboy.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负载均衡文件

upstream oldboy {
   server 10.0.0.7:80;
   server 10.0.0.8:80;
   server 10.0.0.9:80;
}
server {
    listen       10.0.0.3:80;
    server_name  www.oldboy.com;
    location / {
       proxy_pass http://oldboy;
       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       10.0.0.4:80;
    server_name  bbs.oldboy.com;
    location / {
       proxy_pass http://oldboy;
       proxy_set_header Host $host;
       proxy_set_header X-Forwarded-For $remote_addr;
    }
}

第二个历程: 修改内核文件

异常问题:

01. 如何设置监听网卡上没有的地址(公网地址etho网卡公网ip取消,只保留虚拟ip)

解决: 需要修改内核信息

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

  • sysctl -p

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

  • systemctl restart nginx

  

  

posted @ 2019-12-14 14:09  Crazymagic  阅读(443)  评论(1编辑  收藏  举报