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
3、然后修改下/etc/sysconfig/rsyslog文件,修改为:说明下:
imup是模块名,支持UDP协议
第二行准许514端口接收使用UDP和TCP协议转发过来的日志,rsyslog默认514端口监听UDP,也可以将上面的内容写入/etc/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