项目环境: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
效果如图: