Web服务器--HAProxy+Keepalived 负载均衡高可用配置

拓扑图:

在这里插入图片描述

准备工作

两台调度器配置:haproxy+keepalived
两台真实节点服务器配置:HTTP或者nginx或者tomcat
安装haproxy和keepalived
安装Keepalived
yum install -y keepalived
yum install -y haproxy
节点服务器安装nginx和写入网页
yum install -y nginx
cd /usr/share/nginx/html
echo A > ./index.html
systemctl start nginx

配置haproxy

主副调度器haproxy配置可以一样

vim /etc/haproxy/haproxy.cfg
global
  user     haproxy
  group    haproxy
  daemon
  nbproc   2
  #cpu-map  1  0
  #cpu-map  2  1
  maxconn  100000
  #chroot   /usr/local/haproxy
  #pidfile  /var/lib/haproxy/haproxy.pid
  log      127.0.0.1 local2 info

defaults
  log      global
  option   httplog
  #option   http-server-close
  option   dontlognull
  maxconn  100000
  mode     http
  retries  3
  timeout  connect 5000
  timeout  client 50000
  timeout  server 50000

listen stats
  bind     0.0.0.0:8888
  log      global
  mode     http
  stats    enable
  stats    hide-version
  stats    realm Haproxy\ Statistics
  stats    uri     /stats
  stats    refresh 5s
  stats    auth    admin:123

listen WEB_PORT_80
   bind 192.168.148.140:80
   mode http
   option httpchk GET /index.html
   balance roundrobin
   server web1 192.168.148.141:80  check inter 2000 fall 3 rise 5
   server web2 192.168.148.142:80  check inter 2000 fall 3 rise 5

从服务器启动HAProxy的时候可能会启动不了
因为监听了漂移ip 但是备服务器上没漂移ip
解决方法:

vi /etc/sysctl.conf
添加
net.ipv4.ip_nonlocal_bind = 1 # 忽略监听ip的检查

使用命令sysctl -p查看是否添加成功

配置keepalived

主从调度器配置keepalived基本相同
vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {
   router_id HAP1           # 从调度机组名字修改为HAP1
}

vrrp_instance VI_1 {
    state MASTER                #改成备份使用BACKUP
    interface ens33
    virtual_router_id 66
    priority 120                     #备份机优先级为100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 123
    }
    virtual_ipaddress {
        192.168.148.140
    }
}

ip addr查看虚拟地址
主调度器获得虚拟地址

副调度器没有虚拟地址

配置keepalived自动切换脚本
编写主调度器的自动检测脚本

#!/bin/bash
a=`ps -C haproxy --no-header|wc -l`
if [ $a -eq 0 ];then
        systemctl start haproxy
        echo "haproxy start..."
        sleep 3
        if [ `ps -C haproxy --no-header|wc -l` -eq 0 ];then
                systemctl stop keepalived
                echo "haproxy is down" 
                sleep 3
        fi
fi

在主调度器的keepalived.conf文件中添加


vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {
   router_id HAP1
}
vrrp_script check_haproxy {		# 自动检测脚本的方案名称
        script '/etc/keepalived/check_haproxy.sh'	# 脚本的绝对路径
        interval 2		# 自动运行的间隔
}
vrrp_instance VI_1 {
    state MASTER
    interface ens33
    virtual_router_id 66
    priority 120
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }   
    virtual_ipaddress {
        192.168.148.140
    }   
    track_script {		# 追踪脚本
        check_haproxy	# 追踪的脚本方案名称
    }   
}   
chmod +x check_haproxy.sh             #加执行权限
systemctl enable keepalived --now          #立刻重启keepalived
systemctl restart keepalived               

编写副调度器的自动检测脚本

#!/bin/bash
a=`ip a | grep 192.168.148.140 | wc -l`
b=`ps -ef | grep haproxy | grep -v grep | awk '{print $2}'`
if [ $a -gt 0 ];then
        systemctl start haproxy
else 
        kill -9 $b
		sleep 3600
fi
! Configuration File for keepalived

global_defs {
   router_id HAP2
}
vrrp_script check_haproxy {
        script '/etc/keepalived/check_haproxy.sh'
        interval 2
}

vrrp_instance VI_1 {
    state BACKUP
    interface ens33
    virtual_router_id 66
    priority 90
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }   
    virtual_ipaddress {
        192.168.188.188
    }   
    track_script {
        check_haproxy
    }   
}   
chmod +x check_haproxy.sh
systemctl enable keepalived --now
systemctl restart keepalived

设置HAProxy的日志
查看haproxy的主配置文件

vim /etc/haproxy/haproxy.cfg

在global下面添加有
log 127.0.0.1 local2 info # 这里的local2可以是{1…7之间}

然后下面defaults里面添加有
log global

vim /etc/rsyslog.conf

添加
local2.* /var/log/haproxy.log

将注释取消
$ModLoad imudp
$UDPServerRun 514

保存之后重启服务

systemctl restart haproxy
systemctl restart rsyslog
systemctl status rsyslog

然后就会出现haproxy的日志文件
ls /var/log/haproxy.log

配置NFS服务器:

Yum下载NFS:
yum install -y nfs-utils rpcbind
配置/etc/exports文件:
vim /etc/exports

1.储存机上使用命令showmount -e查看:

将网站代码放入创建的挂载点下:/var/www/html
Unzip hs.zip
关闭防火墙:
Systemctl stop firewalld

然后切换节点服务器:
将http放网站的位置挂载到NFS服务器上:
mount 192.168.24.135:/var/www/html/ /var/www/html/
将网站代码放入NFS储存服务器的挂载点/var/www/html上
2.在节点机上使用命令df -hT查看:
在这里插入图片描述
测试
测试负载均衡
打开浏览器
这是真实服务器1的状态界面
在这里插入图片描述

这是真实服务器2的状态界面
在这里插入图片描述
4.在调度服务器上查看IP地址
主:
在这里插入图片描述
打开Windows输入vip地址测试:
在这里插入图片描述

关闭主调度器查看从调度器vip:
systemctl stop keepalived(在主调度器上操作,查看VIP切换到从)
副:在这里插入图片描述
打开Windows测试:
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值