自己的服务器到期,转移自己博客内容至此。
haproxy官网:www.haproxy.org
keepalived官网:www.keepalived.org
本站下载:haproxy-1.8.3.tar.gz
本站下载:keepalived-1.4.0.tar.gz
本站下载:keepalived启动服务文件
环境:
web01: 10.8.8.51 centos7
web02: 10.8.8.52 centos7
haproxy_master:10.8.8.53 centos7 vip:10.8.8.55
haproxy_backup:10.8.8.54 centos7 vip:10.8.8.55
访问测试端:windows 10
iptables防火墙允许两台keepalived机子互访:
在haproxy_master上添加: -A INPUT -s 10.8.8.54 -j ACCEPT
在haproxy_backup上添加:-A INPUT -s 10.8.8.55 -j ACCEPT
一、安装haproxy
1 $ cd /home/eleven/tools/ #进入任意存放安装包目录
2 $ wget http://www.haproxy.org/download/1.8/src/haproxy-1.8.3.tar.gz
3 #下载haproxy1.8.3版本,被墙时,用浏览器下载,然后上传至服务器
4 $ tar xf haproxy-1.8.3.tar.gz #解压
5 $ cd haproxy-1.8.3 #进入目录
6 $ uname -r #查看内核
7 3.10.0-514.el7.x86_64
8 $ make TARGET=linux2628 ARCH=x86_64 PREFIX=/usr/local/haproxy
9 #编译haproxy,不同的Linux内核,编译参数不同
10 $ make install PREFIX=/usr/local/haproxy #安装haproxy到指定目录
二、配置并启动haproxy
1 $ vi /usr/local/haproxy/haproxy.cfg #新建配置文件,添加以下内容
2 global
3 log 127.0.0.1 local1
4 maxconn 65000 #最大连接数
5 # chroot /usr/local/haproxy #安装目录
6 # uid haproxy #用户haproxy
7 # gid haproxy #组haproxy
8 daemon #守护进程运行
9 nbproc 1 #进程数量
10 # pidfile /usr/local/haproxy/logs/haproxy.pid #haproxy pid
11
12 defaults
13 log global
14 mode http #7层#默认的模式mode {tcp|http|health},tcp是4层,http是7层,health只会返回OK
15 option httplog #http 日志格式
16 option httpclose #主动关闭http通道,HA-Proxy不支持keep-alive模式
17 option redispatch #serverId对应的服务器挂掉后,强制定向到其他健康的服务器
18 option forwardfor except 127.0.0.1/8
19 #后端服务器需要获得客户端的真实IP,将从Http Header中获得客户端IP
20 option dontlognull #来防止记录 Alteo(4层负载均衡)发出的健康检测,如果一个 session 交互没有数据,这个 session就不会被记录
21 retries 3
22 maxconn 50000 #最大连接数
23 timeout http-request 10s
24 timeout queue 1m
25 timeout connect 10s
26 timeout client 1m
27 timeout server 1m
28 timeout http-keep-alive 10s
29 timeout check 10s
30
31 #errorfile 502 /usr/local/haproxy/html/maintain.html
32 #errorfile 503 /usr/local/haproxy/html/maintain.html
33 #errorfile 504 /usr/local/haproxy/html/maintain.html
34
35 frontend main
36 bind *:80 #监听地址
37 acl url_static path_beg -i /static /images /javascript /stylesheets
38 acl url_static path_end -i .jpg .gif .png .css .js
39 use_backend static if url_static
40 default_backend my_webserver
41 #定义一个名为my_app前端部分。此处将对于的请求转发给后端
42 backend static
43 #使用了静态动态分离(如果url_path匹配 .jpg .gif .png .css .js静态文件则访问此后端)
44 balance roundrobin #负载均衡算法(#banlance roundrobin 轮询)
45 server static 127.0.0.1:80 check
46 #静态文件部署在本机(也可以部署在其他机器或者squid缓存服务器
47 acl host_www hdr_reg(host) -i ^(www.haproxy.test|haproxy.test) #测试用的域名
48
49 backend my_webserver
50 mode http
51 option forwardfor
52 balance roundrobin
53 cookie SERVERID
54 option httpchk HEAD /index.html
55 server web01 10.8.8.51:80 cookie web01 check inter 2000 rise 3 fall 3 weight 3
56 server web02 10.8.8.52:80 cookie web02 check inter 2000 rise 3 fall 3 weight 3
57 stats enable
58 #启用统计页;基于默认的参数启用页面信息,通过访问此页面能显示华丽的web状态界面
59 stats uri /stats #默认uri页面信息,不安全,可以自己定义页面的uri
以上为haproxy配置文件内容,可删除#注释行。
1 $ /usr/local/tengine/sbin/nginx -s stop
2 $ chkconfig nginx off
3 #关闭本机的nginx服务,因为haproxy配置文件用的是80端口,防止端口冲突
4 $ /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.cfg
5 #指定配置文件启动
6 [root@haproxy_master ~]# lsof -i:80 #查看80端口
7 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
8 haproxy 3962 root 4u IPv4 32829 0t0 TCP *:http (LISTEN)
9 haproxy 3962 root 8u IPv4 32871 0t0 TCP haproxy_master:35201->10.8.8.51:http (SYN_SENT)
win 10浏览器打开监控页面测试是否安装成功:
以同样的方法在haproxy_backup,ip为10.8.8.54上安装haproxy。
三、在web01、web02上搭建简单测试页面
在web01、web02上搭建简单的测试页面,测试haproxy负载均衡。
web01、web02分别弄个测试页面,域名为haproxy.test。
hosts文件分别指向haproxy_master、haproxy_backup的ip,添加hosts如下:
10.8.8.53 www.haprox.test haproxy.test
#10.8.8.54 www.haproxy.test haproxy.test
通过访问负载均衡haproxy_master,自动跳转至web01、web02:
刷新一下便会自动跳转至web02,haproxy.cfg配置文件使用的是轮询算法:
此时再打开http://10.8.8.53/stats监控页面,web01、web02的status状态为up在线。
至此,haproxy_master测试正常,修改hosts测试haproxy_backup正常,haproxy安装完成。
四、安装keepalived
haproxy安装完成后,实现了负载均衡。keepalieved将haproxy实现高可用性,当主服
务器haproxy_master出现故障或宕机时,另一台备用服务器haproxy_backup将自动接管。
1、安装keepalived
1 $ yum install openssl-devel psmisc libnl* libnfnetlink-devel -y #安装依赖
2 $ cd /home/eleven/tools/
3 $ wget http://www.keepalived.org/software/keepalived-1.4.0.tar.gz
4 $ cd keepalived-1.4.0
5 $ ./configure –prefix=/usr/local/keepalived #编译安装,注意两个横线–prefix
6 $ make
7 $ make install
2、配置keepalived为系统服务
$ cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
$ cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
$ touch /etc/init.d/keepalived
$ chmod +x /etc/init.d/keepalived
$ vi /etc/init.d/keepalived #编辑keepalived启动文件,内容如下:
由于本站编码字体格式不同,复制导致文件不可用,本站下载:keepalived启动服务文件
3、编辑keepalived配置文件
1 $ mkdir /etc/keepalived/
2 $ cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
3 $ vi /etc/keepalived/keepalived.conf #编辑配置文件,更改为以下内容:
4 由于本站编码字体格式不同,复制可能导致文件不可用,keepalived配置文件
keepalived配置文件:
1 global_defs {
2 notification_email {
3 #mr@mruse.cn #配置邮件,邮件服务器等,可以不用配置。zabbix监控。
4 #sysadmin@firewall.loc
5 }
6 notification_email_from xxx@163.com
7 smtp_server smtp@163.com
8 smtp_connect_timeout 30
9 router_id LVS_1
10 }
11
12 vrrp_instance VI_1 {
13 state MASTER #另一台haproxy_bakcup机子改为BACKUP
14 interface eth0
15 virtual_router_id 51
16 priority 100 #另一台haproxy_bakcup机子改为50
17 advert_int 1
18 authentication {
19 auth_type PASS
20 auth_pass MrUse
21 }
22 virtual_ipaddress {
23 10.8.8.55
24 }
25 }
5、启动keepalived
1 $ service keepalived start #启动keepalived
2 $ service keepalived stop #停用keepalived
3 $ service keepalived status #查看keepalived
4 $ service keepalived restart #重启keepalived
5
6 $ ps -ef|grep keepalived |grep -v grep
7 root 8767 1 0 15:51 ? 00:00:00 /usr/local/keepalived/sbin/keepalived -D
8 root 8768 8767 0 15:51 ? 00:00:00 /usr/local/keepalived/sbin/keepalived -D
9 root 8769 8767 0 15:51 ? 00:00:00 /usr/local/keepalived/sbin/keepalived -D
10 #查看keepalived进程,有3个-D说明成功
6、haproxy_backup机子安装keepalived
以同样的方法在haproxy_backup服务器上安装haproxy跟keepalived。
keepalived的backup配置文件相对于master修改如下:
state BACKUP
priority 50
7、查看虚拟ip在哪台机子
1 [root@haproxy_master ~]# ip addr sh eth0 #查看ip,或直接用ip addr命令
2 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
3 link/ether 00:0c:29:ca:46:75 brd ff:ff:ff:ff:ff:ff
4 inet 10.8.8.53/24 brd 10.8.8.255 scope global eth0
5 valid_lft forever preferred_lft forever
6 inet 10.8.8.55/32 scope global eth0
7 valid_lft forever preferred_lft forever
8 inet6 fe80::7874:1014:1870:f00d/64 scope link
9 valid_lft forever preferred_lft forever
五、添加到开机自启动
1 [root@haproxy_backup ~]# vi /etc/rc.local #添加以下两行
2 /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.cfg
3 service keepalived start
4 #注意rc.local是否有执行权限,否则开机不会自启动。
至此,haproxy+keepalived搭建完成,需要注意的是两台机子防火墙添加允许互访。
来源:oschina
链接:https://my.oschina.net/u/4260865/blog/3948644