本文主要是介绍LVS之高可用群集Haproxy,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
LVS之高可用群集Haproxy
- 一、常见的Web集群调度器
- 二、Haproxy
- 1、应用分析
- 2、调度算法原理
- 三、搭建 Web 群集
- 1、编译安装Nginx服务器
- 2、部署haproxy服务器
- 3、window端访问测试
- 四、日志定义
- 五、Haproxy参数优化
一、常见的Web集群调度器
二、Haproxy
1、应用分析
2、调度算法原理
三、搭建 Web 群集
链接: Haproxy软件包
提取码: 2f83
Haproxy-Server 192.168.221.30 haproxy-1.5.19.tar.gz
Nginx-Server1 192.168.221.100 nginx-1.12.0.tar.gz
Nginx-Server2 192.168.221.110 nginx-1.12.0.tar.gz
客户端 Win10 192.168.221.88
1、编译安装Nginx服务器
Nginx-Server1:192.168.221.100
Nginx-Server2:192.168.221.110
安装Nginx服务可以直接使用脚本安装
#!/bin/bash
#编译安装nginx服务,使用本脚本前请将相应的安装包放入/opt目录下
#安装所需开发包和编译环境、编译器
yum -y install pcre-devel zlib-devel gcc gcc-c++ make
#创建程序用户,便于准确控制访问
useradd -M -s /sbin/nologin nginx#解压安装包
cd /opt
tar zxvf nginx-1.12.0.tar.gz -C /opt/#指定安装路径、指定用户名和组名
cd nginx-1.12.0/
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx#编译及安装
make && make install#软链接便于系统识别nginx操作命令
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/#添加nginx系统服务
echo '[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStart=/usr/local/nginx/sbin/nginx
ExecrReload=/bin/kill -s HUP $MAINPID
ExecrStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target' > /lib/systemd/system/nginx.service#赋权及开启服务、开启开机自启
chmod 754 /lib/systemd/system/nginx.service
systemctl start nginx.service
systemctl enable nginx.servicesh nginx.sh #执行脚本
Nginx-Server1:192.168.221.100
echo "this is 192.168.221.100 web" > /usr/local/nginx/html/test.htmlNginx-Server2:192.168.221.110
echo "this is 192.168.221.110 web" > /usr/local/nginx/html/test.html
2、部署haproxy服务器
Haproxy-Server 192.168.221.30
(1)关闭防火墙,将安装Haproxy所需软件包传到/opt目录下
systemctl stop firewalld
setenforce 0cd /opt
haproxy-1.5.19.tar.gz
(2)编译安装 Haproxyyum install -y pcre-devel bzip2-devel gcc gcc-c++ maketar zxvf haproxy-1.5.19.tar.gz
cd haproxy-1.5.19/
make TARGET=linux2628 ARCH=x86_64
make install
(3)Haproxy服务器配置mkdir /etc/haproxy
cp examples/haproxy.cfg /etc/haproxy/cd /etc/haproxy/
vim haproxy.cfg
global#4~5行–修改,配置日志记录,local0为日志设备,默认存放到系统日志3log /dev/log local0 info log /dev/log local0 notice#log loghost local0 infomaxconn 4096 #最大连接数,需考虑ulimit-n限制#8行–注释,chroot运行路径,为该服务自设置的根目录,一般需将此行注释掉#chroot /usr/share/haproxyuid 99 #用户UIDgid 99 #用户GIDdaemon #守护进程模式defaults log global #定义日志为global配置中的日志定义mode http #模式为httpoption httplog #采用http日志格式记录日志option dontlognull #不记录健康检查日志信息retries 3 #检查节点服务器失败次数,连续达到三次失败,则认为节点不可用redispatch #当服务器负载很高时,自动结束当前队列处理比较久的连接maxconn 2000 #最大连接数contimeout 5000 #连接超时时间clitimeout 50000 #客户端超时时间srvtimeout 50000 #服务器超时时间#删除下面所有listen项–,添加
listen webcluster 0.0.0.0:80 option httpchk GET /test.html #检查服务器的test.html文件balance roundrobin #负载均衡调度算法使用轮询算法roundrobinserver inst1 192.168.221.100:80 check inter 2000 fall 3 #定义在线节点server inst2 192.168.221.110:80 check inter 2000 fall 3#--参数说明----------------
balance roundrobin #负载均衡调度算法
#轮询算法: roundrobin;最小连接数算法: leastconn;来源访问调度算法: source,类似于nginx的ip_hashcheck inter 2000 #表示haproxy服务器和节点之间的一个心跳频率
fall 3 #表示连续三次检测不到心跳频率则认为该节点失效
若节点配置后带有""backup"表示该节点只是个备份节点,只有主节点失效该节点才会上。不携带"backup",表示为主节点,和其它主节点共同提供服务。
(4)添加Haproxy系统服务
(如果你先做Haproxy服务器,这步需要等到Nginx服务器搭建好再去做,不然会启动失败)cp /opt/haproxy-1.5.19/examples/haproxy.init /etc/init.d/haproxy
cd /etc/init.d/
ll
chmod +x haproxy
chkconfig --add /etc/init.d/haproxy
ln -s /usr/local/sbin/haproxy /usr/sbin/haproxy
service haproxy start
3、window端访问测试
改下ip同网段即可
四、日志定义
默认haproxy的日志是输出到系统的syslog中,查看起来不是非常方便,为了更好的管理haproxy的日志,我们在生产环境中一般单独定义出来。需要将haproxy的info及notice日志分别记录到不同的日志文件中。
vim /etc/haproxy/haproxy.cfg
globallog /dev/log local0 infolog /dev/log local0 noticeservice haproxy restart
需要修改rsyslog配置,为了便于管理。将haproxy相关的配置独立定义到haproxy.conf,并放到/etc/rsyslog.d/下,rsyslog启动时会自动加载此目录下的所有配置文件。
vim /etc/rsyslog.d/haproxy.confif ($programname == 'haproxy' and $syslogseverity-text == 'info')
then -/var/log/haproxy/haproxy-info.log
&~
if ($programname == 'haproxy' and $syslogseverity-text == 'notice')
then -/var/log/haproxy/haproxy-notice.log
&~
说明:
这部分配置是将haproxy的info日志记录到/var/log/haproxy/haproxy-info.log下,将notice日志记录到/var/log/haproxy/haproxy-notice.log下。“&~”表示当日志写入到日志文件后,rsyslog停止处理这个信息。systemctl restart rsyslog.servicetail -f /var/log/haproxy/haproxy-info.log #查看haproxy的访问请求日志信息
五、Haproxy参数优化
这篇关于LVS之高可用群集Haproxy的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!