基于nginx的高可用、负载均衡的web集群

目录

一、项目环境

二、项目步骤

1.dns服务器的配置

2.后端web服务器的配置

3.负载均衡服务器的配置(负载均衡是用nginx实现的)

4.实现负载均衡服务器的高可用

 5.NFS服务器的配置

6.监控服务器的配置


一、项目环境

三台后端web服务器:

web1 192.168.249.193

web2 192.168.249.194

web3 192.168.249.191

两台负载均衡服务器:

LB1 192.168.249.192

LB2 192.168.249.196

一台NFS服务器:

192.168.249.195

一台DNS服务器:

192.168.249.197

一台监控服务器:

192.168.249.198

用户通过输入liquan.com域名访问我的web后端服务器,首先DNS服务器会通过将liquan.com对应两台负载均衡服务器的IP地址实现DNS负载均衡,DNS服务器也可以给整个web集群提供域名解析。两台负载均衡服务器通过http七层负载均衡的方式将流量分发到三台web后端服务器上,并且使用keepalived配置双vip的方式实现高可用。NFS服务器实现三台web后端服务器的数据一致性。监控服务器则监控整个web集群的性能。

二、项目步骤

1.dns服务器的配置

下载bind软件包:yum install bind* -y

启动named(DNS 服务器软件的一种实现):service named start

将域名服务器设置为本机(添加最下面的一行):vim  /etc/resolv.conf 

下面为注释了114.114.114.114域名服务器的结果

证明dns服务器配置成功。

修改/etc/named.conf,让局域网其他主机访问到此域名服务器:vim /etc/named.conf

重启服务:service named restart 

修改 /etc/named.rfc1912.zones

在localhost添加一段配置:

 进入/var/named,保留文件属性复制named.localhost 为liquan.com.zone 

添加了两条对应两台负载均衡服务器的域名解析,可以实现DNS负载均衡(轮询) 

重启服务:service named restart

自此,DNS服务器配置成功。

2.后端web服务器的配置

编译安装nginx:

先安装软件源,解决软件依赖

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

新建用户,用它启动nginx进程

useradd xinboss -s /sbin/nologin

新建文件夹并进入该路径

mkdir /lianxi/nginx/xinboss -p
cd /lianxi/nginx/xinboss 

在网上下载nginx安装包
wget http://nginx.org/download/nginx-1.22.1.tar.gz

解压安装包并进入nginx-1.22.1

tar xf nginx-1.22.1.tar.gz

cd nginx-1.22.1(在此目录下才能执行configure)

指定安装路径,启动nginx的用户和组

./configure --prefix=/usr/local/xinboss --user=xinboss --group=xinboss --with-http_ssl_module --with-threads --with-http_v2_module --with-http_stub_status_module --with-stream --with-http_gunzip_module

编译安装

make install

安装成功

启动nginx

  

3.负载均衡服务器的配置(负载均衡是用nginx实现的)

修改/usr/local/xinboss/conf/nginx.conf,实现http七层负载均衡,如下

也可以实现基于端口的四层负载均衡:

stream {
upstream liquanapp1{
}
server {
listen 80; #基于80端口转发
proxy_pass liquanapp1;
}
upstream dns_servers {
least_conn;
server 192.168.249.191:53;
server 192.168.249.193:53;
server 192.168.249.194:53;
}
server {
listen 53 udp; # 基于53端口转发
proxy_pass dns_servers;
}
}

重新加载nginx:nginx -s reload

查看是否实现的方法:访问负载均衡服务器web页面,分别展示后端web的三个页面(默认为轮询算法),则成功。

其他的负载均衡器的算法:最小连接数、IP哈希(绑定客户机与服务器,实现cookie和session的绑定)

4.实现负载均衡服务器的高可用

在两台负载均衡服务器上安装keepalived:yum install keepalived -y

双vip配置:

修改,vim /etc/keepalived/keepalived.conf

负载均衡服务器LB1配置如下

负载均衡服务器LB2配置如下

 重启keppalived服务:service keepalived start

ip add查看:

LB1有了vip:192.168.249.166

 LB2有了vip:192.168.249.167

 5.NFS服务器的配置

安装软件包:yum install rpcbind nfs-utils -y

启动服务:

service nfs-server start

service rpcbind start  

新建共享目录:/web

在目录下新建文件并写入一些内容:vim index.html

修改配置文件: vim /etc/exports
写入如下一行(表示接受192.168.249.0网段的机器的请求,rw表示允许读写操作,all_squash
指定将所有用户映射为匿名用户。它意味着在客户端上以任何用户身份访问时,在
服务器上都将以匿名用户身份进行访问。 ):
/web 192.168.249.0/24(rw,sync,all_squash)
重新加载nfs配置:
systemctl reload nfs
exportfs -rv
在web服务器上挂载nfs:
先安装rpcbind服务:
yum install rpcbind -y
挂载共享目录:
mount 192.168.249.195:/web /usr/local/xinboss/html
设置开机自动挂载:
vim /etc/rc.local
写入如下行:
mount 192.168.249.195:/web /usr/local/xinboss/html

6.监控服务器的配置

这里为了方便,使用容器下载的Prometheus:

 docker run -d -p 9090:9090 --name lq_prom prom/prometheus

prometheus安装好之后,每个服务器上都要安装node-exporter

下载地址:

https://github.com/prometheus/node_exporter/releases/download/v1.6.1/node_exporter-1.6.1.linux-amd64.tar.gz

下载并解压:tar xf node_exporter-1.5.0.linux-amd64.tar.gz

新建目录:mkdir  /node_exporter

把解压的文件放到该目录下:cp node_exporter-1.5.0.linux-amd64/* /node_exporter
/root/.bashrc 文件下修改 PATH环境变量(方便调用node_exporter)
PATH=/node_exporter/:$PATH
source /root/.bashrc

后台运行:nohup node_exporter --web.listen-address 192.168.249.195:8899 &

安装node-exporter成功之后的样子:

 以监控一台服务器为例,到容器内部修改 /etc/prometheus/prometheus.yml文件(这里我采用的方法是docker cp,把容器里面的文件复制到宿主机修改,再复制回去),需要监控哪台服务器就添加该服务器的名字、IP地址和node-exporter端口:

 重启容器:docker restart lq_prom

实现效果(一台为例):

安装Grafana

拉取镜像:docker pull grafana/grafana-enterprise

启动容器:docker run -d -p 3000:3000 --name=lq_grafana  grafana/grafana-enterprise

网页上访问成功(默认的用户名和密码都是admin): 

数据源---选择Prometheus数据库,添加监控的IP地址和端口

导入出图模板,这里使用的是1860模板 

结果:

 

自此,实现了整个web集群的搭建。

此外,可以对集群进行压力测试,使用ab软件

安装ab软件:yum install ab -y

 测试:ab -n 1000 -c 10 http://liquan.com/

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值