目 录
1 环境 1
2 准备 1
3 安装(此步骤需同时在247,248机器执行) 1
4 开启路由转发(此步骤需同时在247,248机器执行) 3
5 设置虚拟IP(此步骤需同时在244,245机器执行) 3
6 配置keepalived 4
6.1 master 4
6.2 slave配置 5
7 haproxy的安装 7
8 创建配置文件和启动文件 7
9 配置HAProxy 7
10 启动HAProxy 9
11 配置关联HAProxy启动脚本 9
1 环境
Centos:5.7
HAProxy-Master: 10.1.1.247
HAProxy-Backup: 10.1.2.248
VIP: 10.1.1.240
RealServer1: 10.1.1.242
RealServer1: 10.1.1.1.243
2 准备
haproxy-1.6.6.tar.gz
keepalived-1.2.21.tar.gz
3 安装(此步骤需同时在247,248机器执行)
[root@localhost opt]# yum -y install popt popt-devel libnl libnl-devel popt-static libnfnetlink libnfnetlink-devel openssl openssl-devel
[root@localhost opt]# cd /data/software
[root@localhost software]# tar -zxvf keepalived-1.2.21.tar.gz
[root@localhost software]# cd keepalived-1.2.21
#安装地址不要乱改
[root@MGM1 keepalived-1.2.21]# ./configure --sysconf=/etc --prefix=/usr/local/keepalived
[root@MGM1 keepalived-1.2.21]# make && make install
4 开启路由转发(此步骤需同时在247,248机器执行)
[root@localhost keepalived-1.2.21]# cat /proc/sys/net/ipv4/ip_forward
1
[root@localhost keepalived-1.2.21]# echo 1 > /proc/sys/net/ipv4/ip_forward
[root@CentOS-LVS_MASTER ~]# vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
5 设置虚拟IP(此步骤需同时在244,245机器执行)
首先查看一下现有网卡的IP地址,用root特权运行下面的命令
[root@localhost ~]# ip addr
从上面的详细信息中,可以看到服务器的网卡名是eno16777736,ip地址是10.1.1.245。
网卡的配置文件存储在 /etc/sysconfig/network-scripts/ 目录下。每个网卡的详细内容将会以不同的名字存储,比如ifcfg-eno16777736。
打开此配置文件,并且再添加一个IP地址
编辑文件 vi /etc/sysconfig/network-scripts/ifcfg-eno16777736
像下面那样加入额外的IP地址。
IPADDR2=10.1.1.240
NETMASK2=255.255.255.0
重启网络服务来使更改生效。
[root@localhost ~]#systemctl restart network
6 配置keepalived
[root@localhost ~]# vim /etc/keepalived/keepalived.conf #LVS的端口须与realserver端口一致
分别配置master和slave
6.1 master
global_defs {
notification_email {
admin@centos.bz
}
notification_email_from keepalived@domain.com
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_script chk_http_port {
script "/data/program/keepalived/keepalived/check_haproxy.sh"
interval 2
weight 2
}
vrrp_instance VI_1 {
state MASTER ############ 辅机为 BACKUP
interface eno16777736
virtual_router_id 51
mcast_src_ip 10.1.1.1.247
priority 150 ########### 权值要比 back 高
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
track_script {
chk_http_port ### 执行监控的服务
}
virtual_ipaddress {
10.1.1.240
}
}
vrrp_instance VI_2 {
state BACKUP
interface eno16777736
virtual_router_id 52
priority 99
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
10.1.1.240
}
}
6.2 slave配置
global_defs {
notification_email {
admin@centos.bz
}
notification_email_from keepalived@domain.com
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_script chk_http_port {
script "/data/program/keepalived/keepalived/check_haproxy.sh"
interval 2
weight 2
}
vrrp_instance VI_1 {
state BACKUP ############ 主机为 MASTER
interface eno16777736
virtual_router_id 51
mcast_src_ip 10.1.1.248
priority 99 ########### 权值要比 master 低
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
track_script {
chk_http_port ### 执行监控的服务
}
virtual_ipaddress {
10.1.1.240
}
}
vrrp_instance VI_2 {
state MASTER
interface eno16777736
virtual_router_id 52
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
10.1.1.240
}
}
7 haproxy的安装
[root@MGM1 keepalived-1.2.21]# cd /data/software
[root@MGM1 software]# tar -zxvf haproxy-1.6.6.tar.gz
[root@NDB1 software]# cd haproxy-1.6.6
#查看版本看,此处为3.10
[root@MGM1 haproxy-1.6.6]# uname -a
Linux MGM1 3.10.0-327.el7.x86_64 #1 SMP Thu Nov 19 22:10:57 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
#编译,标红处于上面的3.1版本需匹配
[root@MGM1 haproxy-1.6.6]# make TARGET=linux31 PREFIX=/data/program/haproxy
#安装
[root@MGM1 haproxy-1.6.6]# make install PREFIX=/data/program/haproxy
install -d "/data/program/haproxy/sbin"
install haproxy "/data/program/haproxy/sbin"
install -d "/data/program/haproxy/share/man"/man1
install -m 644 doc/haproxy.1 "/data/program/haproxy/share/man"/man1
install -d "/data/program/haproxy/doc/haproxy"
for x in configuration management architecture cookie-options lua proxy-protocol linux-syn-cookies network-namespaces close-options intro; do \
install -m 644 doc/$x.txt "/data/program/haproxy/doc/haproxy" ; \
8 创建配置文件和启动文件
[root@MGM1 sbin]# cd /data/software/haproxy-1.6.6/
[root@MGM1 haproxy-1.6.6]# cp examples/haproxy.init /etc/init.d/haproxy
[root@MGM1 haproxy-1.6.6]# chmod +x /etc/init.d/haproxy
[root@MGM1 haproxy-1.6.6]# ln -s /usr/local/sbin/haproxy /usr/sbin/
9 配置HAProxy
[root@MGM1 haproxy-1.6.6]# cd /data/program/haproxy
[root@MGM1 haproxy]# mkdir conf logs
[root@MGM1 conf]# cd conf
[root@MGM1 conf]# vi haproxy.cfg
#将以下内容拷贝到该文件中去
global
log 127.0.0.1 local0
log 127.0.0.1 local1 notice
#log loghost local0 info
maxconn 4096
chroot /data/program/haproxy/
uid 0
gid 0
daemon
#debug
#quiet
defaults
log global
mode http
option httplog
option dontlognull
option redispatch
option abortonclose
retries 3
maxconn 2000
contimeout 5000
clitimeout 50000
srvtimeout 50000
timeout check 5s
stats refresh 30s
stats uri /stats
stats realm baison-test-Haproxy
stats auth admin:admin123
stats hide-version
frontend www
bind *:80
acl web hdr(host) -i 10.1.1.240
use_backend webserver if web
backend webserver
mode http
balance roundrobin
option httpchk /index.html
server web01 10.1.1.242:8081 check inter 2000 fall 3 weight 30
server web01 10.1.1.243:8081 check inter 2000 fall 3 weight 20
10 配置关联HAProxy启动脚本
[root@MGM1 keepalived-1.2.21]# vi /data/program/keepalived/keepalived/check_haproxy.sh
#将以下内容拷贝到文件 中
#!/bin/bash
if [ $(ps -C haproxy --no-header | wc -l) -eq 0 ]; then
/data/program/haproxy/sbin/haproxy -f /data/program/haproxy/conf/haproxy.cfg
fi
sleep 2
if [ $(ps -C haproxy --no-header | wc -l) -eq 0 ]; then
/etc/init.d/keepalived stop
fi
11 启动HAProxy
#启动
[root@MGM1 haproxy-1.6.6]# /data/program/haproxy/sbin/haproxy -f /data/program/haproxy/conf/haproxy.cfg
#重启
[root@MGM1 haproxy-1.6.6]#/data/program/haproxy/sbin/haproxy -f /data/program/haproxy/conf/haproxy.cfg -st
#访问http://10.1.1.247/stats,用户名和密码为上述配置文件所设,为admin/admin123
12 将keepalived做成启动服务,方便管理(此步骤需同时在247,248机器执行)
[root@localhost ~]# cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
[root@localhost keepalived-1.2.21]# /etc/init.d/keepalived start //启动LVS服务
[root@localhost keepalived-1.2.21]# /etc/init.d/keepalived stop //停止LVS服务
13 启动两台realserver
http://10.1.1.242:8081/
http://10.1.1.243:8081/
通过VIP访问,http:10.1.1.240
通过不断刷新,可以明显看到在242/243之间切换
同时我们也可以看到HAProxy 关于这两台realserver的状态,目前都是正常启动的