清风听雨 发表于 2018-12-31 12:23:01

使用Keepalived+ipvs构建(高可用+负载均衡)环境!

  之前写过一个heartbeat-ldirectord实现LVS的高可用,这里引入一个轻量级的程序Keepalived基于VRRP协议工作,也能为服务提供高可用功能,这个程序的开发初衷是为了给lvs提供高可用。
  

  下面我们来看看如何使用keepalived+ipvs实现高可用+负载均衡。
  在RHEL6.4以后就提供了rpm格式的安装包,这里我们用源码编译安装。
  先去官网下载源码包http://keepalived.org/
  解压源程序包,预编译配置,编译程序,安装程序。
  tar zxvf keepalived-1.2.13.tar.gz
  ./configure--prefix=/usr/local/keepalived--sysconfdir=/etc/
  make && make install
  编辑服务脚本,修改程序路径。
  vim /etc/init.d/keepalived
http://s3.运维网.com/wyfs02/M01/44/38/wKioL1PgO0zD0cJAAADv96mxCJg145.jpg
  编辑主配置文件/etc/keepalived/keepalived.conf
  ! Configuration File for keepalived
  

  global_defs {    //全局配置段
  notification_email {   //收件人邮箱
  root@localhost
  }
  notification_email_from keepadmin@localhost    //发件人
  smtp_server 127.0.0.1   //邮件服务器
  smtp_connect_timeout 30   //等待超时时间
  router_id LVS_DEVEL
  }
  

  vrrp_instance VI_1 {   //定义一个VRRP路由实例
  state MASTER    //初始状态(备节点改为BACKUP)
  interface eth0
  virtual_router_id 51//路由实例ID(唯一)
  priority 100   //优先级 (备节点的值要设置比主的低)
  advert_int 1   //通告频率
  authentication {    //认证配置
  auth_type PASS   //认证类型
  auth_pass 1111   //密码
  }
  virtual_ipaddress {    //虚拟IP
  192.168.18.18
  }
  notify_master "/etc/keepalived/notify.sh master"//状态转换通知,要自己写好脚本。
  notify_backup "/etc/keepalived/notify.sh backup"
  notify_fault "/etc/keepalived/notify.sh fault"
  }
  

  virtual_server 192.168.18.18 80 {   //定义虚拟服务
  delay_loop 6
  lb_algo wlc    //指定调度算法
  lb_kind DR   //指定工作模型
  nat_mask 255.255.255.0
  persistence_timeout 0    //持久连接
  protocol TCP
  

  real_server 192.168.18.203 80 {   //定义RealServer
  weight 1      //设置权重
  HTTP_GET {    //配置HTTP健康状态检测
  url {
  path /   //检测的路径
  status_code 200   //响应的状态信息
  }
  connect_timeout 3   //超时时间
  nb_get_retry 3      //重试次数
  delay_before_retry 3//每一次重试之前等待的时间
  }
  }
  real_server 192.168.18.204 80 {
  weight 2
  HTTP_GET {
  url {
  path /
  status_code 200
  }
  connect_timeout 3
  nb_get_retry 3
  delay_before_retry 3
  }
  }
  }
  把配置文件同步到备节点,修改我上面提到的两个地方即可,两个节点启动Keepalived服务。
  RealServer配置(略)
  scp /etc/keepalived/keepalived.conf admin2:/etc/keepalived/
  /etc/init.d/keepalived start
  查看主节点生成的配置
http://s3.运维网.com/wyfs02/M01/44/3A/wKioL1PgQsXQSilFAARhbTuMsPI761.jpg
  访问vip 192.168.18.18
http://s3.运维网.com/wyfs02/M00/44/3A/wKioL1PgQ0vSUdFEAADPguPp12k580.jpg
  

  刷新一下,请求自动转发到第二台realserver。
http://s3.运维网.com/wyfs02/M01/44/3A/wKioL1PgQ9HjnDxjAADU-ggc238496.jpg
  

  

  这时我们模拟坏了一台RealServer,将Realserver2-192.168.18.203网络服务给stop,再看看状态。
http://s3.运维网.com/wyfs02/M02/44/3E/wKioL1PgRd-hoPxxAAInQXlGlLI194.jpg
  再把Realserver2给恢复。
http://s3.运维网.com/wyfs02/M01/44/3E/wKioL1PgR36D_f42AAH3A0Pw9QM939.jpg
  这时我们模拟主Director故障了,把主节点网络服务stop。
  我们来到备节点
http://s3.运维网.com/wyfs02/M00/44/3E/wKioL1PgSKPRDU53AATldlDQ0sY874.jpg
  主节点下线了,备节点优先级为最高,继承资源,如果这是当主节点恢复后,资源还是会回到主节点的,因为主节点的优先级更高。
  好了,这就实现了用keepalived给lvs提供高可用。
  

  有问题欢迎与我交流QQ1183710107
  




页: [1]
查看完整版本: 使用Keepalived+ipvs构建(高可用+负载均衡)环境!