01. 高可用keepalived服务部署流程

第一个历程: 准备高可用服务架构
    第二个历程: 安装部署keepalived软件 (lb01 lb02)
    yum install -y keepalived
    第三个历程: 编写keepalived配置文件
    vim /etc/keepalived/keepalived.conf
    GLOBAL    CONFIGURATION            --- 全局配置部分
    VRRPD     CONFIGURATION            --- VRRP协议配置部分
    LVS     CONFIGURATION            --- LVS服务管理配置部分
    [root@lb01 ~]# cat /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
#nopreempt --- 不抢占 authentication { --- 实现通讯需要有认证过程 auth_type PASS auth_pass 1111 } virtual_ipaddress { --- 配置虚拟IP地址信息 192.168.200.16 192.168.200.17 192.168.200.18 } }

配置负载均衡服务器:lb01和lb02

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

    第四个历程: 修改域名和IP地址解析关系
验证vrrp的漂移是否正常把master服务停掉试一下

02. 高可用服务企业应用

    1. 高可用服务常见异常问题---脑裂问题
    出现原因: 
    高可用备服务器接收不到主服务器发送的组播包,备服务器上会自动生成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  xxxxxx@qq.com
        fi
    
        shell脚本进行比较判断
        -eq  等于
        -ne  不等于
        -lt  小于
        -gt  大于
        -le  小于等于
        -ge  大于等于
    
    02. 直接关闭一台服务器的keepalived服务

03. 如何实现keepalived服务自动释放vip地址资源
   nginx(皇帝) + keepalived(妃子): nginx服务停止(皇帝死了),keepalived也必须停止(殉情)

    第一个历程: 编写监控nginx服务状态监控
     vim check_web.sh
    #!/bin/bash
    num=`ps -ef|grep -c [n]ginx`
    if [ $num -lt 2 ]
    then
       systemctl stop keepalived
    fi

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

    第三个历程: 实时监控nginx服务状态---keepalived配置文件
            global_defs {
              route_id lb01
            }

            vrrp_script  check_nginx { 
                script  "/etc/keepalived/check_web.sh"   --- 定义需要监控脚本(脚本是执行权限) 
                interval 2                                 --- 定义需要监控脚本(脚本是执行权限) 
                weight 2                                  --- 权重
            }
            vrrp_instance LB {
                state MASTER
                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 
               }
                
                track_script {
                   check_nginx
               }    
            }

04. 如何高可用集群双主配置

第一个历程: 编写lb01服务器keepalived配置文件
    [root@lb01 ~]# cat /etc/keepalived/keepalived.conf
    ! Configuration File for keepalived
     global_defs {
       router_id lb01
    }
    
    
    vrrp_instance boy {
        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 girl {
        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 boy {
        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 girl {
        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.ag.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.ag.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

05. 高可用服务安全访问配置(负载均衡服务)

第一个历程: 修改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. 如何设置监听网卡上没有的地址
    解决: 需要修改内核信息
    echo 'net.ipv4.ip_nonlocal_bind = 1' >>/etc/sysctl.conf  监听不是本地的地址
    sysctl -p 

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

weight参数: 权重值参数,主要用于和优先级进行运算
  重要知识点01:
  求和运算: weight数值必须是正数 weight + priority 自动提升优先级, 使主机可以成为主服务器
  求差运算: weight数值必须是负数 -weight + priority 自动降低优先级, 使主机可以成为备服务器
  重要知识点02:
  运行一个脚本, 执行脚本结束之后, 脚本的执行结果可以为真 看脚本执行返回值 $?==0
  运行一个脚本, 执行脚本结束之后, 脚本的执行结果可以为假 看脚本执行返回值 $$<>0
  重要知识点03:
  如何将知识01 + 知识02 exit 0为真   exit 1为假
  权重值为正数:
  1. 脚本运行后为真 weight + priority
  2. 脚本运维后为假 priority
  权重值为负数:
  1. 脚本运行后为真 priority
  2. 脚本运维后为假 -weight + priority

 

posted on 2021-07-11 22:05  宇小白  阅读(44)  评论(0编辑  收藏  举报