haproxy+nginx实现web负载均衡集群:

haproxy+nginx实现web负载均衡集群:

 

主机 | 系统 |IP地址|主要软件|
—|— |—| — |—
Haproxy服务器 |CentOS7.9 X86_64 |192.168.8.101| haproxy-1.5.19.tar.gz
Nginx服务器1 |CentOS7.9 X86_64|192.168.8.200|nginx-1.12.0.tar.gz
Nginx服务器2 |CentOS7.9 X86_64|192.168.8.201|nginx-1.12.0.tar.gz
客户端|Windows7|192.168.8.11|CHROME浏览器
-----------------------------------

curl -O http://nginx.org/download/nginx-1.12.0.tar.gz

一:在192.168.8.200机器上面搭建web1服务器:

1.搭建Nginx1
使用nginx-1.12.0.tar.gz安装包进行编译安装

[root@localhost ~]# yum install gcc gcc-c++ pcre-devel zlib-devel make -y
[root@localhost ~]# useradd -M -s /sbin/nologin nginx #创建运行用户
[root@localhost ~]# tar zxvf nginx-1.12.0.tar.gz -C /opt/
[root@localhost ~]# cd /opt/nginx-1.12.0/
[root@localhost nginx-1.12.0]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx #配置相关参数
[root@localhost nginx-1.12.0]# make && make install #安装

安装完后的默认信息如下

默认安装目录:/usr/local/nginx
默认日志:/usr/local/nginx/logs
默认监听端口:80
默认web目录:/usr/local/nginx
接下来设置测试页面并启动Nginx服务。

[root@localhost ~]# cd /usr/local/nginx/html
[root@localhost html]# echo "Server 192.168.8.200" > test.html
[root@localhost ~]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
[root@localhost ~]# nginx #启动
[root@localhost ~]# systemctl stop firewalld.service #关闭防火墙
[root@localhost ~]# setenforce 0

在客户端访问http://192.168.8.200/test.html,网页正常显示。

客户端访问正常:

 

-----------------------------------
二:在192.168.8.201机器上面搭建web2服务器:

和200机器 同样部署网站服务器NGINX2

将网页内容改改即可:

使用nginx-1.12.0.tar.gz安装包进行编译安装

[root@localhost ~]# yum install gcc gcc-c++ pcre-devel zlib-devel make -y
[root@localhost ~]# useradd -M -s /sbin/nologin nginx #创建运行用户
[root@localhost ~]# tar zxvf nginx-1.12.0.tar.gz -C /opt/
[root@localhost ~]# cd /opt/nginx-1.12.0/
[root@localhost nginx-1.12.0]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx #配置相关参数
[root@localhost nginx-1.12.0]# make && make install #安装

[root@localhost ~]# cd /usr/local/nginx/html
[root@localhost html]# echo "Server 192.168.8.201" > test.html
[root@localhost ~]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
[root@localhost ~]# nginx #启动
[root@localhost ~]# systemctl stop firewalld.service #关闭防火墙
[root@localhost ~]# setenforce 0

测试页面

 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

实验失败:

三:在192.168.8.101机器上面部署haproxy服务器

curl -O https://src.fedoraproject.org/repo/pkgs/haproxy/haproxy-1.5.19.tar.gz

curl -O https://src.fedoraproject.org/repo/pkgs/haproxy/haproxy-1.5.18.tar.gz/21d35f114583ef731bc96af05b46c75a/haproxy-1.5.18.tar.gz
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 1328k 100 1328k 0 0 10935 0 0:02:04 0:02:04 --:--:-- 11503

编译安装Haproxy
使用haproxy-1.5.18.tar.gz安装包进行编译安装

复制
[root@localhost ~]# yum install gcc gcc-c++ pcre-devel bzip2-devel make -y #用yum安装一系列d的环境支持
[root@localhost ~]# tar zxvf haproxy-1.5.18.tar.gz -C /opt/ #解压haproxy软件包至/opt目录下
[root@localhost ~]# cd /opt/haproxy-1.5.18/
[root@localhost haproxy-1.5.19]# make TARGET=linux26 #64位系统
[root@localhost haproxy-1.5.19]# make install #安装

创建Haproxy的配置文件
Haproxy默认不创建配置文件,需要复制软件包的模板配置文件,并进行编辑

[root@localhost haproxy-1.5.19]# mkdir /etc/haproxy #创建配置文件目录
[root@localhost haproxy-1.5.19]# cp examples/haproxy.cfg /etc/haproxy/ #将haproxy.cfg文件复制到配置文件目录下
[root@localhost haproxy-1.5.19]# cd /etc/haproxy/
[root@localhost haproxy]# vim haproxy.cfg

#删除以下语句
chroot /usr/share/haproxy #禁锢到haproxy的根目录下
redispatch #强制将请求发送到已经down掉的机器

#添加

listen webcluster 0.0.0.0:80 #定义一个webcluster的应用
option httpchk GET /test.html #访问服务器的test.html文件
balance roundrobin

 server inst1 172.16.10.10:80 check inter 2000 fall 3    #定义nginx节点服务器
server inst2 172.16.10.20:80 check inter 2000 fall 3

 

 



创建Haproxy自启动脚本
复制
[root@localhost haproxy]# cp /opt/haproxy-1.5.18/examples/haproxy.init /etc/init.d/haproxy
[root@localhost haproxy]# chmod +x haproxy
[root@localhost haproxy]# chkconfig --add /etc/init.d/haproxy #添加系统服务
[root@localhost haproxy]# ln -s /usr/local/sbin/haproxy /usr/sbin/haproxy
[root@localhost haproxy]# service haproxy start #启动Haproxy服务
[root@localhost haproxy]# systemctl stop firewalld.service #关闭防火墙

 最后2行errlog也要删除,否则启动失败!!!!!!!!!!!!!!!

 

实验成功!!!!!!!!!!!!!!,问题解决:

 

 

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

==========================================================================

实验成功:::

下载haproxy-2.6.0.tar.gz源码包

curl -O https://www.haproxy.org/download/2.6/src/haproxy-2.6.0.tar.gz

du -sh haproxy-2.6.0.tar.gz
tar xf haproxy-2.6.0.tar.gz -C /usr/src/
cd /usr/src/haproxy-2.6.0/
make TARGET=linux$(uname -r | awk -F. '{print $1$2}') ARCH=$(uname -r | awk -F. '{print $NF}')
make install PREFIX=/usr/local/haproxy

##编写haproxy配置文件:
 vim /usr/local/haproxy/haproxy.cfg

[root@zabbix-agent haproxy]# cat /usr/local/haproxy/haproxy.cfg
global
log 127.0.0.1 local0 info
log 127.0.0.1 local1 notice
maxconn 204800 # 最大连接数
chroot /usr/local/haproxy #
pidfile /usr/local/haproxy/haproxy.pid # 进程文件位置
uid 99 # 运行用户的 UID (对应的用户是 nobody)
gid 99 # 运行组的 GID
daemon # 后台启动

defaults
log global # 引用 global 定义的日志格式
mode http # 代理模式为 HTTP
option httplog # 采用 HTTP 日志格式记录日志
option httpclose # 请求完成后主动关闭 HTTP 通道
option dontlognull # 禁止记录空连接日志记录
option forwardfor # 将客户端真实IP发送至后端服务器
retries 3 # 最大失败次数
balance leastconn # 基于最小连接数进行调度
timeout connect 10s
timeout client 1m
timeout server 1m
timeout check 10s

listen admin_status
bind 0.0.0.0:8001
mode http
stats uri /haproxy # Haproxy 监控界面的 URL
stats auth admin:123123
stats hide-version # 隐藏 Haproxy 监控界面的版本号

listen nginx_upstream
bind 0.0.0.0:8080
mode http
server web01 192.168.8.200 check inter 10s fall 3
server web02 192.168.8.201 check inter 10s fall 3
[root@zabbix-agent haproxy]#

 

 


166 2023-11-23 14:29:24 root ls /usr/local/haproxy/haproxy.cfg
189 2023-11-23 14:33:04 root ps -ef|grep haproxy

启动haproxy
 /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.cfg
ps -ef|grep haproxy
192 2023-11-23 14:33:28 root sed -i 's/ModLoad imudp/^#//' /etc/rsyslog.conf
193 2023-11-23 14:33:45 root cat /etc/rsyslog.conf

####替换:日志内容,更改日志格式:
sed -i 's/ModLoad imudp/^#//' /etc/rsyslog.conf
sed -i '/ModLoad imudp/s/^#//' /etc/rsyslog.conf
sed -i 's/UDPServerRun 514/^#//' /etc/rsyslog.conf
 sed -i '/UDPServerRun 514/s/^#//' /etc/rsyslog.conf
echo "local0.info /usr/local/haproxy/logs/access.log" >> /etc/rsyslog.conf
echo "local0.notice /usr/local/haproxy/logs/error.log" >> /etc/rsyslog.conf
mkdir /usr/local/haproxy/logs
systemctl restart rsyslog
for i in $(seq 1 10);do curl 192.168.1.3:8080;done
for i in $(seq 1 10);do curl 192.168.8.101:8080;done
 history
 vi /usr/local/haproxy/haproxy.cfg
for i in $(seq 1 10);do curl 192.168.8.101:8080;done
tail /usr/local/haproxy/haproxy.cfg
netstat -tntulp
yum -y install net-tools
netstat -tntulp
tail /usr/local/haproxy/logs/access.log

查看访问日志
 tail -f /usr/local/haproxy/logs/access.log

 


history

 

 动态显示:

 

posted @ 2023-11-23 09:19  往事已成昨天  阅读(114)  评论(0编辑  收藏  举报