haproxy 1.6. 4+ keepalived安装 部署笔记
global
log 127.0.0.1 local3 info #在本机记录日志
maxconn 65535 #每个进程可用的最大连接数
chroot /usr/local/haproxy #haproxy 安装目录
uid 65534 #运行haproxy的用户uid(cat /etc/passwd 查看,这里是nobody的uid)
gid 65534 #运行haproxy的用户组id(cat /etc/passwd 查看,这里是nobody组id)
daemon #以后台守护进程运行
#stats socket /var/run/haproxy.stat mode 600 level operator
stats socket /var/run/haproxy.sock mode 600 level admin
stats timeout 2m
log 127.0.0.1 local2
defaults
log global
mode http #运行模式 tcp、 http、 health
retries 3 #三次连接失败,则判断服务不可用
option redispatch #如果后端有服务器宕机,强制切换到正常服务器
maxconn 65535 #每个进程可用的最大连接数
timeout connect 5000 #连接超时
timeout client 50000 #客户端超时
timeout server 50000 #服务器端超时
listen stats_134
bind 0.0.0.0:50040
mode http
option httplog
maxconn 10
stats refresh 30s
stats uri /stats
#stats realm XingCloud\ Haproxy
stats auth admin:admin #用这个账号登录,可以自己设置
stats enable
stats auth Frank:Frank
stats hide-version
stats admin if TRUE
frontend https_frontend
bind *:443
mode tcp
default_backend web_server
backend web_server
mode tcp
balance roundrobin
stick-table type ip size 200k expire 30m
stick on src
server s1 192.168.31.165:443 check inter 1500 rise 3 fall 3 weight 1
server s2 192.168.31.166:443 check inter 1500 rise 3 fall 3 weight 1
########################
# notification_email{
# admin@example1.com #事件发生时,发送email地址
#}
# notification_email_from admin@example.com #邮件发送地址
# vrrp_skip_check_adv_addr #检测对VRRP数据包源地址检测,开启后会增加时耗
# vrrp_strict #是否严格执行VRRP协议,建议关闭
# vrrp_garp_interval 0 #通过接口发送免费ARP延迟,默认为0
# vrrp_gna_interval 0 #发送网卡na消息延迟,默认为0
}
script "/etc/keepalived/chk.sh" #检测服务脚本路径
interval 2 #检测时间间隔,单位s
weight -20 #服务检测失败,权重降级值
}
vrrp_instance VI_1 {
state MASTER #指定实例的初始状态,MASTER为主,BACKUP为备
interface eth3 #实例绑定网卡,通过此网卡发送VRRP包,可选非VIP网卡
#track_interface { 监控以下网卡,任何一个down就会切换到FALT(可选)
#eth0
#eth1}
virtual_router_id 101 #虚拟路由标识,数字组成,整个局域网内唯一 MASTER和BACKUP一致
preempt #抢占模式,当优先级高时,自动抢占为MASTER
mcast_src_ip 192.168.31.167 #发送VRRP通告地址,不设置默认使用interface指定的网卡。注:选用稳定网卡发送
priority 100 #设置节点优先级,数值越大,优先级越高,范围:0-255
advert_int 1 #MASTER与BACKUP之间同步检查的时间间隔,单位为秒
virtual_ipaddress { #虚拟ip地址,可多个,每个地址占一行,格式:<IPADDR/MASK> <IPADDR> <IPADDR/MASK dev 网卡名称>
192.168.31.200/24 dev eth3
}
authentication {
auth_type PASS #验证类型,类型主要有PASS、AH两种,常用PASS,密码是明文,AH为 ipsec 认证头认证,不需要配置密码 。
auth_pass 1111 #设置VRRP实例通信密码,MASTER与BACKUP使用相同的密码才能正常通信。
}
track_script { #指定脚本名称,与vrrp_script设定名称一致
chk_haproxy
}
# notify_master "/etc/init.d/haproxy restart" #当前节点成为主节点时触发的脚本
# notify_backup "/etc/init.d/haproxy stop" #当前节点成为备节点时触发的脚本
}
#####################################################################
# notification_email{
# admin@example1.com #事件发生时,发送email地址
#}
# notification_email_from admin@example.com #邮件发送地址
# vrrp_skip_check_adv_addr #检测对VRRP数据包源地址检测,开启后会增加时耗
# vrrp_strict #是否严格执行VRRP协议,建议关闭
# vrrp_garp_interval 0 #通过接口发送免费ARP延迟,默认为0
# vrrp_gna_interval 0 #发送网卡na消息延迟,默认为0
}
script "/etc/keepalived/chk.sh" #检测服务脚本路径
interval 2 #检测时间间隔,单位s
weight -20 #服务检测失败,权重降级值
}
vrrp_instance VI_1 {
state BACKUP #指定实例的初始状态,MASTER为主,BACKUP为备
interface eth2 #实例绑定网卡,通过此网卡发送VRRP包,可选非VIP网卡
#track_interface { 监控以下网卡,任何一个down就会切换到FALT(可选)
#eth0
#eth1}
virtual_router_id 101 #虚拟路由标识,数字组成,整个局域网内唯一 MASTER和BACKUP一致
preempt #抢占模式,当优先级高时,自动抢占为MASTER
mcast_src_ip 192.168.31.168 #写本机IP地址 发送VRRP通告地址,不设置默认使用interface指定的网卡。注:选用稳定网卡发送
priority 90 #设置节点优先级,数值越大,优先级越高,范围:0-255
advert_int 1 #MASTER与BACKUP之间同步检查的时间间隔,单位为秒
virtual_ipaddress { #虚拟ip地址,可多个,每个地址占一行,格式:<IPADDR/MASK> <IPADDR> <IPADDR/MASK dev 网卡名称>
192.168.31.200/24 dev eth2
}
authentication {
auth_type PASS #验证类型,类型主要有PASS、AH两种,常用PASS,密码是明文,AH为 ipsec 认证头认证,不需要配置密码 。
auth_pass 1111 #设置VRRP实例通信密码,MASTER与BACKUP使用相同的密码才能正常通信。
}
track_script { #指定脚本名称,与vrrp_script设定名称一致
chk_haproxy
}
# notify_master "/etc/init.d/haproxy restart" #当前节点成为主节点时触发的脚本
# notify_backup "/etc/init.d/haproxy stop" #当前节点成为备节点时触发的脚本
}
global
log 127.0.0.1 local3 info #在本机记录日志
maxconn 65535 #每个进程可用的最大连接数
chroot /usr/local/haproxy #haproxy 安装目录
uid 65534 #运行haproxy的用户uid(cat /etc/passwd 查看,这里是nobody的uid)
gid 65534 #运行haproxy的用户组id(cat /etc/passwd 查看,这里是nobody组id)
daemon #以后台守护进程运行
#stats socket /var/run/haproxy.stat mode 600 level operator
stats socket /var/run/haproxy.sock mode 600 level admin
stats timeout 2m
log 127.0.0.1 local2
defaults
log global
mode http #运行模式 tcp、 http、 health
retries 3 #三次连接失败,则判断服务不可用
option redispatch #如果后端有服务器宕机,强制切换到正常服务器
maxconn 65535 #每个进程可用的最大连接数
timeout connect 5000 #连接超时
timeout client 50000 #客户端超时
timeout server 50000 #服务器端超时
listen stats_134
bind 0.0.0.0:50040
mode http
option httplog
maxconn 10
stats refresh 30s
stats uri /stats
#stats realm XingCloud\ Haproxy
stats auth admin:admin #用这个账号登录,可以自己设置
stats enable
stats auth Frank:Frank
stats hide-version
stats admin if TRUE
frontend https_frontend
bind *:443
mode tcp
default_backend web_server
backend web_server
mode tcp
balance roundrobin
stick-table type ip size 200k expire 30m
stick on src
server s1 192.168.31.165:443 check inter 1500 rise 3 fall 3 weight 1
server s2 192.168.31.166:443 check inter 1500 rise 3 fall 3 weight 1
#frontend http-in #自定义描述信息
# mode http #运行模式 tcp、 http、 health
# maxconn 65535 #每个进程可用的最大连接数
# bind *:80 #监听 80 端口
# log global
# option httplog
# option httpclose #每次请求完毕后主动关闭 http 通道
# acl is_a hdr_beg(host) -i www.wangshibo.com #规则设置,-i 后面是要访问的域名
# acl is_b hdr_beg(host) -i www.guohuihui.com #如果多个域名,就写多个规则,一规则对应一个域名;即后面有多个域名,就写 is_c、 is-d….,这个名字可以随意起。但要与下面的use_backend 对应
# use_backend web-server if is_a #如果访问 is_a 设置的域名,就负载均衡到下面backend 设置的对应 web-server 上。web-server所负载的域名要都部署到下面的web01和web02上。如果是不同的域名部署到不同的机器上,就定义不同的web-server。
# use_backend web-server if is_b