Keepalive 安装
下载地址:http://www.keepalived.org/download.html
(1)解压缩软件
[root@plvskygis01 tmp]# tar zxf keepalived-2.0.6.tar.gz
[root@plvskygis01 tmp]# cd keepalived-2.0.6
[root@plvskygis01 keepalived-2.0.8]# pwd
/tmp/keepalived-2.0.6
(2)依赖包的安装
[root@plvskygis01 keepalived-2.0.6]# yum install openssl openssl-devel
[root@plvskygis01 keepalived-2.0.6]# yum install -y libnfnetlink-devel
[root@plvskygis01 keepalived-2.0.6]# yum install gcc libnl3-devel net-snmp-devel
(3)安装keepalive软件
[root@plvskygis01]#./configure --with-init=SYSV --prefix=/usr/local/keepalived
[root@plvskygis01]#make &make install
(4)整理管理文件:
[root@plvskygis01]# cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
[root@plvskygis01]# cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
[root@plvskygis01]#cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
[root@plvskygis01]#cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/rc.d/init.d
[root@phapxykdgis01 haproxy]# chmod +x /etc/init.d/keepalived
[root@plvskygis01 ]# chkconfig keepalived on
[root@plvskygis01 ]# mkdir /etc/keepalived
[root@plvskygis01]#cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
(5)修改配置文件
keepalive 主节点配置文件
! Configuration File for keepalived
global_defs {
notification_email {
[email protected]
[email protected]
[email protected]
}
notification_email_from [email protected]
smtp_server 172.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL
vrrp_skip_check_adv_addr
! vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_script check_haproxy {
script "/etc/keepalived/check_haproxy.sh"
interval 5
weight 2
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 220
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
unicast_peer {
172.17.117.13
172.17.117.14
}
virtual_ipaddress {
172.17.117.31
}
track_script {
check_haproxy
}
notify "/etc/keepalived/notify.sh"
}
keepalive备节点配置文件
! Configuration File for keepalived
global_defs {
notification_email {
[email protected]
[email protected]
[email protected]
}
notification_email_from [email protected]
smtp_server 172.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL
vrrp_skip_check_adv_addr
! vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_script check_haproxy {
script "/etc/keepalived/check_haproxy.sh"
interval 5
weight 2
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 220
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
unicast_peer {
172.17.117.13
172.17.117.14
}
virtual_ipaddress {
172.17.117.31
}
track_script {
check_haproxy
}
notify_master "/etc/keepalived/notify.sh"
}
cat check_haproxy.sh
#!/bin/bash
A=`ps -C haproxy --no-header | wc -l`
if [ $A -eq 0 ]
then service haproxy start
sleep 3
if [ `ps -C haproxy --no-header | wc -l ` -eq 0 ]
then service keepalived stop
fi
fi
cat notify.sh
#!/bin/bash
# for ANY state transition.
# "notify" script is called AFTER the
# notify_* script(s) and is executed
# with 3 arguments provided by keepalived
# (ie don't include parameters in the notify line).
# arguments
# $1 = "GROUP"|"INSTANCE"
# $2 = name of group or instance
# $3 = target state of transition
# ("MASTER"|"BACKUP"|"FAULT")
TYPE=$1
NAME=$2
STATE=$3
case $STATE in
"MASTER") echo "I'm the MASTER! Whup whup." > /usr/local/keepalived/log/keepalive.log
exit 0
;;
"BACKUP") echo "Ok, i'm just a backup, great." > /usr/local/keepalived/log/keepalive.log
exit 0
;;
"FAULT") echo "Fault, what ?" > /usr/local/keepalived/log/keepalive.log
exit 0
;;
*) echo "Unknown state" > /usr/local/keepalived/log/keepalive.log
exit 1
;;
esac
(6)Keepalive 日志的配置
修改日志存放的位置
cat /etc/rsyslog.conf
添加
local0.* /usr/local/keepalived/log/keepalive.log
vi /etc/sysconfig/keepalived
KEEPALIVED_OPTIONS="-D"
改为
KEEPALIVED_OPTIONS="-D -S 0"
(7)启动keepalive
[root@plvskygis01 keepalived]# service keepalived start
Starting keepalived: [ OK ]
Hapoxy 安装
(1)安装haproxy 软件
[root@plvskygis01 haproxy-1.8.14]# uname -a
Linux plvskygis01 2.6.32-642.el6.x86_64 #1 SMP Wed Apr 13 00:51:26 EDT 2016 x86_64 x86_64 x86_64 GNU/Linux
(2)编译软件
make TARGET=linux26 ARCH=x86_64 PREFIX=/usr/local/haproxy
其中TARGET表示OS的内核版本,ARCH表示OS的位数,PREFIX表示haprxoy的安装路径。
make install PREFIX=/usr/local/haproxy
(3)编译完后,会在/usr/local/haproxy下产生文件
[root@plvskygis01 haproxy]# ll
total 12
drwxr-xr-x 3 root root 4096 Oct 26 15:08 doc
drwxr-xr-x 2 root root 4096 Oct 26 15:08 sbin
drwxr-xr-x 3 root root 4096 Oct 26 15:08 share
(4)创建用户
[root@plvskygis01 haproxy]# useradd haproxy
(5)haproxy 参数文件配置
cat /etc/haproxy/haproxy.cfg
global
log 127.0.0.1 local2
chroot /usr/local/haproxy
pidfile /var/run/haproxy.pid
maxconn 4000
user haproxy
group haproxy
daemon
stats socket /usr/local/haproxy/stats
defaults
mode tcp
log global
log 127.0.0.1 local2
option dontlognull
option redispatch
option abortonclose
retries 3
timeout http-request 10s
timeout queue 1m
timeout connect 10s
timeout client 20m
timeout server 20m
timeout http-keep-alive 10s
timeout check 10s
maxconn 600
listen stats
mode http
bind *:8080
stats enable
stats hide-version
stats uri /haproxy-stats
stats realm Haproxy\ Statistics
stats auth admin:admin
stats admin if TRUE
stats refresh 30s
option forwardfor
# default_backend mysql
listen mysql
bind 172.17.103.20:11856
mode tcp
balance roundrobin
#balance leastconn
server ss2 172.17.103.27:3306 check port 3306 maxconn 500 rise 3 fall 3
server ss3 172.17.103.28:3306 check port 3306 maxconn 500 rise 3 fall 3
server ss4 172.17.103.29:3306 check port 3306 maxconn 500 rise 3 fall 3
option forwardfor
#如果后端服务器需要获得客户端真实ip需要配置的参数,必须要放在listen模块下 ,mode必须是mode http
检测文件内容是否正常
/usr/local/haproxy/sbin/haproxy -f /etc/haproxy/haproxy.cfg -c
Configuration file is valid
(6)启动服务
/usr/local/haproxy/sbin/haproxy -f /etc/haproxy/haproxy.cfg
(7)设置启动服务
[root@plvskygis01 examples]# cp haproxy.init /etc/rc.d/init.d/
[root@plvskygis01 examples]#mv /etc/init.d/haproxy.init /etc/init.d/haproxy
[root@plvskygis02 examples]# chmod +x /etc/rc.d/init.d/haproxy
[root@plvskygis01 ]#vi /etc/init.d/haproxy
改成
BIN=/usr/local/haproxy/sbin/$BASENAME
或者cp /usr/local/haproxy/sbin/haproxy /usr/sbin/haproxy
(8)设置参数
[root@phapxykygis01 ~]# cat /etc/sysctl.conf
net.ipv4.ip_forward = 1
开启IP转发功能
net.ipv4.ip_nonlocal_bind = 1
开启允许绑定非本机的IP
(8)Haproxy 日志配置
vi haproxy.conf(在default处添加如下信息)
defaults
log global
option httplog
log 127.0.0.1 local2
vi /etc/rsyslog.conf(添加如下内容)
#由于haproxy的日志是用udp传输的,所以要启用rsyslog的udp监听
$ModLoad imudp
$UDPServerRun 514
local2.* /usr/local/haproxy/log/haproxy.log
vi /etc/sysconfig/rsyslog
把SYSLOGD_OPTIONS="-m 0"
改成 SYSLOGD_OPTIONS="-r -m 0 -c 2"
相关解释说明:
-r:打开接受外来日志消息的功能,其监控514 UDP端口;
-x:关闭自动解析对方日志服务器的FQDN信息,这能避免DNS不完整所带来的麻烦;
-m:修改syslog的内部mark消息写入间隔时间(0为关闭),例如240为每隔240分钟写入一次"--MARK--"信息;
-h:默认情况下,syslog不会发送从远端接受过来的消息到其他主机,而使用该选项,则把该开关打开,所有
接受到的信息都可根据syslog.conf中定义的@主机转发过去
配置完毕后重启rsyslogd和haproxy即可.
###重启服务
systemctl restart haproxy
service rsyslog restart
测试mysql代理转发功能
/mysql/mysql5635/bin/mysql -uchecksums -pchecksums -h172.17.103.20 -P11851 -e' select @@port';