首页 > 其他分享 >haproxy2.8(LTS版本)+keepalived高可用

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

时间:2024-09-14 14:46:11浏览次数:13  
标签:LTS haproxy haproxy2.8 keepalived RSA vrrp usr ECDHE local

 

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 ha1
   vrrp_skip_check_adv_addr
   #单播必须禁用vrrp_strict(注释掉或者vrrp_strict NO),单播指的是点对点,不经过广播
   # vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
   script_user root
   enable_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 3
    weight -10
    fall 3
    rise 3
}

vrrp_instance VI_1 {
    state MASTER
    interface ens192
    virtual_router_id 18
    priority 100
    advert_int 1
    # 不抢占模式
    #nopreempt
    #---单播配置start----#
    unicast_src_ip 10.100.11.7
    unicast_peer {
        10.100.11.8
    }
    #---单播配置end----#
    authentication {
        auth_type PASS
        auth_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 ha2
   vrrp_skip_check_adv_addr
   #vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
   script_user root
   enable_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 3
    weight -10
    fall 3
    rise 3
}

vrrp_instance VI_1 {
    state BACKUP
    interface ens192
    virtual_router_id 18
    priority 99
    advert_int 1
    #nopreempt
    unicast_src_ip 10.100.11.8
    unicast_peer {
        10.100.11.7
    }
    authentication {
        auth_type PASS
        auth_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

 

 

   

标签:LTS,haproxy,haproxy2.8,keepalived,RSA,vrrp,usr,ECDHE,local
From: https://www.cnblogs.com/macoffee/p/18413960

相关文章

  • keepalived 安装部署
    一、keepalived安装官网地址:http://www.keepalived.org/download.html1、Keepalived环境准备各节点时间必须同步:ntp,chrony关闭防火墙及SELinux各节点之间可通过主机名互相通信:非必须建议使用/etc/hosts文件实现:非必须各节点之间的root用户可以基于密钥认证的ssh服务完......
  • 在arm64 架构上安装dotnet 8.0.8 LTS
    树莓派4B是arm64的。在arm64上面运行aptlistdotnet是不会出来可用的dotnet的,即使aptupdate多次也一样。 好在dotnet本身是支持arm/arm64架构的,只是安装的时候不能使用apt罢了。那么久使用scripts来进行安装好了。 wget下载到本地之后,先chmod+x,就我自己的体验......
  • 构建 openEuler Embedded 24.03 LTS (Phytium BSP)
    Ubuntu24.04构建openEulerEmbedded24.03LTS(PhytiumBSP)参考链接:Phytium-OpenEuler-Embedded-BSP-Gitee1介绍本文档介绍如何在Ubuntu24.04上构建openEulerEmbedded24.03LTS(PhytiumBSP)。对计算机配置有要求。2脚本将以下内容复制到新文件oe_phy.sh,添加权......
  • 【2024潇湘夜雨】WIN10_LTSC2021_21H2.19044.4894软件选装纯净特别版9.12
    【系统简介】=============================================================1.本次更新母盘来自WIN10_LTSC2021_21H2.19044.4894.2.全程离线精简、无人值守调用优化处理制作。部分优化适配系统可能要重启几次,即使显示适配失败也不要在意,可能部分优化不适用。3.OS版本号为19044.48......
  • [昌哥IT课堂]|如何确定 MySQL 服务器是否为 LTS 版本(译)
     根据支持LTS(长期支持)发布的新发布模型,给定的MySQL服务器将分为以下两类:要么是LTS版本。要么是创新版本。本博客文章将解释如何确定给定的MySQL服务器是否为LTS版本。 定义发布类型MySQL服务器源代码存储库中包含一个名为MYSQL_VERSION的文件,用于定义当前发......
  • saltstack使用介绍
    saltstack使用介绍saltstack是什么早期运维人员会根据自己的生产环境来写特定脚本完成大量重复性工作,这些脚本复杂且难以维护。系统管理员面临的问题主要是1、系统配置管理,2、远程执行命令,因此诞生了很多开源软件,系统维护方面有fabric、puppet、chef、ansible、saltstack等,这些......
  • Unity(2022.3.41LTS) - 音频
    目录一、音频系统概述二、音频资源类型三、音频组件四、音频空间定位五、音频效果处理六.音乐框架设计一、音频系统概述Unity的音频系统允许开发者在游戏中添加各种声音效果,包括背景音乐、音效、环境音等。它提供了丰富的功能来控制音频的播放、音量、循环、空间定......
  • keepalived工作过程
    一、工作过程路由器使用VRRP功能后,会根据优先级确定自己在备份组中的角色。优先级高的路由器成为Master路由器,优先级低的成为Backup路由器。Master拥有对外服务的虚拟IP,提供各种网络功能,并定期发送VRRP报文,通知备份组内的其他设备自己工作正常;Backup路由器只接收Master发......
  • MyBatis 源码解析:DefaultSqlSession 功能解析
    摘要DefaultSqlSession是MyBatis中的核心类,负责执行SQL语句和管理事务。在日常开发中,我们经常会通过SqlSession来执行数据库的增删改查操作。你是否想深入了解DefaultSqlSession的内部实现机制?本文将通过自定义实现一个DefaultSqlSession类,带你全面解析MyBatis......
  • Ubuntu Server 24.04 LTS 安装 Docker 与 Docker Compose
    参考https://www.sysgeek.cn/install-docker-ubuntu/(主要参考)https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/(清华镜像站)https://blog.csdn.net/dragonstrong/article/details/118915771(ubuntu设置代理,需要梯子开启局域网访问,并指定端口号)https://blog.csdn.ne......