设为首页 收藏本站
查看: 957|回复: 0

[经验分享] 部署keepalived高可用服务

[复制链接]

尚未签到

发表于 2018-12-29 11:53:32 | 显示全部楼层 |阅读模式
  keepalived服务概念说明      
keepalived软件能干什么?
Keepalived软件起初是专为LVS负载均衡软件设计的,
用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入了可以实现高可用的VRRP功能

Keepalived软件主要是通过VRRP协议实现高可用功能的。
VRRP是Virtual Router Redundancy Protocol(虚拟路由器冗余协议)的缩写,
VRRP出现的目的就是为了解决静态路由单点故障问题的,它能够保证当个别节点宕机时,
整个网络可以不间断地运行
keepalived软件工作原理?(重点)
原理
1)VRRP协议,全称Virtual Router Redundancy Protocol,中文名为虚拟路由冗余协议,
VRRP的出现是为了解决静态路由的单点故障。
2)VRRP是用过IP多播的方式(默认多播地址(224.0.0.18))实现高可用对之间通信的。
3)工作时主节点发包,备节点接包,当备节点接收不到主节点发的数据包的时候,
就启动接管程序接管主节点的资源。备节点可以有多个,通过优先级竞选,
但一般Keepalived系统运维工作中都是一对。
keepalived软件主要功能?
①. 管理LVS负载均衡软件
②. 实现对LVS集群节点健康检查功能
③. 作为系统网络服务的高可用功能

  •   部署keepalived高可用服务:
    1)确认反向代理服务是否工作正常
    第一个里程:在lb01/lb02上测试web服务器是否可以正常
    curl -H host:www.etiantian.org 10.0.0.7/oldboy.html
    curl -H host:www.etiantian.org 10.0.0.8/oldboy.html
    curl -H host:www.etiantian.org 10.0.0.9/oldboy.html
    curl -H host:bbs.etiantian.org 10.0.0.7/oldboy.html
    curl -H host:bbs.etiantian.org 10.0.0.8/oldboy.html
    curl -H host:bbs.etiantian.org 10.0.0.9/oldboy.html
      第二个里程:在浏览器上测试访问lb01/lb02   注:两个负载服务器上都需要部署nginx服务并开启
    解析hosts文件,将域名解析为10.0.0.5,进行测试访问
    解析hosts文件,将域名解析为10.0.0.6,进行测试访问
    scp -rp /application/nginx/conf/nginx.conf 10.0.0.6:/application/nginx/conf/  ---测试前同步lb01和lb02配置文件
      2)安装部署高可用keepalived服务 注:两台lb01和lb02都要部署
    第一个里程:安装keepalived服务软件
    yum install -y keepalived
      第二个里程:编写keepalived配置文件
    vim /etc/keepalived/keepalived.conf
      man keepalived.conf   --- 配置文件说明信息
    配置文件结构:
    GLOBAL CONFIGURATION  --- 全局配置(
    VRRPD CONFIGURATION   --- vrrp配置(

    LVS CONFIGURATION     --- LVS服务相关配置
      lb01主负载均衡器配置
    ! Configuration File for keepalived
    global_defs {
    router_id lb01   -----不同处1
    }
    vrrp_instance gorup01 {
    state MASTER  -----不同处2
    interface eth0
    virtual_router_id 51
    priority 150   -----不同处3
    advert_int 1
    authentication {
    auth_type PASS
    auth_pass 1111
    }
    virtual_ipaddress {
    10.0.0.3/24 dev eth0 label eth0:1
    }
    }
    /etc/init.d/keepalived reload
      lb02配置信息    注:ip a能看到eth0网卡上有多个地址
    ! Configuration File for keepalived
    global_defs {
    router_id lb02    -----不同处1
    }      
    vrrp_instance group01 {
    state BACKUP     -----不同处2
    interface eth0
    virtual_router_id 51
    priority 100     -----不同处3
    advert_int 1
    authentication {
    auth_type PASS
    auth_pass 1111
    }
    virtual_ipaddress {
    10.0.0.3/24 dev eth0 label eth0:1
    }
    }
    /etc/init.d/keepalived reload
      3)进行测试访问 注:用谷歌浏览器进行访问

  •   部署keepalived高可用服务问题
    同时在keepalived高可用集群中,出现了两个虚拟IP地址信息,这种情况就称为脑裂
      脑裂情况出现原因:

    • 心跳线出现问题
      网卡配置有问题
      交换设备有问题
      线缆连接有问题
    • 有防火墙软件阻止问题
    • virtual_router_id配置数值不正确
      总之:只要备服务器收不到组播包,就会成为主,而主资源没有释放,就会出现脑裂
      利用shell脚本实现监控管理:
    备用设备有VIP就是表示不正常


    • 真正实现主备切换
    • 出现脑裂情况了
      #!/bin/bash
    check_info=$(ip a|grep -c 10.0.0.3)
    if [ $check_info -ne 0 ]
    then
    echo "keepalived server error!!!"
    fi


  •   实现nginx反向代理监控虚拟IP地址
    1)编写nginx反向代理配置  注:lb01和lb02两台服务器都要配置
    server {
    listen      10.0.0.3:80;
    server_name  www.etiantian.org;
    root   html;
    index  index.html index.htm;
    location / {
    proxy_pass http://oldboy;
    proxy_set_header host $host;
    proxy_set_header X-Forwarded-For $remote_addr;
    }
    }
    server {
    listen       10.0.0.3:80;
    server_name  bbs.etiantian.org;
    root   html;
    index  index.html index.htm;
    location / {
    proxy_pass http://oldboy;
    proxy_set_header host $host;
    proxy_set_header X-Forwarded-For $remote_addr;
    }
    }
    /application/nginx/sbin/nginx -s stop
    /application/nginx/sbin/nginx
    netstat -lntup|grep nginx
    tcp        0      0 10.0.0.3:80                 0.0.0.0:*                   LISTEN      53334/nginx
      实现监听本地网卡上没有的IP地址  注:lb01和lb02两台服务器都要配置
    [root@lb02 keepalived]# /application/nginx/sbin/nginx -t
    nginx: the configuration file /application/nginx-14.0/conf/nginx.conf syntax is ok
    nginx: [emerg] bind() to 10.0.0.3:80 failed (99: Cannot assign requested address)
    nginx: configuration file /application/nginx-14.0/conf/nginx.conf test failed
    解决方法:
    echo 'net.ipv4.ip_nonlocal_bind = 1' >>/etc/sysctl.conf
    sysctl -p

  •   将keepalived服务和反向代理nginx服务建立联系
    nginx反向代理服务停止,keepalived服务也停止
    1)编写脚本
    vim  /server/scripts/check_web
    #!/bin/bash
    web_info=$(ps -ef|grep [n]ginx|wc -l)
    if [ $web_info -lt 2 ]
    then
    /etc/init.d/keepalived stop
    fi
      chmod +x check_web.sh  --- 修改脚本可执行权限
    2)修改nginx配置文件,实现监控nginx服务
    vim /etc/keepalived/keepalived.conf    --------编辑keepalived服务配置文件
    vrrp_script check_web {
    #定义一个监控脚本,脚本必须有执行权限
    script "/server/scripts/check_web.sh"   
    #指定脚本间隔时间
    interval 2   
    #脚本执行完成,让优先级值和权重值进行运算,从而实现主备切换      
    weight 2                                                                           
    }                    注意:放在global和vrrp之间
      调用    注:放在virtual后面
    track_script {      
    check_web
    }

  •   实现高可用集群架构中双主配置(互为主备配置)
    lb01
    vrrp_instance gorup01 {
    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 dev eth0 label eth0:1
    }
    }
    vrrp_instance gorup02 {
    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 dev eth0 label eth0:1
    }
    }
      lb02
    vrrp_instance gorup01 {
    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 dev eth0 label eth0:1
    }
    }
    vrrp_instance gorup02 {
    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 dev eth0 label eth0:1
    }
    }
      修改nginx反向代理监控地址信息
    www.etiantian.org 10.0.0.3:80
    bbs.etiantian.org 10.0.0.4:80





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-657220-1-1.html 上篇帖子: LVS_DR+Keepalived实践 下篇帖子: 18.1集群介绍 18.2 keepalived介绍18.3/18.4/18.5 用keepalived配置高可用集群
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表