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

[经验分享] 基于keepalived实现web高可用

[复制链接]

尚未签到

发表于 2018-12-30 09:05:22 | 显示全部楼层 |阅读模式
  
一、首先要说明两个概念

1、keepalive的基本工作机制和应用场景

    Keepalived是一个专门为lvs提供高可用功能的机制,它可以实现当有两个主从lvs,而且主lvs损坏的时候,将其IP地址以及lvs转移至备份lvs上。IP地址转移就应用了我们前面说的VRRP协议,lvs转移可定义其配置文件,动态生成ipvs规则,还能实现健康状况检查。

2、VRRP协议

    VRRP:Virtual Router Redundancy Protocol,是虚拟路由冗余协议,通过此协议我们可以把多个路由器做成一个虚拟路由器,从而来保证其中某个路由坏掉的时候不会造成我们内部外出网络的全部中断。

实验目的:实现web高可用的功能。

准备环境:这里以RHEL5的虚拟机实现,下载软件包,可以编译安装,也可以直接用rpm包安装,这里直接下载了rpm包安装(下载地址 http://www.keepalived.org)

地址规划:

HA1: 172.16.27.8

HA2: 172.16.27.9

DR1: 172.16.127.8

DR2: 172.16.127.9

VIP: 172.16.27.1


二、配置步骤:

  
1、配置IP,使其相互间能够通讯

# setup

# service network restart

# ping 172.16.127.9

2、修改主机名

# hostname node1

# uname -n

# vim /etc/sysconfig/network     //使其下次开机也有效

3、配置主机名解析

# vim /etc/hosts

172.16.27.8 node1 node1

172.16.27.9 node2 node2

确保基于主机名可以通讯

# ping node2

4、同步时间

# service ntpd stop

# ntpdate 172.16.0.1       //这里是我们的时间服务器

# date

【第二个节点和第一个节点的配置基本相同,只需要将IP修改一下即可】



5、配置keepalived

node1:172.16.27.8


  # yum -y --nogpgcheck localinstall keepalived-1.2.7-5.el5.i386.rpm
  安装软件包
  # vim /etc/keepalived/keepalived.conf         修改配置文件
  global_defs {
  notification_email {
  root@localhost                                 # 邮件地址
  }
  notification_email_from root@localhost          # 发件人
  smtp_server 127.0.0.1                           # 邮件服务器地址
  smtp_connect_timeout 30                         # 连接超时间
  router_id LVS_DEVEL
  }
  vrrp_instance VI_1 {
  state MASTER                                     # 定义初始状态,这里是主节点
  interface eth0                                   # 虚拟路由工作的物理接口
  virtual_router_id 51                             # 组ID
  priority 101                                     # 主节点的优先级
  advert_int 1                                     # 发送通高的时间间隔
  authentication {
  auth_type PASS                                   # 密码认证
  auth_pass password
  }
  virtual_ipaddress {
  172.16.27.8/16 dev eth0 label eth0:0             # 在别名上配置虚拟地址
  }
  }
  virtual_server 172.16.27.8 80 {                  # vip地址以及对应的端口
  delay_loop 6
  lb_algo wlc                                      # 调度算法
  lb_kind DR                                       # lvs类型
  nat_mask 255.255.0.0                             # 网络掩码
  protocol TCP                                     # tcp协议
  real_server 172.16.27.8 80 {                     #realser的地址
  weight 1                                         # 权重
  HTTP_GET {                                       #为http服务进行健康状态检查
  url {                                            # 监测http服务的url
  path /
  status_code 200                                  # 正确的状态码
  }
  connect_timeout 2                                # 连接的超时时长
  nb_get_retry 3                                   # 重试次数
  delay_before_retry 1                             # 延迟时间
  }
  }
  real_server 172.16.27.9 80 {
  weight 1
  HTTP_GET{
  url {
  path /
  status_code 200
  }
  connect_timeout 2
  nb_get_retry 3
  delay_before_retry 1
  }
  }
  }
  [将node1的配置文件复制到node2上]




  node2 :172.16.27.9
  修改其vrrp状态为备份节点BACKUP,以及优先级要低于主节点。(别忘记IP也要修改)
  # vim /etc/keepalived/keepalived.conf

  在node1和node2上提供脚本
  脚本:在/etc/keepalived目录下提供一个名为notify.sh脚本
  
  #!/bin/bash
  #
  ifalias=${2:-eth0:0}
  interface=$(echo $ifalias | awk -F: '{print $1}')
  vip=$(ip addr show $interface | grep $ifalias | awk '{print $2}')
  contact='root@localhost'
  workspace=$(dirname $0)
  notify() {
      subject="$ip change to $1"
      body="$ip change to $1 $(date '+%F %H:%M:%S')"
      echo $body | mail -s "$1 transition" $contact
  }
  case "$1" in
      master)
          notify master
          exit 0;;
      backup)
          notify backup
          /etc/rc.d/init.d/httpd restart
          exit 0;;
      fault)
          notify fault
          exit 0;;
      *)
          echo 'Usage: $(basename $0) {master|backup|fault}'
          exit 1;;
  esac
  并执行脚本。
  启动两个节点的keepalived

  安装ipvsadm和httpd
  # yum -y install ipvsadm httpd
  # ipvsadm -L -n              #查看生成的ipvsadm规则
  # service httpd start
  到此配置完成,可以通过浏览器进行验证。




运维网声明 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-657437-1-1.html 上篇帖子: keepalived高可用集群的简单配置 下篇帖子: Keepalived 实现MySQL双主HA
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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