高可用-Haproxy+keepalived
yum install keepalived haproxy -y
两个 haproxy 配置
cat > /etc/haproxy/haproxy.cfg << EOF
global
# 最大连接数
maxconn 2000
# 所属用户
group haproxy
# 所属组
group haproxy
# 在本机记录日志
log 127.0.0.1 local0 info
# 超时时间
stats timeout 30s
# 以后台守护进程运行
daemon
# 软件的工作目录
chroot /var/lib/haproxy
# Pid 文件
pidfile /var/run/haproxy.pid
defaults
# 默认的模式mode { tcp|http|health },tcp是4层,http是7层,health只会返回OK
mode http
# 采用全局定义的日志
log global
# 三次连接失败,则判断服务不可用
retries 3
# 如果后端有服务器宕机,强制切换到正常服务器
option redispatch
# 启用日志记录HTTP请求,默认haproxy日志记录是不记录HTTP请求日志
option httplog
# 不记录健康检查的日志信息
option dontlognull
# 每次请求完毕后主动关闭http通道
option http-server-close
# 如果后端服务器需要获得客户端真实ip需要配置的参数,可以从Http Header中获得客户端ip
option forwardfor except 127.0.0.0/8
# 连接超时
timeout connect 5000
# 客户端连接超时
timeout client 50000
# 服务器连接超时
timeout server 50000
# http请求超时时间
timeout http-request 15s
# 设置http-keep-alive的超时时间
timeout http-keep-alive 15s
# 统计页面 URL 路径
stats uri /haproxy
# 统计页面自动刷新时间
stats refresh 30s
# 统计页面输入密码框提示信息
stats realm haproxy-status
# 统计页面用户名和密码
stats auth admin:dxInCtFianKtL]36
# 隐藏统计页面上 HAProxy 版本信息
stats hide-version
frontend http-in
# 监听的端口
bind *:80
# 运行模式 tcp、 http、 health
mode http
# 启用日志记录
option httplog
# 每次请求完毕后主动关闭 http 通道
option httpclose
#规则设置,-i 后面是要访问的域;如果多个域名,就写多个规则,一规则对应一个域名;即后面有多个域名,就写 is_c、 is-d….,这个名字可以随意起。但要与下面的use_backend 对应
acl is_a hdr_beg(host) -i www.aaa.com
acl is_b hdr_beg(host) -i www.bbb.com
# 如果访问 is_a 设置的域名,就负载均衡到下面backend 设置的对应 web-server 上,web-server所负载的域名要都部署到下面的web01和web02上。如果是不同的域名部署到不同的机器上,就定义不同的web-server。
use_backend web-server if is_a
use_backend web-server if is_b
backend web-server
mode http
# 设置负载均衡模式,source 保存 session 值,roundrobin 轮询模式
balance roundrobin
option httpclose
option forwardfor
# inter 2000 心跳检测时间;rise 2 三次连接成功,表示服务器正常;fall 3 三次连接失败,表示服务器异常; weight 1 权重设置
server web01 IP:PORT weight 1 check inter 2000 rise 2 fall 3
server web02 IP:PORT weight 1 check inter 2000 rise 2 fall 3
EOF
两个keepalived配置
master
! Configuration File for keepalived
global_defs {
router_id nginx
}
vrrp_instance VI_1 {
state MASTER
virtual_router_id 100
interface eth0
priority 100
advert_int 1
nopreempt
authentication {
auth_type PASS
auth_pass 1234
}
virtual_ipaddress {
192.168.10.101
}
}
backup
! Configuration File for keepalived
global_defs {
router_id nginx
}
vrrp_instance VI_1 {
state BACKUP
virtual_router_id 100
interface eth0
priority 99
advert_int 1
nopreempt
authentication {
auth_type PASS
auth_pass 1234
}
virtual_ipaddress {
192.168.10.101
}
}
Last updated