Haproxy群集——实战篇
程序员文章站
2022-07-06 15:47:29
...
实验要求:
1.一台 Haproxy调度服务器,两台 Nginx 服务器,一台windows7作为客户端;
2.三台服务器为CentOS 7.3的64位系统;
3.所有主机网卡都设置成仅主机模式,绑定静态地址;
4.客户端可以通过访问调度服务器,访问到两台节点服务器,不需要访问真实服务器地址
主机 | 角色 | IP地址 |
---|---|---|
centos7-1 | Haproxy服务器 | 192.168.1.10 |
centos7-2 | Nginx服务器1 | 192.168.1.20 |
centos7-3 | Nginx服务器2 | 192.168.1.30 |
win 7 | windows7客户端 | 192.168.1.40 |
实验步骤:
1、搭建两台Nginx服务器
安装环境包及nginx
[[email protected] mnt]# yum -y install \
gcc \
gcc-c++ \
zlib-devel \
pcre pcre-devel \
expat-devel
[[email protected] mnt]# useradd -M -s /sbin/nologin nginx #建立管理用户
[[email protected] mnt]# tar zxvf nginx-1.12.0.tar.gz -C /opt/
[[email protected] nginx-1.12.0]# ./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx
[[email protected] nginx-1.12.0]# make && make install #编译安装
[[email protected] nginx-1.12.0]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
[[email protected] nginx-1.12.0]# vim /usr/local/nginx/html/test.html #编写首页
<h1>ACCP web!!!!!!!!!!!!!!!!!</h1>
编写启动脚本
[[email protected] nginx-1.12.0]# vim /etc/init.d/nginx #方便service调取
#!/bin/bash
wenjian="/usr/local/nginx/sbin/nginx"
pid="/usr/local/nginx/logs/nginx.pid"
case $1 in
start)
$wenjian ;;
stop)
kill -s QUIT $(cat $pid) ;;
restart)
$0 stop
$0 start
;;
reload)
kill -s HUP $(cat $pid) ;;
*)
echo "Please,try again"
exit 1 ;;
esac
exit 0
[[email protected] nginx-1.12.0]# chmod +x /etc/init.d/nginx
#开服务
[[email protected] nginx-1.12.0]# service nginx start
[[email protected] nginx-1.12.0]# systemctl stop firewalld.service
[[email protected] nginx-1.12.0]# setenforce 0
#改静态
[[email protected] nginx-1.12.0]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
[[email protected] nginx-1.12.0]# systemctl restart nework
2、搭建Haproxy调度服务器
安装环境包及haproxy
#改静态
[[email protected] nginx-1.12.0]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
[[email protected] nginx-1.12.0]# systemctl restart nework
##安装环境包
[[email protected] mnt]# yum -y install gcc gcc-c++ bzip2-devel pcre pcre-devel
#安装haproxy
[[email protected] ~]# mount.cifs //192.168.10.71/rpm /mnt/
[[email protected] mnt]# tar zxvf haproxy-1.5.19.tar.gz -C /opt/
[[email protected] mnt]# cd /opt/haproxy-1.5.19/
#源码编译、安装
[[email protected] haproxy-1.5.19]# make TARGET=linux26 ##编版本为Linux内核版本(使用uname -a查看)
[[email protected] haproxy-1.5.19]# make install
修改配置文件
[email protected] haproxy-1.5.19]# mkdir /etc/haproxy #创建配置文件站点
[[email protected] haproxy-1.5.19]# cp examples/haproxy.cfg /etc/haproxy/ #复制模板
[[email protected] haproxy-1.5.19]# vim /etc/haproxy/haproxy.cfg #修改配置文件
chroot /usr/share/haproxy #(默认家目录)删除该行,文件实际并不存在
redispatch #将请求发给故障节点(没啥用关掉)
-------------------------listen段全部删除-------------------------------------------------------
##添加
listen webcluster 0.0.0.0:80
option httpchk GET /test.html # 开启对后端服务器的健康检测(这里是提交test测试页面)
#POST 使用加密方式提交参数;GET 使用明文方式直接提交参数,参数显示在url上
balance roundrobin #负载均衡采用轮询算法
server inst1 192.168.1.20:80 check inter 2000 fall 3 #定义在线节点1
server inst2 192.168.1.30:80 check inter 2000 fall 3 #定义在线节点2
定义启动脚本
#定义启动脚本
[[email protected] haproxy-1.5.19]# cp /opt/haproxy-1.5.19/examples/haproxy.init /etc/init.d/haproxy
[[email protected] haproxy-1.5.19]# chmod +x /etc/init.d/haproxy
[[email protected] haproxy-1.5.19]# chkconfig --add /etc/init.d/haproxy ##添加进启动列表
[[email protected] haproxy-1.5.19]# ln -s /usr/local/sbin/haproxy /usr/sbin/
#启服务
[[email protected] haproxy-1.5.19]# service haproxy start
[[email protected] haproxy-1.5.19]# systemctl stop firewalld.service
[[email protected] haproxy-1.5.19]# setenforce 0
实验结果
使用客户端访问Haproxy服务器,调度服务器将对后端web服务器进行调度访问
此时,Haproxy服务器会将访问日志写进系统日志中,这对维护人员非常不友好。因此,我们需要单独对haproxy的日志进行分割。
配置haproxy配置文件
位置:/etc/rsyslog.d/haproxy.conf
#重启haproxy 服务
[[email protected] etc]# service haproxy restart
Restarting haproxy (via systemctl): [ 确定 ]
#创建
[[email protected] haproxy-1.5.19]# touch /etc/rsyslog.d/haproxy.conf
[[email protected] haproxy-1.5.19]# vim /etc/rsyslog.d/haproxy.conf
#定义haproxy信息日志
if ($programname == 'haproxy' and $syslogseverity-text == 'info')
then -/var/log/haproxy/haproxy-info.log
&~
#定义haproxy通知日志
if ($programname == 'haproxy' and $syslogseverity-text == 'notice')
then -/var/log/haproxy/haproxy-notice.log
&~
#重启日志服务
[[email protected] etc]# systemctl restart rsyslog.service
#切换到日志目录下查看haproxy日志文件
[[email protected] etc]# cd /var/log/haproxy/
[[email protected] haproxy]# ls
haproxy-info.log
#查看日志文件
[[email protected] haproxy]# cat haproxy-info.log
Nov 30 16: 53: 30 Haproxy haproxy[119165]: 192.168.100.50: 49191 [30/Nov/2019:16:53: 30.100
webcluster. webcluster/inst2 168/0/1/0/169 200 252 - - --- 1/1/0/1/0 0/0 "GET/test.html HTTP/1.1"
Nov 30 16: 53:42 Haproxy haproxy[119165]: 192.168.100.50: 49191[ 30/Nov/2019:16:53:42.290 :
webcluster. webcluster/inst1 159/0/0/0/159 200 253 - - ---- 1/1/0/1/0 0/0 "GET /test.html HTTP/1.1 "
aproxy haproxy[119165]: 192.168.100.50: 49191[ 30/Nov/2019:16:53:42.290 :
webcluster. webcluster/inst1 159/0/0/0/159 200 253 - - ---- 1/1/0/1/0 0/0 "GET /test.html HTTP/1.1 "
上一篇: CentOS 7 配置java web 环境(安装mysql数据库)
下一篇: Hive的安装部署
推荐阅读
-
linux服务器之LVS、Nginx和HAProxy负载均衡器对比总结
-
haproxy+keepalived实现高可用负载均衡(理论篇)
-
基于windows server 2016和sqlserver 2016 AlwaysOn的群集配置
-
【高并发解决方案】7、HAProxy安装和配置
-
构建NetCore应用框架之实战篇(一):什么是框架,如何设计一个框架
-
高可用负载均衡服务器实现(keepalived+haproxy)
-
C# 基础知识系列- 17 实战篇 编写一个小工具(1)
-
如何创建SQL Server 2000故障转移群集
-
实战篇:1分钟分析目标人群画像流程图
-
iOS WKWebView适配实战篇