1 环境介绍
1.1 keepalived的主从
master: 10.50.85.26
slave: 10.50.85.56
1.2 keepavlied的VIP和端口
10.50.85.200:10051
注意:keepavlied的VIP必须是和mater和slave是同一网段的
1.3 代理的两台主机的10050端口
10.50.85.26:10050
10.50.85.56:10050
2 在两台主机上分别按照haproxy和keeepalived
yum -y install keepalived haproxy
2.1 在mster上配置keepalive的和haproxy
2.1.1 keepalived配置
keepalived的配置文件路径:/etc/keepalived/
注意:不使用默认配置
vim /etc/keepalived/keepalived.conf
global_defs {
notification_email {br/>[email protected]
}
notification_email_from [email protected]
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_script chk_http_port {
script "/etc/keepalived/check.sh"
interval 2
weight 2
}
vrrp_instance VI_1 {
state MASTER
interface br0
virtual_router_id 200
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
track_script {
chk_http_port
}
virtual_ipaddress {
10.50.85.200 dev br0 label br0:0
}
}
2.1.1.1 vrrp_script chk_http_port 配置部分是检测的脚本,用于判断后端端口是否存活,如果不存活的话,杀掉haproxy,并停掉keepalived,使服务能切换到正常的slave上。/etc/keepalived/check.sh脚本内容如下
#! /usr/bin/env bash
/usr/bin/pkill -0 -f haproxy
if [ $? -ne 0 ];then
service start haproxy
sleep 3
fi
/usr/bin/pkill -0 -f haproxy
if [ $? -ne 0 ];then
service stop keepalived
fi
2.1.1.2 vrrp_instance VI_1配置部分
vrrp_instance VI_1 是在vrrp中的id
state MASTER 当前主机的是地位(是master或者slave)
interface br0 vip绑定的物理接口
priority 100 在主从之间的优先级(数字越大,优先级越高)
2.1.1.3 virtual_ipaddress 配置部分
10.50.85.200 dev br0 label br0:0 实际绑定的vip
2.1.2 haproxy的配置
haproxy配置文件的路径:/etc/haproxy/
vim /etc/haproxy/haproxy.cfg
global
log 127.0.0.1 local2
maxconn 65536
chroot /var/lib/haproxy
pidfile /var/run/haproxy.pid
user haproxy
group haproxy
daemon
defaults
log global
option dontlognull
retries 3
option redispatch
maxconn 65536
timeout connect 70000
timeout client 70000
timeout server 70000
listen admin_stats 10.50.85.26:48800
stats uri /admin-status
stats auth admin:admin
mode http
option httplog
listen mtmycat 10.50.85.200:10051
mode tcp
balance roundrobin
server host85-56 10.50.85.56:10050 check port 9158 inter 5s rise 2 fall 3
server host85-26 10.50.85.26:10050 check port 9158 inter 5s rise 2 fall 3
2.1.2.1 global和default是全局配置部分
2.1.2.2 listen admin_stats 是监控界面,便于查看haproxy状态
mode 是tcp层的负载
balance 是负载的模式,上面是平均负载
server 是后端服务的相关信息
2.2 在slave上配置keepalive的和haproxy
2.2.1 keepalived的配置
vim /etc/keepalived/keepalived.conf
global_defs {
notification_email {br/>[email protected]
}
notification_email_from [email protected]
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_script chk_http_port {
script "/etc/keepalived/check.sh"
interval 2
weight 2
}
vrrp_instance VI_2 {
state BACKUP
interface br0
virtual_router_id 200
priority 99
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
track_script {
chk_http_port
}
virtual_ipaddress {
10.50.85.200 dev br0 label br0:0
}
}
2.2.2 haprox的配置
vim /etc/haproxy/haproxy.cfg
global
log 127.0.0.1 local2
maxconn 65536
chroot /var/lib/haproxy
pidfile /var/run/haproxy.pid
user haproxy
group haproxy
daemon
defaults
log global
option dontlognull
retries 3
option redispatch
maxconn 65536
timeout connect 70000
timeout client 70000
timeout server 70000
listen admin_stats 10.50.85.56:48800
stats uri /admin-status
stats auth admin:admin
mode http
option httplog
listen mtmycat 10.50.85.200:10051
mode tcp
balance roundrobin
server host85-56 10.50.85.56:10050 check port 10050 inter 5s rise 2 fall 3
server host85-26 10.50.85.26:10050 check port 10050 inter 5s rise 2 fall 3
3 启动两个主机上的keepavlied和haproxy服务,进行测试
ping 10.50.85.200是通的,telnet 10.50.85.200 10051端口也是通的