色魔王子7 发表于 2018-11-9 11:44:17

如何快速构建高可用集群(Keepalived+Haproxy+Nginx)

yum -y install keepalived # 两节点都需部署  
# 172.16.25.109
  
# vi /etc/keepalived/keepalived.conf
  
! Configuration File for keepalived
  
global_defs {
  notification_email {
  root@localhost
  }
  notification_email_from admin@lnmmp.com
  smtp_connect_timeout 3
  smtp_server 127.0.0.1
  router_id LVS_DEVEL
  
}
  
vrrp_script chk_maintaince_down {
  script "[[ -f /etc/keepalived/down ]] && exit 1 || exit 0"
  interval 1
  weight 2
  
}
  
vrrp_script chk_haproxy {
  script "killall -0 haproxy"
  interval 1
  weight 2
  
}
  
vrrp_instance VI_1 {
  interface eth0
  state MASTER
  priority 100
  virtual_router_id 125
  garp_master_delay 1
  authentication {
  auth_type PASS
  auth_pass 1e3459f77aba4ded
  }
  track_interface {
  eth0
  }
  virtual_ipaddress {
  172.16.25.10/16 dev eth0 label eth0:0
  }
  track_script {
  chk_haproxy
  }
  notify_master "/etc/keepalived/notify.sh master 172.16.25.10"
  notify_backup "/etc/keepalived/notify.sh backup 172.16.25.10"
  notify_fault "/etc/keepalived/notify.sh fault 172.16.25.10"
  
}
  
vrrp_instance VI_2 {
  interface eth0
  state BACKUP
  priority 99
  virtual_router_id 126
  garp_master_delay 1
  authentication {
  auth_type PASS
  auth_pass 7615c4b7f518cede
  }
  track_interface {
  eth0
  }
  virtual_ipaddress {
  172.16.25.11/16 dev eth0 label eth0:1
  }
  track_script {
  chk_haproxy
  
chk_maintaince_down
  }
  notify_master "/etc/keepalived/notify.sh master 172.16.25.11"
  notify_backup "/etc/keepalived/notify.sh backup 172.16.25.11"
  notify_fault "/etc/keepalived/notify.sh fault 172.16.25.11"
  
}
  
# 172.16.25.110
  
# vi /etc/keepalived/keepalived.conf
  
! Configuration File for keepalived
  
global_defs {
  notification_email {
  root@localhost
  }
  notification_email_from admin@lnmmp.com
  smtp_connect_timeout 3
  smtp_server 127.0.0.1
  router_id LVS_DEVEL
  
}
  
vrrp_script chk_maintaince_down {
  script "[[ -f /etc/keepalived/down ]] && exit 1 || exit 0"
  interval 1
  weight 2
  
}
  
vrrp_script chk_haproxy {
  script "killall -0 haproxy"
  interval 1
  weight 2
  
}
  
vrrp_instance VI_1 {
  interface eth0
  state BACKUP
  priority 99
  virtual_router_id 125
  garp_master_delay 1
  authentication {
  auth_type PASS
  auth_pass 1e3459f77aba4ded
  }
  track_interface {
  eth0
  }
  virtual_ipaddress {
  172.16.25.10/16 dev eth0 label eth0:0
  }
  track_script {
  chk_haproxy
  
chk_maintaince_down
  }
  notify_master "/etc/keepalived/notify.sh master 172.16.25.10"
  notify_backup "/etc/keepalived/notify.sh backup 172.16.25.10"
  notify_fault "/etc/keepalived/notify.sh fault 172.16.25.10"
  
}
  
vrrp_instance VI_2 {
  interface eth0
  state MASTER
  priority 100
  virtual_router_id 126
  garp_master_delay 1
  authentication {
  auth_type PASS
  auth_pass 7615c4b7f518cede
  }
  track_interface {
  eth0
  }
  virtual_ipaddress {
  172.16.25.11/16 dev eth0 label eth0:1
  }
  track_script {
  chk_haproxy
  }
  notify_master "/etc/keepalived/notify.sh master 172.16.25.11"
  notify_backup "/etc/keepalived/notify.sh backup 172.16.25.11"
  notify_fault "/etc/keepalived/notify.sh fault 172.16.25.11"
  
}
  
# vi /etc/keepalived/notify.sh
  
#!/bin/bash
  
# Author: Jason.Yu
  
# description: An example of notify script
  
#
  
contact='root@localhost'
  
notify() {
  mailsubject="`hostname` to be $1: $2 floating"
  mailbody="`date '+%F %H:%M:%S'`: vrrp transition, `hostname` changed to be $1"
  echo $mailbody | mail -s "$mailsubject" $contact
  
}
  
case "$1" in
  master)
  notify master $2
  /etc/rc.d/init.d/haproxy restart
  exit 0
  ;;
  backup)
  notify backup $2 # 在节点切换成backup状态时,无需刻意停止haproxy服务,防止chk_maintaince和chk_haproxy多次对haproxy服务操作;
  exit 0
  ;;
  fault)
  notify fault $2 # 同上
  exit 0
  ;;
  *)
  echo 'Usage: `basename $0` {master|backup|fault}'
  exit 1
  ;;
  
esac


页: [1]
查看完整版本: 如何快速构建高可用集群(Keepalived+Haproxy+Nginx)