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

 

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

 

 

 
 
posted @ 2024-09-14 14:52  Macoffee  阅读(41)  评论(0编辑  收藏  举报