高可用代理服务器实现keepalive+squid

〇、前言

之前单机部署了squid代理服务器,现在实现一下高可用。

还有自定义squid的error页面

准备:两台centos7(1C2GB)

​ 三个可用IP,一主一备一虚拟IP(VIP)

一、安装squid(两台)

yum install squid -y # 具体配置略

二、安装keepalived(两台)

1.安装

yum install -y keepalived yum install -y net-tools

2.配置

# 先清空原先配置 echo "" > /etc/keepalived/keepalived.conf # 开始编辑 vim /etc/keepalived/keepalived.conf # 这边注意网卡名称(interface ens160)和自身IP还有VIP ! Configuration File for keepalived global_defs { router_id 本机IP } vrrp_script chk_squid { script "/etc/keepalived/check_port.sh 3128" interval 2 weight -20 } vrrp_instance VI_1 { state BACKUP interface ens160 virtual_router_id 251 mcast_src_ip 本机IP priority 90 advert_int 1 authentication { auth_type PASS auth_pass 11111111 } track_script { chk_squid } virtual_ipaddress { 虚拟IP } }

3.编写端口检测脚本(两台)

vim /etc/keepalived/check_port.sh #!/bin/bash if [ $# -eq 1 ] && [[ $1 =~ ^[0-9]+ ]];then [ $(netstat -lntp|grep ":$1 " |wc -l) -eq 0 ] && echo "[ERROR] squid may be not running!" && exit 1 || exit 0 else echo "[ERROR] need one port!" exit 1 fi # 赋予执行权限 chmod +x /etc/keepalived/check_port.sh

4.启动服务

systemctl enable keepalived && systemctl start keepalived

三、自定义squid的error页面

# 页面文件位置如下/usr/share/squid/errors/zh-cn+/ERR_ACCESS_DENIED [root@squid-slave zh-cn]# cat ERR_ACCESS_DENIED <html><head> <meta type="copyright" content="Copyright (C) 1996-2016 The Squid Software Foundation and contributors"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>错误: 不能获取请求的 URL</title> <style type="text/css"><!-- %l body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; } --></style> </head><body id="%c"> <div id="titles"> <h1>错误</h1> <h2>您所请求的网址(URL)未授权</h2> </div> <hr> <div id="content"> <p>当尝试请求返回 URL内容时遇到下面的错误:<a href="%U">%U</a></p> <blockquote id="error"> <p><b>访问被拒绝。</b></p> </blockquote> <p>Access control configuration prevents your request from being allowed at this time. Please contact your service provider if you feel this is incorrect.</p> <p>请联系马春旺。工号:***** 邮箱:****** </p> <br> </div> <hr> <div id="footer"> <p>Powered by 五星电器基础架构部</p> <!-- %c --> </div> </body></html> [root@squid-slave zh-cn]# systemctl restart squid

重启后即可看到如下:

image-20210125134350921


__EOF__

本文作者带着泥土
本文链接https://www.cnblogs.com/obitoma/p/14324814.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   带着泥土  阅读(750)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗
点击右上角即可分享
微信分享提示

喜欢请打赏

扫描二维码打赏

了解更多