haproxy2.8(LTS版本)+keepalived高可用

news/2024/9/17 17:32:17/文章来源:https://www.cnblogs.com/macoffee/p/18413960

 

Tar包安装,编译支持SSL证书
Tar包目录: /opt/
安装目录: /usr/local/haproxy
配置文件目录: /etc/haproxy/haproxy.cfgF
启停方式: systemctl start|stop|restart|status haproxy

 

一、Keepalived 安装在两台服务器上做主备

keepalived.conf(master)

 
global_defs {router_id ha1vrrp_skip_check_adv_addr#单播必须禁用vrrp_strict(注释掉或者vrrp_strict NO),单播指的是点对点,不经过广播# vrrp_strictvrrp_garp_interval 0vrrp_gna_interval 0script_user rootenable_script_security 
}vrrp_script chk_ha {#script "/usr/bin/killall -0 haproxy && exit 0 || exit 1"script "/usr/bin/pgrep -x haproxy && exit 0 || exit 1"interval 3weight -10fall 3rise 3
}vrrp_instance VI_1 {state MASTERinterface ens192virtual_router_id 18priority 100advert_int 1# 不抢占模式#nopreempt#---单播配置start----#unicast_src_ip 10.100.11.7unicast_peer {10.100.11.8}#---单播配置end----#authentication {auth_type PASSauth_pass SaW9oP1h}virtual_ipaddress {10.100.11.200 brd 10.100.11.255  dev ens192 label ens192:1}track_script {chk_ha}
}

 

keepalived.conf(slave)

global_defs {router_id ha2vrrp_skip_check_adv_addr#vrrp_strictvrrp_garp_interval 0vrrp_gna_interval 0script_user rootenable_script_security 
}vrrp_script chk_ha {#script "/usr/bin/killall -0 haproxy && exit 0 || exit 1"script "/usr/bin/pgrep -x haproxy && exit 0 || exit 1"interval 3weight -10fall 3rise 3
}vrrp_instance VI_1 {state BACKUPinterface ens192virtual_router_id 18priority 99advert_int 1#nopreemptunicast_src_ip 10.100.11.8unicast_peer {10.100.11.7}authentication {auth_type PASSauth_pass SaW9oP1h}virtual_ipaddress {10.100.11.200 brd 10.100.11.255  dev ens192 label ens192:1}track_script {chk_ha}
}

  

二、haproxy编译、安装

 
tar xf haproxy-2.8.10.tar.gz
cd haproxy-2.8.10
#openssl支持(安装依赖需要root身份)
yum install gcc gcc-c++ openssl openssl-devel systemd-devel pcre-devel zlib-devel  -y
#开启支持SSL(centos6, TARGET=linux2628, centos7,TARGET=linux31)
make TARGET=linux310 PREFIX=/usr/local/haproxy USE_OPENSSL=1 
USE_SYSTEMD=1 USE_PCRE=1 USE_ZLIB=1 USE_CRYPT_H=1 
USE_LIBCRYPT=1 USE_CPU_AFFINITY=1 USE_THREAD=1
#对于升级过的openssl,指定下两个目录,改成自己的目录(SSL_INC=/usr/local/ssl/include  SSL_LIB=/usr/local/ssl/lib) 
 #编译安装:# 安装位置一定要带上,其他编译属性可以不带
 
make install PREFIX=/usr/local/haproxy

#完成安装,验证编译属性

/usr/local/haproxy/sbin/haproxy  -vv

#软链:ln -s target symbol, 注意这个位置最好选择在(/usr/local/bin目录下)

ln -s /usr/local/haproxy/sbin/haproxy  /usr/local/bin/haproxy

#服务管理脚本(haproxy.service)

在该/usr/lib/systemd/system目录下,创建haproxy.service服务,主要是复制源解压包目录下的admin/systemd/haproxy.service.in文件到system目录下,修改下相关配置为自己的目录

cp /xxx/admin/systemd/haproxy.service.in  /usr/lib/systemd/system/haproxy.service

#编辑haproxy.service文件

[Unit]
Description=HAProxy Load Balancer
After=network-online.target
Wants=network-online.target[Service]
EnvironmentFile=-/etc/default/haproxy
EnvironmentFile=-/etc/sysconfig/haproxy
Environment="CONFIG=/etc/haproxy/haproxy.cfg" "PIDFILE=/var/run/haproxy.pid" "EXTRAOPTS=-S /etc/haproxy/haproxy-master.sock"
ExecStart=/usr/local/bin/haproxy -Ws -f $CONFIG -p $PIDFILE $EXTRAOPTS
ExecReload=/usr/local/bin/haproxy -Ws -f $CONFIG -c -q $EXTRAOPTS
ExecReload=/bin/kill -USR2 $MAINPID
KillMode=mixed
Restart=always
SuccessExitStatus=143
Type=notify[Install]
WantedBy=multi-user.target

#创建配置文件目录

mkdir  /etc/haproxy/

#动态链接库文件
查看执行程序依赖的so动态链接库文件

[root@GZ-P-L-HA-11 ~]# ldd  /usr/local/haproxy/sbin/haproxy | grep ssl
libssl.so.1.1 => /lib64/libssl.so.1.1 (0x00007f6f9425a000)

#显示HAProxy版本

haproxy  -vv | grep -i OpenSSL

#配置文件脚本

touch /etc/haproxy/haproxy.cfg
systemctl daemon-reload
systemctl enable haproxy

三、安装成功后,查看版本及编译特性

haproxy  -vv

四、 管理控制台

 略。。。
五、日志配置(默认不带日志记录)

1、先检测rsyslog是否安装

[root@localhost ~]# rpm -q rsyslog
rsyslog-7.4.7-12.el7.x86_64

2、然后在/etc/rsyslog.d/下创建haproxy.conf(/etc/rsyslog.conf)内容如下:

$ModLOad imudp
$UDPServerRun 514
local3.* /data/soft/haproxy/logs/haproxy.log

说明下:
       imup是模块名,支持UDP协议
      第二行准许514端口接收使用UDP和TCP协议转发过来的日志,rsyslog默认514端口监听UDP,也可以将上面的内容写入/etc/rsyslog文件中

3、然后修改下/etc/sysconfig/rsyslog文件,修改为:
SYSLOGD_OPTIONS='-c 2 -r -m 0'

-r:   接收远程日志消息的功能,其监控514 UDP端口;
-x:   关闭自动解析对方日志服务器的FQDN信息,这能避免DNS不完整所带来的麻烦;
-m:  修改syslog的内部mark消息写入间隔时间(0为关闭),例如240为每隔240分钟写入一次"--MARK--"信息;
-h:   默认情况下,syslog不会发送从远端接受过来的消息到其他主机,而使用该选项,则把该开关打开,所有接受到的信息都可根据syslog.conf中定义的@主机转发过去.

4、 重启即可

systemctl restart rsyslog

六、如果make编译安装的,需要重新安装步骤:
(1) 卸载已有的haproxy,清理所有的二进制文件

rm -f /usr/local/haproxy/
rm -f /usr/local/bin/haproxy

确保删除所有与haproxy相关的二进制文件和手册页

(2)清理编译目录

进入 HAProxy 的源代码目录,执行 make clean 来清除之前的编译产物:

cd /opt/haproxy/
Make clean

(3)重新编译haproxy

Make 略.....
Make install 略...
七、haproxy.cfg配置差异:

Haproxy2.8版本与1.x版本差异(本人对比之前的安装的几个异点,不代表全部):

1.nbproc (这个要去掉)-去掉了多进程支持,采用单进程,多线程模式;
2.编译时,USE_THREAD,配置提高性能,采用多线程 nbthread 32(可根据自己的内核数,自己调节数量)
3.Tls 改变,2.8版本默认支持tls1.2 :
(1)ssl-default-bind-ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA256:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA
(2)ssl-default-bind-options no-sslv3
4.Haproxy2.8版本对于tls更严格,如果只是配置了ssl 443,没有配置证书,将无法访问,证书过期仍然可以访问,只是提示不安全!
5.# stats admin if TRUE #监控页,这个一定要注释掉,不要呈现编辑状态(建议)

八、常用命令

systemctl reload haproxy.service
#查看版本及安装特性 haproxy
-vv
#检查配置文件是否有误 haproxy
-c -f haproxy.cfg #可以查看多线程的所有子线程 pstree -p manpid

注意:
haproxy2.x已经去除了多进程模式,采用单进程多线程模式:默认是8线程
haproxy2.5以后就不支持nbproc这个配置选项了。请注意。

 

给出TLS配置参考:

Tls配置参考:(我们可以选择old,支持的tls兼容性更多点)

https://ssl-config.mozilla.org/#server=haproxy&version=2.8&config=old&openssl=1.0.2k&guideline=5.7

 

 

 
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/797030.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PbootCMS常用站点信息标签调用

{pboot:siteindex}用于获取站点的入口地址,通常用于内部链接跳转时作为URL的前缀部分,帮助实现自适应的URL模式。{pboot:sitepath}返回站点的根路径,当网站部署在服务器的根目录下时该值为空;如果部署在二级目录,则返回相应的路径,确保链接的正确性。{pboot:sitelanguage…

低配置PC环境下的魔兽世界游戏体验:ToDesk云电脑性能测试分析

近期魔兽世界再度开服,吸引了众多游戏老玩家回归。然而随着游戏内容的不断更新,其对电脑配置的要求也在逐渐升提高。对于许多电脑配置较低的老玩家,如何在不升级硬件的情况下流畅运行魔兽世界成为了一个难题。随着云计算技术的发展,ToDesk云电脑的出现解决了游戏玩家的电脑…

PbootCMS幻灯片轮播图怎么调用

在 PBootCMS 中,使用幻灯片轮播图标签可以方便地在全站任意位置调用指定分组的幻灯片图片。以下是如何使用该标签的具体步骤和示例代码。 1. 幻灯片轮播图列表 基本用法html{pboot:slide gid=* num=*}<img src="[slide:src]"> {/pboot:slide}2. 控制参数gid=*…

OM6626低功耗国产蓝牙芯片对比进口NORDIC系列NRF52810/NRF52832

OM6626 是一款超低功耗的蓝牙soc主要特性:支持BLE5.3 支持SIG Mesh 支持2.4G长包 主频64Mhz,80KB RAM 主要应用在esl电子价签,IoT模组、CGM、高报告率HID设备 PUM特点 1.71~3.6v供电电压 1秒间隔广播平均电流:9uA;1秒间隔连接平均电流:7uA 峰值电流:TX@0dB:4mA,RX@1Mb…

windows编译ecal

下载:git clone https://github.com/eclipse-ecal/ecal.git cd ecal git checkout v5.12.0 git submodule init # 这一步耗时会有点长,有些可能需要多次尝试才成功 # 若一直不成功,可以跳过,等cmake报错时根据报错的提示手动处理,见下文cmake报错的处理 git submodule upd…

VeraCrypt任务计划程序开机自动加载

新建基本任务,属性如图:启动程序代码: 程序或脚本填VeraCrypt程序:"C:\Program Files\VeraCrypt\VeraCrypt.exe" 参数写:/v 加密卷 /l 盘符 /p 挂载密码 /q /silent 示例:/v D:\vera /l E /p 123456 /q /silent新建任务之后可以右键运行看一下是否成功加载。

PbootCMS中使用sql标签统计网站留言总数

在 PBootCMS 中,使用 SQL 标签可以方便地进行数据统计。以下是如何使用 SQL 标签来统计网站留言总数的具体步骤和示例代码。 1. 使用 SQL 标签统计网站留言总数 实现代码{pboot:sql sql="SELECT COUNT(id) AS total FROM ay_message"}<div>当前留言合计:[sql…

PbootCMS设置当前站点模板,模板子目录,黑白名单,敏感词过滤

在 PBootCMS 中,后台操作涉及多个配置项,包括更换模板路径、配置后台模板子目录、配置后台黑名单和白名单以及敏感词过滤。下面是详细的步骤和说明。 1. 更换模板路径 步骤进入站点信息页面:登录 PBootCMS 后台。 导航至 【基础内容】-【站点信息】-【站点模板】。选择模板路…

1 大数据

大数据是一种规模大到在获取、存储、管理、分析方面大大超出了传统数据库软件工具能力范围的数据集合。它具有海量的数据规模、快速的数据流转、多样的数据类型和价值密度低四大特征。大数据技术的战略意义不在于掌握庞大的数据信息,而在于对这些含有意义的数据进行专业化处理…

Nuxt Kit 自动导入功能:高效管理你的模块和组合式函数

title: Nuxt Kit 自动导入功能:高效管理你的模块和组合式函数 date: 2024/9/14 updated: 2024/9/14 author: cmdragon excerpt: 通过使用 Nuxt Kit 的自动导入功能,您可以更高效地管理和使用公共函数、组合式函数和 Vue API。无论是单个导入、目录导入还是从第三方模块导入…

使用@Validated校验List集合中数据失效

我们可以写一个集合实现list,代码如下,在controller类上面不用加@Validated注解,在controller使用自定义ValidableList集合,对list进行封装,就可以对scheduleDtoList做参数校验处理。@Api(tags = "xxxx 管理") @RestController @RequestMapping("aaa…

YOLOV5 onnx推理 python

pip install onnx coremltools onnx-simplifier3.使用onnx-simplier简化模型 python -m onnxsim best.onnx best-sim.onnx # coding=utf-8 import cv2 import numpy as np import onnxruntime import torch import torchvision import time import random from utils.general i…