Haproxy版本:Haproxy-1.8.20linux
keepalived版本:keepalived v1.3.5c++
Haproxy:172.24.77.241(master)web
安裝依賴包vim
yum install gcc gcc-c++ glibc glibc-devel pcre pcre-devel openssl openssl-devel systemd-devel net-tools vim iotop bc zip unzip zlib-devel lrzsz tree screen lsof tcpdump wget ntpdate -ybash
下載並解壓安裝包服務器
cd /usr/local/src/socket
tar xvf haproxy-1.8.20.tar.gzide
cd haproxy-1.8.20測試
編譯安裝Haproxy
make ARCH=x86_64 TARGET=linux2628 USE_PCRE=1 USE_OPENSSL=1 USE_ZLIB=1 USE_SYSTEMD=1 USE_CPU_AFFINITY=1 PREFIX=/usr/local/haproxy
make install PREFIX=/usr/local/haproxy
複製啓動程序
cp haproxy /usr/sbin/
建立啓動腳本
vim /usr/lib/systemd/system/haproxy.service
[Unit]
Description=HAProxy Load Balancer
After=syslog.target network.target
[Service]
ExecStartPre=/usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -c -q
ExecStart=/usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid
ExecReload=/bin/kill -USR2 $MAINPID
[Install]
WantedBy=multi-user.target
:wq
建立目錄和用戶
mkdir /etc/haproxy
cd /etc/haproxy
修改默認haproxy配置文件
vim /etc/haproxy/haproxy.cfg
global
chroot /usr/local/haproxy
stats socket /var/lib/haproxy/haproxy.sock mode 600 level admin
user haproxy
group haproxy
daemon
pidfile /usr/local/haproxy/run/haproxy.pid
log 127.0.0.1 local3 info
defaults
option http-keep-alive
option forwardfor
maxconn 100000
mode http
timeout connect 300000ms
timeout client 300000ms
timeout server 300000ms
listen stats
mode http
bind 0.0.0.0:9999
stats enable
log global
stats uri /haproxy-status
stats auth haadmin:
listen web_port
bind 0.0.0.0:80
mode http
log global
server web1 172.24.77.241:8080 weight 5 check inter 2000 rise 2 fall 3
server web1 172.24.77.242:8080 weight 5 check inter 2000 rise 2 fall 3
建立啓動用戶
useradd haproxy -s /sbin/nologin
受權目錄
mkdir /var/lib/haproxy
chown haproxy.haproxy /var/lib/haproxy/ -R
啓動Haproxy
systemctl start haproxy
檢查啓動結果
ps -ef |grep haproxy |grep -v "grep"
lsof -i:80
設置開機啓動
systemctl enable haproxy
安裝keepalive
yum install keepalived -y
查看安裝版本信息
rpm -qi keepalived
配置Keepalived,master配置以下
vim /etc/keepalived/keepalived.conf
!刪除多餘配置
:35,156d
!修改成如下內容
! Configuration File for keepalived
global_defs {
notification_email {br/>root@locahost
}
notification_email_from keepalived@localhost
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id ha1.jay.com
vrrp_skip_check_adv_addr
vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
vrrp_mcast_group4 224.0.0.18
}
vrrp_instance VI_1 {
state MASTER
interface ens33
virtual_router_id 80
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass silence2t
}
virtual_ipaddress {
172.24.77.245 dev ens33 lable ens33:0
}
track_script {
chk_ haproxy
}
vrrp_script chk_haproxy{
script "/data/sh/check_haproxy.sh"
interval 1
weight 80
fall 3
rise 5
timeout 2
}
}
}
配置Keepalived,backup配置以下
vim /etc/keepalived/keepalived.conf
!刪除全部配置
:%d
!粘貼如下內容
! Configuration File for keepalived
global_defs {
notification_email {br/>root@locahost
}
notification_email_from keepalived@localhost
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id ha1.jay.com
vrrp_skip_check_adv_addr
vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
vrrp_mcast_group4 224.0.0.18
}
vrrp_instance VI_1 {
state BACKUP
interface ens33
virtual_router_id 80
priority 90
advert_int 1
authentication {
auth_type PASS
auth_pass silence2t
}
virtual_ipaddress {
172.24.77.245 dev ens33 lable ens33:0
}
track_script {
chk_ haproxy
}
vrrp_script chk_haproxy{
script "/data/sh/check_haproxy.sh"
interval 1
weight 80
fall 3
rise 5
timeout 2
}
}
查看VIP地址
ip addr
查看Iptalbes策略並刪除
iptables -vnL --line-number
iptables -D INPUT 1
測試訪問VIP
ping 172.24.77.245
測試keepalive高可用
!將佔有VIP地址的主機關機,查看
systemctl stop keepalived
killall keepalived
haproxy.sh腳本內容以下:建立目錄
mkdir -p /data/sh/
安裝killall
yum install psmisc -y
建立腳本文件
vim /data/sh/check_haproxy.sh
#!/bin/bash
#auto check haproxy process
#by author jay
/usr/bin/killall -0 haproxy
if
[[ $? -ne 0 ]]; then
/usr/bin/systemctl stop keepalived
fi
設置執行權限
chmod +x check_haproxy.sh
測試關閉Haproxy服務,查看keepavlive是否生效
killall -0 haproxy