搭建haproxy负载均衡keepalived高可用集群

自己的服务器到期,转移自己博客内容至此。

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 #[email protected]                    #配置邮件,邮件服务器等,可以不用配置。zabbix监控。
 4 #[email protected]
 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搭建完成,需要注意的是两台机子防火墙添加允许互访。

猜你喜欢

转载自www.cnblogs.com/catinsky/p/9138480.html