模拟企业业务构建基于nginx的高可用web集群

目录

一、项目初步环境的搭建

二、项目描述

三、项目步骤

四、项目心得


一、项目初步环境的搭建

9台8核4G的centos7-3.10.0服务器,其中包括3台backup服务器,2台负载均衡器,1台配置了prometheus的监控服务器,1台NFS服务器,1台DNS服务器和1台压力测试机器;nginx版本为nginx-1.22.1;keepalived

 

二、项目描述

构建一个基于nginx的7层负载均衡web集群,模拟企业的业务项目环境实现高并发、高可用的web集群,通过ab进行压力测试整个集群的性能,并不断进行改进

三、项目步骤

0.对本次集群项目进行网络规划,搭建好9台centos7服务器,配置好网络。

 (web1的配置,其余机器按此方法进行同样的配置,注意IP地址的分配)

1.首先构建3台为真正提供web服务的后端服务器(backend server),使用脚本安装部署nginx软件,实现web服务功能,配置了状态统计模块,负载均衡,https等功能模块,使用nginx实现了7层负载均衡(也可以实现4层负载均衡)。

安装脚本:

#!bin/bash/

#解决软件的依赖关系,需要安装的依赖包
yum install epel-release -y
yum -y install zlib zlib-devel openssl openssl-devel pcre pcre-devel gcc gcc-c++ autoconf automake make psmisc net-tools lsof vim wget -y

#新建用户和组
useradd luojie -s /sbin/nologin

#下载nginx软件
mkdir /usr/local/luojie99 -p
cd /usr/local/luojie99
wget http://nginx.org/download/nginx-1.22.1.tar.gz

#解压文件
tar xf nginx-1.22.1.tar.gz
#进入解压后的文件
cd nginx-1.22.1

#编译前的配置
./configure --prefix=/usr/local/scluojie99 --user=luojie --group=luojie --with-http_ssl_module --with-threads --with-http_v2_module --with-http_stub_status_module --with-stream --with-http_gunzip_module

#编译,编译安装
make && make install

#修改PATH变量
echo "PATH=$PATH:/usr/local/scluojie99/sbin" >>/root/.bashrc
#执行修改了环境变量的脚本
source /root/.bashrc


#stop firewalld 设置下次开机不启动firewalld
service firewalld stop
systemctl disable firewalld

#临时停止selinux和永久停止seLiunx
setenforce 0
sed -i '/^SELINUX=/ s/enforcing/disabled/' /etc/selinux/config

#开机启动
chmod +x /etc/rc.d/rc.local
echo "/usr/local/scluojie99/sbin/nginx"  >>/etc/rc.local

#启动nginx
/usr/local/scluojie99/sbin/nginx

2.搭建2台负载均衡器LB1,LB2,使用脚本配置好nginx服务,使用Keepalived实现高可用,搭建双vip的负载均衡高可用系统,同时在2台负载均衡器上开启健康检测功能。

①负载均衡功能的实现:在负载均衡器LB上配置upstream模块,添加后端主机。

 ②keepalived实现高可用的VIP飘移配置:

 双VIP配置:

 

 ③健康检测功能:定义一个健康检测脚本,当负载均衡服务器挂了的时候,关闭该负载均衡器的nginx服务

 

3.搭建nfs服务器来解决web集群数据一致性的问题,同时3台backend server挂载nfs文件系统共享的文件并设置开机自动挂载。

①nfs服务器

1.安装nfs服务

[root@nfs ~]# yum  install nfs-utils -y
2.启动nfs服务
[root@nfs ~]# service nfs restart
Redirecting to /bin/systemctl restart nfs.service

3.编辑共享文件的配置文件
[root@nfs ~]# vim /etc/exports

[root@nfs~]# cat /etc/exports

/data 192.168.205.0/24(rw,no_root_squash,no_all_squash,sync)

#共享/data出去,允许102.168.205.0/24网段的机器能过来访问,只有只读的权限

4.创建共享出去的文件夹

[root@nfs ~]#mkdir /data

[root@nfs ~]#cd /data

[root@nfs ~]#vim index.html   #定义共享主页

[root@nfs data]# exportfs  -rv
exporting 192.168.205.0/24:/data

[root@nfs data]# service nfs restart
Redirecting to /bin/systemctl restart nfs.service

5.关闭防火墙防止其他的机器能访问过来

[root@nfs data]# service firewalld stop
Redirecting to /bin/systemctl stop firewalld.service

②web服务器配置:将nfs共享的目录,挂载到nginx提供网页服务的目录/usr/local/scluojie99/html/

0.每台挂载使用nfs共享目录的客户机都需要安装nfs
yum  install nfs-utils -y

1.在后端服务器挂载共享文件(三台后端服务器相同的操作)

[root@web1 network-scripts]# mount  192.168.205.136:/data   /usr/local/scluojie99/html/

2.df命令查看是否挂载成功

[root@web1 network-scripts]# df
文件系统                   1K-块    已用     可用 已用% 挂载点
devtmpfs                  919500       0   919500    0% /dev
tmpfs                     931516       0   931516    0% /dev/shm
tmpfs                     931516    9784   921732    2% /run
tmpfs                     931516       0   931516    0% /sys/fs/cgroup
/dev/mapper/centos-root 17811456 1762316 16049140   10% /
/dev/sda1                1038336  153680   884656   15% /boot
tmpfs                     186304       0   186304    0% /run/user/0
192.168.205.136:/data   17811456 1583616 16227840    9% /usr/local/scluojie99/html 

!!! 这显示了表示挂载上了

4.搭建了内部dns服务,进行域名解析。

0.准备工作:关闭防火墙和selinux

[root@dns ~]# service firewalld stop
Redirecting to /bin/systemctl stop firewalld.service

[root@dns ~]# systemctl disable firewalld
[root@dns ~]# iptables -L    #查看防火墙规则
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination   

[root@dns ~]# getenforce
Enforcing

[root@dns ~]# vim /etc/selinux/config
[root@dns ~]# cat /etc/selinux/config

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled     #改这里
# SELINUXTYPE= can take one of three values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected.
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted

1.安装bind软件实现dns域名解析

[root@dns ~]# yum install bind* -y

2.设置named服务开机启动,并且立马启动DNS服务(named 是dns的服务的名字)

[root@dns ~]# systemctl enable named
[root@dns ~]# systemctl start named

3.修改配置文件,配置dns服务地址

[root@dns ~]# vim /etc/resolv.conf
[root@dns ~]# cat /etc/resolv.conf
# Generated by NetworkManager
search localdomain
nameserver 192.168.205.2

4.修改配置文件,重启服务器允许其他电脑能过来查询dns域名
[root@dns ~]# vim /etc/named.conf

[root@dns ~]# cat /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; }; 修改
[root@nameserver ~]# service named restart    #重启named服务

主配置文件: /etc/named.conf
次要配置文件:/etc/named.rfc1912.zones

###为web后端三台服务器提供域名解析服务的配置

1.修改配置文件,告诉named为sc.com提供域名解析
[root@dns named]# vim /etc/named.rfc1912.zones

zone "sc.com" IN {
        type master;
        file "sc.com.zone";
        allow-update { none; };
};

2./var/named/ 存放dns域名解析的数据文件的  --> 创建sc.com的数据文件

named.ca 存放13台根服务器的ip地址
[root@dns named]# cp -a  named.localhost sc.com.zone 

复制产生一个sc.com的数据文件

[root@LB named]# cat sc.com.zone
$TTL 1D
@    IN SOA    @ rname.invalid. (
                    0    ; serial
                    1D    ; refresh
                    1H    ; retry
                    1W    ; expire
                    3H )    ; minimum
    NS    @
    A    192.168.2.197
www  A  192.168.2.197
vue  A  192.168.2.88
ftp  A  192.168.2.120
tongtong A 192.168.2.136
tiankai  A  112.1.1.1
kaikai  CNAME tiankai

5.搭建基于prometheus+grafana的监控系统,对整个web集群的进行数据采集及监控,选择grafana合适的模板以图表的方式展示数据。

安装promethues的方式:

①源码安装

②配置成一个服务安装

安装和启动node-exporter

步骤:
    1.启动prometheus server的容器
    2.到后端linux server上安装exporter,并且启动
    3.在prometheus server的配置文件里添加被监控的服务器
    4.重启prometheus server对应的容器
    5.查看效果(访问promethues机器的网址)

安装garafana,添加数据源并配置出图模板

监控的数据:磁盘读写速度(IOPS),网络Socket连接信息,CPU使用率,内存使用率,网络流量等

6.使用ab软件对整个web集群进行压力测试,测试整个集群的并发连接数及性能。

ab -n 100 -c 10 http://test.com/
其中-n表示请求数,-c表示并发数

[root@ab ~]# yum  install httpd-tools -y

7.对nginx的参数及linux系统的内核参数进行优化,考虑增加nginx的缓存功能、配置rewite模块等。

四、项目心得

对 web 有了深入了解,慢慢理解了集群的概念,对一键部署和安装有了一定的了解,学会了自动化脚本的一些编写,对高性能和高可用,系统的性能指标参数脑裂现象都有了一定的了解,学习了监控

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值