Haproxy+Keepalived

1.  环境规划:

主机名主机地址角色
node1

192.168.188.11

192.168.188.100(VIP)

MASTER
node2192.168.188.12BACKUP
node3192.168.188.13RS1
node4192.168.188.14RS2
node5192.168.188.15RS3

2.  配置MASTER,BACKUP的Haproxy:

[root@node1 ~]# yum install haproxy -y

[root@node1 ~]# vim /etc/haproxy/haproxy.cfg

global
  log         127.0.0.1 local2
  chroot      /var/lib/haproxy
  pidfile     /var/run/haproxy.pid
  maxconn     4000
  user        haproxy
  group       haproxy
  daemon

  stats socket /var/lib/haproxy/stats
  ssl-default-bind-ciphers PROFILE=SYSTEM
  ssl-default-server-ciphers PROFILE=SYSTEM

defaults
    mode                    http
    log                     global
    option                  httplog
    option                  dontlognull
    option http-server-close
    option forwardfor       except 127.0.0.0/8
    option                  redispatch
    retries                 3
    timeout http-request    10s
    timeout queue           1m
    timeout connect         10s
    timeout client          1m
    timeout server          1m
    timeout http-keep-alive 10s
    timeout check           10s
    maxconn                 3000

frontend main  ##前端配置
    bind *:80
    mode http
 
##配置ACL规则
    acl acl_www    hdr_dom(host) -i www.yunjisuan.cn
    acl acl_static hdr_dom(host) -i static.yunjisuan.cn
    acl acl_update hdr_dom(host) -i update.yunjisuan.cn
 
##引用ACL规则
    use_backend server_www             if acl_www
    use_backend server_static          if acl_static
    use_backend server_update          if acl_update
    default_backend  server_static

##配置后端主机
backend server_www
    balance     roundrobin
    server      web1 192.168.188.13:8080 check
 
backend server_static
    balance     roundrobin
    server      web2 192.168.188.14:80 check
 
backend server_update
    balance     roundrobin
    server      web3 192.168.188.15:80 check

listen stats  ##配置Haproxy状态页
    mode http
    bind 0.0.0.0:9999
    stats hide-version
    stats enable
    stats uri /haproxy-status
    stats auth admin:123456
    stats refresh 30s

3.  开启MASTER,BACKUP的Haproxy日志:

[root@node1 ~]# vim /etc/rsyslog.conf 

$ModLoad imudp
$UDPServerRun 514

$ModLoad imtcp
$InputTCPServerRun 514

local2.*                                                /var/log/haproxy.log

[root@node1 ~]# systemctl restart rsyslog.service

4.  配置访问后端服务器的页面:

node3节点配置:
[root@node3 ~]# yum install tomcat tomcat-webapps -y

[root@node3 ~]# rm -rf /var/lib/tomcat/webapps/ROOT/*

[root@node3 ~]# vim /var/lib/tomcat/webapps/ROOT/index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!doctype html>
<html>
 <head>
 <title>第一个 JSP 程序</title>
 </head>
 <body>
 <%
 out.println("Hello World!");
 %>
 <% java.text.SimpleDateFormat formater = new java.text.SimpleDateFormat
("yyyy年MM月dd日");
    String strCurrentTime=formater.format(new java.util.Date());
 %>
 <%= strCurrentTime %>
</body>
</html>

[root@node3 ~]# systemctl start tomcat

node4节点配置:
[root@node4 ~]# echo "static page my ip is `hostname -I`" > /var/www/html/index.html 

[root@node4 ~]# systemctl start httpd.service 

node5节点配置:
[root@node5 ~]# echo "static page my ip is `hostname -I`" > /var/www/html/index.html 

[root@node5 ~]# systemctl start httpd.service

4.  配置主备Keepalived:

        1>.  配置MASTER节点的keepalived:

[root@node1 ~]# vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived
 
global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL_MASTER
}
 
vrrp_script check_haproxy {
  ##检测方式一:
    script "killall -0 haproxy"
  ##检测方式二:
    #script "</dev/tcp/127.0.0.1/80"  ##使用端口检测的方式,haproxy运行时的端口就是80
    interval 2
}

vrrp_instance VI_1 {
    state MASTER
    interface ens33
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
 
    track_script {
      check_haproxy
    }
 
    virtual_ipaddress {
        192.168.188.100
    }
}

          2>.  配置BACKUP节点的keepalived:

[root@node2 ~]# vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived
 
global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL_MASTER
}
 
vrrp_script check_haproxy {
  ##检测方式一:
    script "killall -0 haproxy"
  ##检测方式二:
    #script "</dev/tcp/127.0.0.1/80"  ##使用端口检测的方式,haproxy运行时的端口就是80
    interval 2
}

vrrp_instance VI_1 {
    state BACKUP
    interface ens33
    virtual_router_id 51
    priority 80
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
 
    track_script {
      check_haproxy
    }
 
    virtual_ipaddress {
        192.168.188.100
    }
}

5.  配置Windows的域名解析:修改" C:\Windows\System32\drivers\etc\hosts "文件。

在文件末尾添加:
192.168.188.100 www.yunjisuan.cn static.yunjisuan.cn update.yunjisuan.cn

6.  重启MASTER,BACKUP的Haproxy,Keepalived:

[root@node1 ~]# systemctl restart haproxy.service

[root@node1 ~]# systemctl restart keepalived.service

7.  测试Haproxy+Keepalived集群是否搭建成功:

        1>.  查看VIP是否在MASTER上,并且BACKUP上没有:

         2>.  停止MASTER上的keepalived,模拟高可用故障,观察VIP是否飘移:

         3>.  恢复MASTER的keepalived,并且通过浏览器访问域名,观察负载均衡是否正常:

         4>.  关闭MASTER上的Haproxy服务,观察VIP是否飘移,负载均衡是否正常:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值