基于nginx的负载均衡web集群

项目环境:CentOS7(7.9.2009,6台,2核4G),keepalived (1.3.5),Prometheus(2.34.0),Nginx(1.21.4)等

项目描述:本项目是构建一个基于keepalived的高可用高性能的web集群项目。使用nginx做负载均衡,nfs服务保证数据的一致性,keepalived双vip架构实现HA,Prometheus+Grafana实现对Web服务器的监控。

项目步骤:
1.规划整个项目的拓扑结构和项目的思维导图

2.搭建内部DNS服务器,进行域名解析

3.构建三台真正提供web服务的后端服务器(real server),使用脚本安装部署nginx软件,实现web服务功能,开启状态统计模块、负载均衡模块和http模块等。

4.使用Nginx和Keepalived搭建两台双vip的负载均衡器,实现高可用防止单点故障

5.搭建NFS服务器为所有节点提供相同的Web数据,解决Web集群里的数据一致性问题

6.搭建基于Prometheus+Grafana的监控系统,对整个Web集群里的机器进行进程监控

项目地址规划:
LB1:192.168.132.130
LB2:192.168.132.120
web1:192.168.132.131
web2:192.168.132.132
web3:192.168.132.110
DNS&NFS&监控服务器:192.168.132.121

一、网络拓扑图

在这里插入图片描述

二、搭建DNS服务器

1、禁用防火墙:
systemctl disable firewalld

2、安装 BIND 服务:
yum install bind*

3、确认 nslookup 命令的位置和所属软件包:
which nslookup
rpm -qf /usr/bin/nslookup

4、启动并设置 BIND 服务自启动:
service named start
systemctl enable named

5、修改 /etc/resolv.conf 文件,将 nameserver 设置为 127.0.0.1,以便使用本地 DNS 服务器:
vim /etc/resolv.conf
# Generated by NetworkManager
#nameserver 114.114.114.114
nameserver 127.0.0.1

6、使用 nslookup 命令测试 DNS 解析功能,并查询 www.qq.com检测DNS服务是否搭建成功:

[root@d-mysql ~]# nslookup
> www.qq.com
Server:		127.0.0.1
Address:	127.0.0.1#53

Non-authoritative answer:
www.qq.com	canonical name = ins-r23tsuuf.ias.tencent-cloud.net.
Name:	ins-r23tsuuf.ias.tencent-cloud.net
Address: 121.14.77.201
Name:	ins-r23tsuuf.ias.tencent-cloud.net
Address: 121.14.77.221
Name:	ins-r23tsuuf.ias.tencent-cloud.net
Address: 240e:97c:2f:2::4c
Name:	ins-r23tsuuf.ias.tencent-cloud.net
Address: 240e:97c:2f:1::5c
达到上述效果即为成功


7、编辑 /etc/named.conf 文件来配置 BIND 服务的选项:
vim /etc/named.conf
options {
    listen-on port 53 { any; };
    listen-on-v6 port 53 { any; };
    directory       "/var/named";
    dump-file       "/var/named/data/cache_dump.db";
    statistics-file "/var/named/data/named_stats.txt";
    memstatistics-file "/var/named/data/named_mem_stats.txt";
    recursing-file  "/var/named/data/named.recursing";
    secroots-file   "/var/named/data/named.secroots";
    allow-query     { any; };
}

8、重启 BIND 服务以使配置生效:
service named restart

三、搭建web服务器

1、使用一键编译安装nginx脚本,部署nginx
bash  onekey_install_nginx.sh

该脚本已在之前的文章中说明,脚本地址如下:
https://blog.csdn.net/2301_76596803/article/details/132121813

2、启动Nginx
/usr/local/nginx99/sbin/nginx

四、使用keepalived和nginx搭建两台负载均衡器

1、使用脚本编译安装nginx,安装过程如步骤三

2、修改nginx配置文件,实现负载均衡
[root@localhost html]# vim /usr/local/nginx99/conf/nginx.conf
在http中增加如下配置:
upstream myapp1 {
        server 192.168.132.110;
        server 192.168.132.131;
        server 192.168.132.132;
    }
将location修改为如下配置:
location / {
        proxy_pass http://myapp1;
        #root   html;
        #index  index.html index.htm;
    }

如图:
在这里插入图片描述

在这里插入图片描述


3、下载keepalived
yum install keepalived

4、在keepalived.conf中搭建双vip架构
配置如下:
[root@localhost keepalived]# cat keepalived.conf 
! Configuration File for keepalived

global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
   vrrp_skip_check_adv_addr
   #vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}

vrrp_instance VI_1 {
    state BACKUP
    interface ens33
    virtual_router_id 59
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.227.188
    }
}
vrrp_instance VI_2 {
    state MASTER
    interface ens33
    virtual_router_id 60
    priority 120
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.227.199
    }
}

5、刷新服务
system restart keepalived

五、搭建NFS服务器

1、yum install nfs-utils -y

2、启动NFS服务

3、编辑共享文件的配置文件
[root@dns-nfs-jk ~]# vim /etc/exports
编辑内容如下:
[root@dns-nfs-jk ~]# cat /etc/exports
/web 192.168.132.0/24 (ro,all_squash,sync) 

4、创建共享文件,增加内容
[root@dns-nfs-jk ~]# mkdir /web
[root@dns-nfs-jk web]# vim index.html
内容如下:
[root@dns-nfs-jk web]# cat index.html 
welcome to changsha

5、刷新服务
[root@dns-nfs-jk ~]# systemctl restart nfs

6、在其他机器上挂载使用共享目录,例如在web2中挂载
[root@web2 ~]# mount 192.168.132.121:/web  /usr/local/nginx99/html/

六、使用Prometheus对Web集群进行监控

1、建立单独目录,将压缩包移动到该目录下
[root@dns-nfs-prom ~]# mkdir /prom
[root@dns-nfs-prom ~]# mv prometheus-2.34.0.linux-amd64.tar.gz /prom/

2、解压,移动到 prometheus目录下
[root@dns-nfs-prom prom]# tar xf prometheus-2.34.0.linux-amd64.tar.gz
[root@dns-nfs-prom prom]# mv prometheus-2.34.0.linux-amd64 prometheus

3、永久修改环境变量
[root@dns-nfs-prom prometheus]# PATH=/prom/prometheus:$PATH
[root@dns-nfs-prom prometheus]# vim /root/.bashrc

[root@dns-nfs-prom prometheus]# cat /root/.bashrc
# .bashrc

# User specific aliases and functions

alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'

# Source global definitions
if [ -f /etc/bashrc ]; then
	. /etc/bashrc
fi
PATH=/prom/prometheus:$PATH

4、启动prometheus
[root@dns-nfs-jk prometheus]# nohup prometheus --config.file=/prom/prometheus/prometheus.yml &

Prometheus:
普罗米修斯界面

5、在负载均衡器上安装exporter
[root@localhost ~]# tar xf node_exporter-1.4.0-rc.0.linux-amd64.tar.gz 
[root@localhost ~]# mv node_exporter-1.4.0-rc.0.linux-amd64 /node_exporter
[root@localhost node_exporter]# PATH=/node_exporter/:$PATH
6、永久添加PATH=/node_exporter/:$PATH
[root@localhost node_exporter]# vim /root/.bashrc
[root@localhost ~]# cat /root/.bashrc
# .bashrc

# User specific aliases and functions

alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'

# Source global definitions
if [ -f /etc/bashrc ]; then
	. /etc/bashrc
fi
PATH=/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/home/root0/.local/bin:/home/root0/bin:/usr/local/nginx99/sbin

 1. List item

PATH=/node_exporter/:$PATH


7、启动
[root@localhost node_exporter]# node_exporter

8、设置监听端口
nohup node_exporter --web.listen-address 0.0.0.0:8090 &

9、修改监控服务器配置文件
[root@dns-nfs-jk prometheus]# vim prometheus.yml

在这里插入图片描述
效果如图:
在这里插入图片描述

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值