实验环境
server1 和 server2 是调度器,server3 和 server4 是服务器
一、调度器中进行配置 haproxy+keepalived
server1 与server2 均要配置
【1】下载keepalived
yum install -y keepalived
【2】server1 中修改配置文件
[root@server1 keepalived]# cat keepalived.conf ! Configuration File for keepalivedglobal_defs {notification_email {root@localhost}notification_email_from keepalived@localhostsmtp_server 127.0.0.1smtp_connect_timeout 30router_id LVS_DEVELvrrp_skip_check_adv_addr#vrrp_strictvrrp_garp_interval 0vrrp_gna_interval 0}vrrp_script check_haproxy {#script "killall -0 haproxy"script "/opt/check_haproxy.sh" #可以使用脚本,也可以直接killallinterval 2weight 0}vrrp_instance VI_1 {state MASTERinterface eth0virtual_router_id 65priority 100advert_int 1authentication {auth_type PASSauth_pass 1111}track_script {check_haproxy}virtual_ipaddress {172.25.0.100}}
【3】server2 中修改配置文件(server2是backup,且优先级低于server1)
[root@server2 keepalived]# cat keepalived.conf ! Configuration File for keepalivedglobal_defs {notification_email {root@localhost}notification_email_from keepalived@localhostsmtp_server 127.0.0.1smtp_connect_timeout 30router_id LVS_DEVELvrrp_skip_check_adv_addr#vrrp_strictvrrp_garp_interval 0vrrp_gna_interval 0}vrrp_script check_haproxy {#script "killall -0 haproxy"script "/opt/check_haproxy.sh" #可以使用脚本,也可以直接killallinterval 2weight 0}vrrp_instance VI_1 {state BACKUPinterface eth0virtual_router_id 65priority 50advert_int 1authentication {auth_type PASSauth_pass 1111}track_script {check_haproxy}virtual_ipaddress {172.25.0.100}}
二、编写脚本
记得给可执行权限
两台虚拟机中都需要创建此脚本
[root@server1 opt]# vim /opt/check_haproxy.sh#!/bin/bashsystemctl status haproxy &> /dev/null || systemctl restart haproxy &> /dev/nullkillall -0 haproxyif [ $? -ne 0 ];thensystemctl stop keepalivedfi[root@server1 opt]# chmod +x /opt/check_haproxy.sh #可执行权限
三、haproxy
可以先修改好一台虚拟机中的/etc/haproxy/haproxy.cfg文件,然后使用scp命令发送到另一台虚拟机上
# use_backend staticif url_staticacl read_request method GETacl read_request method HEADacl write_request method PUTacl write_request method POSTuse_backend staticif read_requestuse_backend app if write_requestdefault_backend static# default_backend app#---------------------------------------------------------------------# static backend for serving up images, stylesheets and such#---------------------------------------------------------------------backend staticbalanceroundrobinserverstatic 172.25.15.3:80 check#---------------------------------------------------------------------# round robin balancing between the various backends#---------------------------------------------------------------------backend appbalanceroundrobin# balancesource# balance static-rrserver app1 172.25.15.4:80 checkserver backup 127.0.0.1:80 backup
四、测试
【1】初始状态
两台虚拟机中的haproxy和keepalived都是打开状态。此时172.25.15.100是在server1上(因为server1的是master优先级高),server2没有172.25.15.100
【2】验证高可用
在server1上:systemctl stop haproxy
此时172.25.15.100不再server1上了
关闭haproxy后172.25.15.100直接迁移到server2中了,实现了高可用
【3】验证优先级
重新打开server1中的haproxy之后,ip又会迁移回来。这是因为server1中的优先级高于server2