keepalived 高可用方案
http://s5.运维网.com/wyfs02/M01/85/3B/wKiom1edsP7DDGgaAAGgczaMWkM562.png-wh_500x0-wm_3-wmp_4-s_3597592729.pngKeepalived 高可用lvs
服务器准备:
node1:192.168.99.61 centos6.7 (keepalived+httpd)
node2:192.168.99.62 centos7.2 (keepalived+httpd)
node3:192.168.99.63 centos7.3 httpd服务
node4:192.168.99.64 centos7.4 httpd服务
vip:192.168.99.88 node1
yum -y install keepalived httpd node2
yum -y install keepalived httpd node3
yum -y install httpd node4
yum -y install httpd node1 配置keepalived
# cat keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
runingday@126.com
}
notification_email_from keepalived@runner.vip
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id node1
vrrp_mcast_group4 224.0.0.8
}
vrrp_instance VI_1 {
state MASTER
interface eth1
virtual_router_id 57
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 111222
}
virtual_ipaddress {
192.168.99.88/32 dev eth1 brd 192.168.99.88 label eth1:0
}
}
virtual_server 192.168.99.88 80 {
delay_loop 3
lb_algo rr
lb_kind DR
nat_mask 255.255.255.0
protocol TCP
real_server 192.168.99.63 80 {
weight 1
HTTP_GET {
url {
path /index.html
#digest 640205b7b0fc66c1ea91c463fac6334d
status_code 200
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
real_server 192.168.99.64 80 {
weight 1
HTTP_GET {
url {
path /index.html
#digest 640205b7b0fc66c1ea91c463fac6334d
status_code 200
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
} node2 keepalived配置
# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
runingday@126.com
}
notification_email_from keepalived@runner.vip
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id node2
vrrp_mcast_group4 224.0.0.8
}
vrrp_instance VI_1 {
state BACKUP
interface enp0s8
virtual_router_id 57
priority 98
advert_int 1
authentication {
auth_type PASS
auth_pass 111222
}
virtual_ipaddress {
192.168.99.88/32 dev enp0s8 brd 192.168.99.88 label enp0s8:0
}
}
virtual_server 192.168.99.88 80 {
delay_loop 3
lb_algo rr
lb_kind DR
nat_mask 255.255.255.0
protocol TCP
real_server 192.168.99.63 80 {
weight 1
HTTP_GET {
url {
path /index.html
#digest 640205b7b0fc66c1ea91c463fac6334d
status_code 200
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
real_server 192.168.99.64 80 {
weight 1
HTTP_GET {
url {
path /index.html
#digest 640205b7b0fc66c1ea91c463fac6334d
status_code 200
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
} node3-node4配置虚拟vip脚本
# cat vip.sh
#!/bin/bash
#
vip=192.168.99.88
mask=255.255.255.255
case $1 in
start)
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
ifconfig lo:0 $vip netmask $mask broadcast $vip up
route add -host $vip dev lo:0
;;
stop)
ifconfig lo:0 down
echo 0 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 0 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 0 > /proc/sys/net/ipv4/conf/all/arp_announce
echo 0 > /proc/sys/net/ipv4/conf/lo/arp_announce
;;
*)
echo "Usage: $(basename $0) start | stop"
;;
esac
Keepalived 高可用httpd服务
node1配置
# cat keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
runingday@126.com
}
notification_email_from keepalived@runner.vip
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id node1
vrrp_mcast_group4 224.0.0.8
}
vrrp_script chk_down {
script "[[ -f /etc/keepalived/down ]] && exit 1 || exit 0 "
interval 1
weight -5
}
vrrp_script chk_httpd {
script "killall -0 httpd && exit 0 || exit 1"
interval 1
weight -5
}
vrrp_instance VI_1 {
state MASTER
interface eth1
virtual_router_id 57
priority 100
advert_int 1
nopreempt
authentication {
auth_type PASS
auth_pass 111222
}
virtual_ipaddress {
192.168.99.88/32 dev eth1
}
track_script {
chk_down
chk_httpd
}
notify_master "/etc/keepalived/notify.sh master"
notify_backup "/etc/keepalived/notify.sh backup"
notify_fault "/etc/keepalived/notify.sh fault"
} node2配置
# cat keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
runingday@126.com
}
notification_email_from keepalived@runner.vip
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id node2
vrrp_mcast_group4 224.0.0.8
}
vrrp_script chk_down {
script "[[ -f /etc/keepalived/down ]] && exit 1 || exit 0 "
interval 1
weight -5
}
vrrp_script chk_httpd {
script "killall -0 httpd && exit 0 || exit 1"
interval 1
weight -5
}
vrrp_instance VI_1 {
state BACKUP
interface enp0s8
virtual_router_id 57
priority 98
advert_int 1
authentication {
auth_type PASS
auth_pass 111222
}
virtual_ipaddress {
192.168.99.88/32 dev enp0s8
}
track_script {
chk_down
chk_httpd
}
notify_master "/etc/keepalived/notify.sh master"
notify_backup "/etc/keepalived/notify.sh backup"
notify_fault "/etc/keepalived/notify.sh fault"
} notify脚本
# cat notify.sh
#!/bin/bash
#
contact="root@localhost"
notify() {
mailsubject="$(hostname) to be $1, vip floating."
mailbody="$(date + '%F %T'): vrrp transition, $(hostname) changed to be $1"
echo "$mailbody" | mail -s "$mailsubject" $contact
}
case $1 in
master)
notify master
;;
backup)
notify backup
systemctl restart httpd.service
;;
fault)
notify fault
systemctl restart httpd.service
;;
*)
echo "Usage: $(basename $0) {master|backup|fault}"
exit 1
;;
esac
怎么找到想要的资源呢?? 怎么找到想要的资源呢??
页:
[1]